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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
みっちゃん
January 22, 2024
Programming
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2024年は難読化と仲良くなりたい
ebisu.mobile #4での登壇内容です
https://hey.connpass.com/event/305181/
みっちゃん
January 22, 2024
More Decks by みっちゃん
See All by みっちゃん
Do you use git worktree?
mitchan
0
130
Android値受け渡し大全 〜 設計を制する者が「渡す」を制す 〜
mitchan
1
7.2k
2024年にチャレンジしたことを振り返るぞ
mitchan
0
300
DroidKaigi初めて登壇したレポ
mitchan
1
260
実践!難読化ガイド
mitchan
0
4.3k
「実践!難読化ガイド」事前予告編
mitchan
0
330
画面遷移 〜iOSとAndroid〜
mitchan
0
450
パソコン音痴な私がモバイル開発界隈でぬくぬく成長している理由
mitchan
0
610
ドキュメントから adbコマンドの仕組みを読み解く
mitchan
1
410
Other Decks in Programming
See All in Programming
Google Apps Script で Ruby を動かす
kawahara
0
120
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
490
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.7k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.3k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
270
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
0
540
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
190
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
3.8k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
450
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
440
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
430
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
420
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
450
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