Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2024年は難読化と仲良くなりたい
Search
みっちゃん
January 22, 2024
Programming
0
360
2024年は難読化と仲良くなりたい
ebisu.mobile #4での登壇内容です
https://hey.connpass.com/event/305181/
みっちゃん
January 22, 2024
Tweet
Share
More Decks by みっちゃん
See All by みっちゃん
2024年にチャレンジしたことを振り返るぞ
mitchan
0
210
DroidKaigi初めて登壇したレポ
mitchan
1
150
実践!難読化ガイド
mitchan
0
2.5k
「実践!難読化ガイド」事前予告編
mitchan
0
250
画面遷移 〜iOSとAndroid〜
mitchan
0
160
パソコン音痴な私がモバイル開発界隈でぬくぬく成長している理由
mitchan
0
440
ドキュメントから adbコマンドの仕組みを読み解く
mitchan
1
290
STORES二年生が得た新しい視点
mitchan
0
280
TabLayoutの「選択されていないインジケーター」にも色を付けるには
mitchan
0
85
Other Decks in Programming
See All in Programming
Cache Strategies with Redisson & Exposed
debop
0
120
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
370
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
590
AWS診断200件の分析から見る頻出指摘と対策
shoodagiri
0
110
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
120
ドメイン駆動設計とXPで支える子どもの未来 / Domain-Driven Design and XP Supporting Children's Future
nrslib
0
350
なぜHono×GraphQLを選んだのか?
junichi_fukushima
0
860
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
0
210
Storybookの情報をMCPサーバー化する
shota_tech
3
1.6k
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
6
340
生成AI時代のフルスタック開発
kenn
9
2k
ビカム・ア・コパイロット
ymd65536
1
190
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Rails Girls Zürich Keynote
gr2m
94
13k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Thoughts on Productivity
jonyablonski
69
4.7k
How GitHub (no longer) Works
holman
314
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Designing for humans not robots
tammielis
253
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Transcript
2024年は難読化と仲良くなりたい 登壇者:STORES 決済 Androidチーム みっちゃん 1
自己紹介 名前:みっちゃん(4月で3年目) 所属:STORES 決済 Androidチーム ナワバリ:おおさか My fun:犬!!猫!! Twitter: @mimimi_engineer
2
コンピュータプログラムの動作を変えずに、プログラムコードの内部的な手続き の内容・構造・データなどを、人間にとって読み取りにくくなるように改変・加 工すること。難読化されたコードは第三者によるプログラムの解読・解析が困難 になる。 参考:wikipedia 難読化 (ソフトウェア) 難読化ってなに? 3
変数や関数名を意味のない文字列に変換するなどしてコードを読みにく くし、悪意のあるユーザーからコードを守ることができる! セキュリティ対策の一環! 4
• R8(あーるえいと) Androidアプリの「圧縮」「難読化」「最適化」を行うのツールのこと! どんなツールを使うの? 5
• Android Gradle プラグイン 3.4.0 以上を使用したプロジェクトのビルドでは、デフォルト でR8 コンパイラと連携して、コンパイル時に圧縮・難読化・最適化が実行される • 難読化によってコードが悪意のあるユーザから守られる
• 圧縮・最適化によってAndroidアプリ/ ライブラリのサイズが小さくなる 参考:Android Developer アプリの圧縮、難読化、最適化 R8(あーるえいと) 6
R8 は ProGuard ルールファイルを通じて、デフォルトの動作を変更したり、ア プリの構造を正確に把握したりできます。 参考:R8 の構成ファイル • <module-dir>/proguard-rules.pro 独自の
ProGuard ルールをこのファイルに含めます。 どんなコードを書くの? 7
ProGuardルールファイルに-keepを追加し、 特定のコードを削除しないように宣言することができる どんなコードを書くの? 8
STORES 決済 はアプリだけでなくSDKも公開している 2023年12月27日夜 年明け1月4日から新バージョンSDKのQAを開始するための準備中、事件勃発。 2023年は難読化とケンカしちゃった 9
事件勃発! 新バージョンSDKのQA用アプリを用意するのに、 難読化ありでビルドが通らない・・・!
難読化ってなに 先輩明日からお 休みですよね 29日休みたい だが28日一人で 解決できる自信 はない
ウ、ウワァーーーーーーーーーーーーーーーーーーー!!!!!(大混乱)
落ち着いてエラーをみます。
HogeManagerクラスのgetInstance()というメソッドが参照できなくなっている
companion object内に定義されたメソッドの難読化回避はこうしてこう。 参考資料:keep rules companion object
ErrorTypesインターフェースのUNAUTHORIZEDという定数が参照できなくなっている
companion object内に定義された定数の難読化回避はこうしてこう。 参考資料:keep rules companion object
あれ!!できない!!!
アッ・・・!! classじゃなくてinterfaceだった!!
こうだ!
え・・・ダメなんだけど・・・
interface内のcompanion objectに定義された定数を難読化対象から外すような proguardルールはどう書けばよかったのか、結局わからなかった・・・
@Keepで難読化回避
@Keepアノテーションとは • @Keepも-keepと同じで難読化の対象から外す役割がある • ライブラリコードの中では使用しちゃだめ ◦ (🚨Android Developersにベストプラクティスとしての記載あり)
2024年は・・・ 難読化は友達!怖くないよ!
おしまい 26