ãŽã«ãã§ã¯ããã€ã³ããæãå°ãªãæ¹ãåã¡ãŸãã
ãã®ååãAndroidã«é©çšããŸãã APKãŽã«ãããã¬ã€ããAndroid 8.0 Oreoã«ã€ã³ã¹ããŒã«ã§ããæå°ã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
åºæ¬ã¬ãã«
Android Studioãçæããããã©ã«ãã®ã¢ããªã±ãŒã·ã§ã³ããå§ããŸãããã
ããŒã¹ãã¢ãäœæã ãã¢ããªã±ãŒã·ã§ã³ã«çœ²åããã³ãã³ã
stat -f%z $filename
ã䜿çšããŠãã¡ã€ã«ãµã€ãºããã€ãåäœã§æž¬å®ããŸãã
次ã«ãOreoã®äžã®Nexus 5xã¹ããŒããã©ã³ã«APKãã€ã³ã¹ããŒã«ããŠããã¹ãŠãæ©èœããããšã確èªããŸãã
çŽ æŽãããã APKã®ééã¯çŽ1.5ã¡ã¬ãã€ãã§ãã
APKã¢ãã©ã€ã¶ãŒ
ã¢ããªã±ãŒã·ã§ã³ã®åäœãèæ
®ãããšã1.5ã¡ã¬ãã€ãã¯å€§ããããããã§ãïŒãããŠäœãããŸããïŒããããžã§ã¯ãã調ã¹ãŠãããªã¥ãŒã ããã°ããä¿åããå Žæãæ¢ããŸãããã Android Studioãçæãããã®ã¯æ¬¡ã®ãšããã§ãã
MainActivity
ã AppCompatActivity
ãæ¡åŒµããŸãã- ã¡ã€ã³ãŠã£ã³ããŠã®
ConstraintLayout
ãå«ãã¬ã€ã¢ãŠããã¡ã€ã«ã - 3ã€ã®è²ã1ã€ã®æååãªãœãŒã¹ãããã³ããŒãã®ãªãœãŒã¹ãã¡ã€ã«ã
AppCompat
ããã³ConstraintLayout
ã©ã€ãã©ãªããµããŒãããŸãã- 1ã€ã®
AndroidManifest.xml
- æ£æ¹åœ¢ãå圢ãããã³èæ¯ã¢ã€ã³ã³ã®PNGãã¡ã€ã«ã
mipmap-anydpi-v26
äžã«åèš15ã®ç»åãš2ã€ã®XMLãã¡ã€ã«ãããå Žåãããããã¢ã€ã³ã³ãåŠçããæãç°¡åãªæ¹æ³
mipmap-anydpi-v26
ã Android Studioã®
APKã¢ãã©ã€ã¶ãŒã§ããããã¹ãŠã«ãŠã³ãããŸãããã

æåã®ä»®å®ã«åããŠãæå€§ã®ãã¡ã€ã«ã¯Dexã§ããããªãœãŒã¹ã¯APKã®ãµã€ãºã®20ïŒ
ããå ããŠããªãããã§ãã
ãã¡ã€ã« | 倧ãã |
---|
classes.dex | 74ïŒ
|
res | 20ïŒ
|
resources.arsc | 4ïŒ
|
META-INF | 2ïŒ
|
AndroidManifest.xml | <1ïŒ
|
åãã¡ã€ã«ã®åäœãåå¥ã«èª¿ã¹ãŸãã
dexãã¡ã€ã«
classes.dex
ã¯ãè¥å€§åããAPKã®äž»ãªåå ã§ãããç·ããªã¥ãŒã ã®73ïŒ
ãå ããŠãããããæé©åã®æåã®ç®æšã«ãªããŸãã ãã®ãã¡ã€ã«ã«ã¯ãDex圢åŒã§ã³ã³ãã€ã«ããããã¹ãŠã®ã³ãŒããšãAndroidãã¬ãŒã ã¯ãŒã¯ã®å€éšã¡ãœããã®ãªã¹ãããã³ãµããŒãã©ã€ãã©ãªãå«ãŸããŠããŸãã
android.support
ããã±ãŒãžã«ã¯13,000ãè¶
ããã¡ãœããããªã¹ããããŠããŸãããããã¯ãHello Worldããªã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠåé·ãªããã§ãã
è³æº
resãã£ã¬ã¯ããªã«ã¯ãAndroid Studioã€ã³ã¿ãŒãã§ãŒã¹ã§ããã«ã¯è¡šç€ºãããªã倿°ã®ãã³ãã¬ãŒããã¡ã€ã«ãå³é¢ïŒæç»å¯èœãã¡ã€ã«ïŒãããã³ã¢ãã¡ãŒã·ã§ã³ãå«ãŸããŠããŸãã ç¹°ãè¿ããŸããããããã¯ãµããŒãã©ã€ãã©ãªããååŸãããAPKã®ãµã€ãºã®çŽ20ïŒ
ãå ããŸãã

resources.arsc
ãã¡ã€ã«ã«ã¯ãããããã¹ãŠã®ãªãœãŒã¹ã®ãªã¹ããå«ãŸããŠããŸãã
眲å
META-INF
ãã©ã«ããŒ
CERT.SF
ãv1 APKã«
眲åããããã«å¿
èŠãª
CERT.SF
ã
MANIFEST.MF
ããã³
CERT.RSA
ã
CERT.SF
ãŸãã æ»æè
ãAPKå
ã®ã³ãŒãã倿Žãããšã眲åãäžèŽããªããªãããŠãŒã¶ãŒãç¡é¢ä¿ãªãã«ãŠã§ã¢ãéå§ããã®ãé²ããŸãã
MANIFEST.MF
ã¯APKã®ãã¡ã€ã«ããªã¹ãããã
CERT.SF
ã«ã¯ãããã§ã¹ããšåãã¡ã€ã«ã®ãã§ãã¯ãµã ãå«ãŸããŠããŸãã
CERT.RSA
ã¯å
¬éããŒãä¿åãã
CERT.RSA
ã®æŽåæ§ãæ€èšŒããŸã
CERT.SF

æé©åã®æç¢ºãªç®æšã¯ãããŸããã
AndroidManifest
AndroidManifestã¯å
ã®ãã¡ã€ã«ãšéåžžã«ãã䌌ãŠããŸãã å¯äžã®éãã¯ãæååããããŠã¢ãã«ãªã©ã®ãªãœãŒã¹ã®ä»£ããã«ã
0x7F
ã§å§ãŸãæŽæ°èå¥åãããã«ç€ºãããããšã§ãã
çž®å°ããªã³ã«ãã
ç§ãã¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã®
build.gradle
ãã¡ã€ã«ã§ãªãœãŒã¹ã®çž®å°åãšå§çž®ã®ãªãã·ã§ã³ãæå¹ã«ããããšããŠããŸããã ãã£ãŠã¿ãŸãããã
android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile( 'proguard-android.txt'), 'proguard-rules.pro' } } }
-keep class com.fractalwrench.** { *; }
minifyEnabled
ã
true
ã«èšå®ãããšã
Proguardãã¢ã¯ãã£ãã«ãªããã¢ããªã±ãŒã·ã§ã³ããäžèŠãªã³ãŒããã¯ãªã¢ãããŸãã ãŸãããã£ã©ã¯ã¿ãŒåãé£èªåããã¢ããªã±ãŒã·ã§ã³ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãå°é£ã«ããŸãã
shrinkResources
ã¯ãAPKããçŽæ¥åç
§ãããªããªãœãŒã¹ãåé€ããŸãã ãªãœãŒã¹ã«çŽæ¥ã¢ã¯ã»ã¹ããªããšåé¡ãçºçããå ŽåããããŸãããããã¯ã¢ããªã±ãŒã·ã§ã³ã«ã¯é©çšãããŸããã
786 KBïŒ50ïŒ
æžå°ïŒ
ããã°ã©ã ã«ç®ã«èŠãã倿Žãå ããããšãªããAPKã®ãµã€ãºãååã«ããŸããã
ã¢ããªã±ãŒã·ã§ã³ã«
minifyEnabled
ãš
shrinkResources
ãŸã å«ããŠããªãå Žåãããã¯ãã®èšäºã§åãäžããã¹ãæãéèŠãªããšã§ãã æ§æãšãã¹ãã«æ°æéè²»ããããšã§ãæ°ã¡ã¬ãã€ããç°¡åã«ç¯çŽã§ããŸãã
ããããªãAppCompatãç§ãã¡ã¯ããªããã»ãšãã©èªèããŸããã§ãã
classes.dex
APKå
šäœã®57ïŒ
ãå ããããã«ãªããŸããã Dexãã¡ã€ã«ã®ã¡ãœããã®ãªã¹ãã®å€§éšåã¯
android.support
ããã±ãŒãžã«å±ããŠããããããµããŒãã©ã€ãã©ãªãåé€ããŸãã ãããè¡ãã«ã¯ã次ãå®è¡ããŸãã
build.gradle
ããäŸåé¢ä¿ãããã¯ãå®å
šã«åé€ããŸãã
dependencies { implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' }
- MainActivityãæŽæ°ããŠãã¯ã©ã¹
android.app.Activity
ãæ¡åŒµããŸãã
public class MainActivity extends Activity
- ãã³ãã¬ãŒããæŽæ°ããŠãåäžã®
TextView
ã䜿çšããŸãã
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Hello World!" />
AndroidManifest
<application>
èŠçŽ ããstyles.xml
ãšandroid:theme
屿§ãåé€ããŸããcolors.xml
åé€ãcolors.xml
ã- Gradleã®åæäžã«50åã®è
ç«ãŠäŒããè¡ããŸãã
108 KBïŒ87ïŒ
æžå°ïŒ
ç¥ã®æ¯ããã¡ã€ã«ã¯ã»ãŒ10åã«æžå°ããŸããïŒ786 KBãã108 KBã«ã å¯äžã®ç®ç«ã£ã倿Žã¯ãããŒã«ããŒã®è²ã®å€æŽã®ã¿ã§ãããã¯ããã©ã«ãã®OSããŒãã«ãªããŸããã
ãããã®ãã¹ãŠã®ã©ã³ãã£ãŒã¢ã€ã³ã³ã«ãããresãã£ã¬ã¯ããªã¯APKã®ãµã€ãºã®95ïŒ
ãå ããããã«ãªããŸããã ãããã®ã¢ã€ã³ã³ããã¶ã€ããŒã«ãã£ãŠäœæãããå ŽåãAPI 15以éã§ãµããŒããããŠããããå¹ççãªåœ¢åŒã§ãã
WebPã«
倿ããããšããŸãã
幞ããªããšã«ãGoogleã¯æ¢ã«
ããã¢ãã«ãæé©åããŸããããããã§ãªããã°ãããããæé©åããŠ
ImageOptimã䜿çšããŠPNGããäžèŠãªã¡ã¿ããŒã¿ãåé€ããããšãã§ããŸãã
res/drawable
ãŸããã-ãããŠããã¹ãŠã®èµ·åã¢ã€ã³ã³ã
res/drawable
åäžã®åäžãã¯ã»ã«ã®é»ããããã«çœ®ãæã
res/drawable
ã ãã®ç»åã®ééã¯67ãã€ãã§ãã
6808ãã€ãïŒ94ïŒ
æžå°ïŒ
ã»ãšãã©ãã¹ãŠã®ãªãœãŒã¹ãåé€ããã®ã§ãAPKã®ãµã€ãºãçŽ95ïŒ
æžå°ããããšã¯é©ãããšã§ã¯ãããŸããã æ¬¡ã®ãªãœãŒã¹ã¯ãresources.arscã§åŒãç¶ãèšåãããŠããŸãã
- 1ã€ã®ãã³ãã¬ãŒããã¡ã€ã«
- 1ã€ã®æååãªãœãŒã¹
- 1ã€ã®ã©ã³ãã£ãŒã¢ã€ã³ã³
äžããäžã«è¡ããŸãããã
ãã³ãã¬ãŒããã¡ã€ã«ïŒ6262ãã€ãã9ïŒ
ã®åæžïŒ
Androidãã¬ãŒã ã¯ãŒã¯ã¯
XMLãã¡ã€ã«ã
contentView
ãã
Activity
contentView
ãšããŠäœ¿çšããã
TextView
ãªããžã§ã¯ããèªåçã«äœæããŸãã
XMLãã¡ã€ã«ãåé€ããããã°ã©ã ã§contentViewãèšå®ããããšã«ããããã®ä»²ä»ãªãã§ãã£ãŠã¿ãŸãããã XMLãã¡ã€ã«ããªããªããããªãœãŒã¹ã®éã¯æžå°ããŸããã远å ã®
TextView
ã¡ãœããã«èšåããŠãããããDexãã¡ã€ã«ã®ãµã€ãºã¯å¢å ããŸãã
TextView textView = new TextView(this); textView.setText("Hello World!"); setContentView(textView);
è¯ã亀æã®ããã§ãã
ã¢ããªã±ãŒã·ã§ã³åïŒ6034ãã€ãã4ïŒ
åæžïŒ
strings.xml
ãåé€ããŠãAndroidManifestãããã§ã¹ãã®
android:label
ãæåãAãã«çœ®ãæããŸãã ããã¯å°ããªå€æŽã®ããã«èŠããŸããã
resources.arsc
ãããšã³ããªãåé€ãããšããããã§ã¹ãã®æåæ°ãæžããresãã£ã¬ã¯ããªãããã¡ã€ã«ãåé€ãããŸãã ã©ããªå°ããªããšã§ãè¯ãããšã§ã-228ãã€ããç¯çŽããŸããã
ã©ã³ãã£ãŒã¢ã€ã³ã³ïŒ5300ãã€ãã13ïŒ
åæžïŒ
Androidãã©ãããã©ãŒã ãªããžããªã®
resources.arscã®ããã¥ã¡ã³ãã«ã¯ãåAPKãªãœãŒã¹ã
resources.arsc
ã§æŽæ°ã®èå¥åãšãšãã«èšè¿°ãããŠ
resources.arsc
ããšã説æãããŠããŸãã ãããã®IDã«ã¯2ã€ã®åå空éããããŸãã
0x01ïŒã·ã¹ãã ãªãœãŒã¹ïŒframework-res.apkã§äºåå®çŸ©ïŒ
0x7fïŒã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹ïŒã¢ããªã±ãŒã·ã§ã³ã®.apkãã¡ã€ã«å
ïŒ
0x01åå空éã®ãªãœãŒã¹ãžã®ãªã³ã¯ãé
眮ãããšãAPKã¯ã©ããªããŸããïŒ çè«çã«ã¯ãããçŸããã¢ã€ã³ã³ãååŸãããšåæã«ããã¡ã€ã«ã®ãµã€ãºãå°ããããŸãã
android:icon="@android:drawable/btn_star"

ãã¡ãããå®éã«åäœããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ã³ã³ãªã©ã®
ã·ã¹ãã ãªãœãŒã¹ãä¿¡é Œããããšã¯ã§ã
ãŸãã ã ãã®æ¹æ³ã¯Google Playã§ã®æ€èšŒã«å€±æããäžéšã®ã¡ãŒã«ãŒ
ã¯ç¬èªã®æ¹æ³ã§
çœã決å®ãããããæ³šæããŠãã ããã
ãããã§ã¹ãïŒ5252ãã€ãã1ïŒ
ã®åæžïŒ
ãããã§ã¹ãã«ã¯ãŸã è§ŠããŠããŸããã
android:allowBackup="true" android:supportsRtl="true"
ãããã®å±æ§ãåé€ãããšã48ãã€ãç¯çŽãããŸãã
ããã¬ãŒãããã¯ïŒ4984ãã€ãã5ïŒ
åæžïŒ
BuildConfig
ã¯ã©ã¹ãš
R
ã¯ã©ã¹ã¯ãDexãã¡ã€ã«ã«æ®ã£ãŠããããã§ãã
-keep class com.fractalwrench.MainActivity { *; }
Proguardã«ãŒã«ãæ¹è¯ãããšãäžèŠãªã¯ã©ã¹ãåé€ãããŸãã
é£èªåïŒ4936ãã€ãã1ïŒ
åæžïŒ
Activityã¯ã©ã¹ã®ååãé£èªåããŸãã éåžžã®ã¯ã©ã¹ã®å ŽåãProguardã¯ãããèªåçã«è¡ããŸãããActivityã¯ã©ã¹ã®ååã¯Intentsãä»ããŠåŒã³åºããããããããã©ã«ãã§ã¯é£èªåãããŠããŸããã
MainActivity-> c.java
com.fractalwrench.apkgolf-> cc
META-INFïŒ3,307ãã€ãã33ïŒ
åæžïŒ
çŸæç¹ã§ã¯ãv1ãšv2ã®äž¡æ¹ã®çœ²åã§ã¢ããªã±ãŒã·ã§ã³ã«çœ²åããŠããŸãã v2ã¯APKå
šäœãããã·ã¥ããããšã§
åªããä¿è·ãšããã©ãŒãã³ã¹ãæäŸãããããããã¯ãªãœãŒã¹ã®ç¡é§ã®ããã§ãã
眲åv2ã¯APKãã¡ã€ã«èªäœã®ãã€ããªãããã¯ã«å«ãŸããŠãããããAPKã¢ãã©ã€ã¶ãŒããã¯èŠããŸããã 眲åv1ã¯ã
CERT.RSA
ããã³
CERT.SF
ãšããŠè¡šç€ºãã
CERT.SF
ã
Android Studioã€ã³ã¿ãŒãã§ãŒã¹ã§v1眲åããªãã«ããŠã眲åä»ãAPKãçæããŸãããã ãã®éã詊ããŠã¿ãŸãããã
眲å | 倧ãã |
---|
v1 | 3511 |
v2 | 3307 |
ããã§v2ã䜿çšããããã«èŠããŸãã
ã©ããžè¡ã-IDEã¯å¿
èŠãããŸãã
APKãæåã§ç·šéããŸãã æ¬¡ã®ã³ãã³ãã䜿çšããŸãã
# 1. apk ./gradlew assembleRelease # 2. unzip app-release-unsigned.apk -d app # # 3. zip -r app app.zip # 4. zipalign zipalign -v -p 4 app-release-unsigned.apk app-release-aligned.apk # 5. apksigner v2 apksigner sign --v1-signing-enabled false --ks $HOME/fake.jks --out signed-release.apk app-release-unsigned.apk # 6. apksigner verify signed-release.apk
APK眲åããã»ã¹ã®è©³çŽ°ãªæŠèŠã«ã€ããŠã¯ã
ãã¡ããã芧
ãã ãã ã äžè¬ã«ãGradleã¯ç¡çœ²åã®ã¢ãŒã«ã€ããçæããzipalignã¯éå§çž®ãªãœãŒã¹ã®ãã€ãã¢ã©ã€ã¡ã³ããè¡ã£ãŠAPKã®ããŒãåŸã®RAMæ¶è²»ãæé©åããæåŸã«APKæå·çœ²åããã»ã¹ãéå§ãããŸãã
眲åãããŠããªãæŽåãããŠããªãAPKã®ééã¯1902ãã€ãã§ããããã¯ãããã·ãŒãžã£ãçŽ1ãããã€ãã远å ããããšãæå³ããŸãã
ãã¡ã€ã«ãµã€ãºã®äžäžèŽïŒ2608ãã€ãã21ïŒ
å§çž®ïŒ
å€ã ïŒ äœçœ®åãããããŠããªãAPKãè§£åããŠæåã§çœ²åãããšã
META-INF/MANIFEST.MF
ãã¡ã€ã«ãæ¶ãã543ãã€ããç¯çŽãããŸãã 誰ãããããèµ·ããçç±ãç¥ã£ãŠãããªããç§ã«ç¥ãããŠãã ããïŒ
ããã§ãçœ²åæžã¿APKã«3ã€ã®ãã¡ã€ã«ãæ®ã£ãŠããŸãã ãã ãã
resources.arsc
ãã€ã³ã¹ããŒã«ããªãããã
resources.arsc
ãã¡ã€ã«ã¯åé€ã§ããŸãã
ãã®åŸããããã§ã¹ããš
classes.dex
ãã¡ã€ã«ã®ã¿ããããã©ã¡ããã»ãŒåããµã€ãºã§ãã
å§çž®ãããã³ã°ïŒ2599ãã€ãã0.5ïŒ
åæžïŒ
æ®ãã®ãã¹ãŠã®è¡ããcãã«å€æŽããããŒãžã§ã³ã26ã«æŽæ°ããŠãããçœ²åæžã¿APKãçæããŸãã
compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { applicationId "cc" minSdkVersion 26 targetSdkVersion 26 versionCode 26 versionName "26" }
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cc"> <application android:icon="@android:drawable/btn_star" android:label="c" > <activity android:name="ccc">
ããã«ããããµã€ãºãããã«9ãã€ãå°ãããªããŸãã
ãã¡ã€ã«å
ã®æåæ°ã¯å€æŽãããŠããŸããããå®éã«ã¯ãæåãcãã®é »åºŠãå¢å ããŠããŸãã ãã®çµæãå§çž®ã¢ã«ãŽãªãºã ã¯ããå¹ççã«æ©èœããŸããã
ããã«ã¡ã¯ãADBïŒ2462ãã€ãã5ïŒ
åæžïŒ
Activityã¯ã©ã¹ã®Launch intentãã£ã«ã¿ãŒãåé€ããããšã«ããããããã§ã¹ããããã«æé©åã§ããŸãã ãã®ç¬éãããæ¬¡ã®ã³ãã³ãã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
adb shell am start -a android.intent.action.MAIN -n cc/.c
æ°ãããããã§ã¹ãã¯æ¬¡ã®ãšããã§ãã
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cc"> <application> <activity android:name="c" android:exported="true" /> </application> </manifest>
ã©ã³ãã£ãŒã¢ã€ã³ã³ãåé€ããŸããã
ã¡ãœããåç
§ã®æ¶å»ïŒ2179ãã€ãã12ïŒ
åæžïŒ
åææ¡ä»¶ã«åŸã£ãŠãããã€ã¹ã«ã€ã³ã¹ããŒã«ã§ããAPKãæºåããå¿
èŠããããŸãã
ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ã
TextView
ã
Bundle
ããã³
Activity
ã¯ã©ã¹ã®ã¡ãœããããªã¹ãããŸãã ãããã®ãªã³ã¯ãåé€ããŠãæ°ãã
Application
ã¯ã©ã¹ã«çœ®ãæããããšã«ãããDexãã¡ã€ã«ã®ãµã€ãºãå°ããã§ããŸãã ãããã£ãŠãDexãã¡ã€ã«ã¯åäžã®ã¡ãœãã
Application
ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãåç
§ããããã«ãªããŸãã
ãœãŒã¹ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
package cc; import android.app.Application; public class c extends Application {}
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cc"> <application android:name=".c" /> </manifest>
adbã䜿çšããŠAPKãæ£åžžã«ã€ã³ã¹ããŒã«ãããããšã確èªããŸããããã¯ãèšå®ãã§ã確èªã§ããŸãã
æé©åïŒ1961ãã€ãã10ïŒ
åæžïŒ
ãã§ãã¯ãµã ããªãã»ãããªã©ã®ããŸããŸãªã¡ã«ããºã ã«ãã£ãŠæåã§ã®ç·šéãå°é£ã«ãªãããããã®æé©åã®ããã«Dexãã¡ã€ã«åœ¢åŒãæ°æéãããŠèª¿æ»ããŸããã
ã€ãŸããAPKãã€ã³ã¹ããŒã«ããããã®å¯äžã®èŠä»¶ã¯ã
classes.dex
ãã¡ã€ã«
classes.dex
ãšããäºå®ã§ããããšã
classes.dex
ã ãããã£ãŠãå
ã®ãã¡ã€ã«ãåé€ããã³ã³ãœãŒã«ã§
touch classes.dex
ãå®è¡ãã空ã®ãã¡ã€ã«ã䜿çšããŠãµã€ãºã®10ïŒ
ãä¿åããŸãã
å Žåã«ãã£ãŠã¯ãæãæããªè§£æ±ºçãæåã§ããããšããããŸãã
ãããã§ã¹ããçè§£ããïŒ1961ãã€ãã0ïŒ
åæžïŒ
眲åãããŠããªãAPKãããã§ã¹ãã¯ãæ£åŒã«ææžåãããŠããªãããã«èŠãããã€ããªXMLãã¡ã€ã«ã§ãã
HexFiendãšãã£ã¿ãŒã䜿çšããŠããã¡ã€ã«ã®å
容ã倿Žã§ããŸãã
ãã¡ã€ã«ããããŒã«ã¯ããã€ãã®è峿·±ãèŠçŽ ãæšæž¬ãããŸããæåã®4ãã€ãã¯ãDexãã¡ã€ã«ã®ããŒãžã§ã³çªå·ãšäžèŽãã
38
ãšã³ã³ãŒãããŸãã æ¬¡ã®2ãã€ãã¯ããã¡ã€ã«ãµã€ãºã«äžèŽãã
660
ãšã³ã³ãŒãããŸãã
targetSdkVersionã
1
ã«èšå®ããããããŒå
ã®ãã¡ã€ã«ã®ãµã€ãºã
659
倿ŽããŠã1ãã€ããåé€ããŠã¿ãŸãããã æ®å¿µãªãããAndroidã·ã¹ãã ã¯æ°ãããã¡ã€ã«ãç¡å¹ãªAPKãšããŠæåŠããŸãã ãã¹ãŠãäœããã®åœ¢ã§ããè€éã«é
眮ãããŠããããã§ã...
ãããã§ã¹ãã®èª€è§£ïŒ1777ãã€ãã9ïŒ
ã®åæžïŒ
ãããŠããã¡ã€ã«å
šäœã§ã©ã³ãã ãªæåãæžãçããŠãããæå®ããããã¡ã€ã«ãµã€ãºã倿Žããã«APKãã€ã³ã¹ããŒã«ããŸãã ããã«ããããã§ãã¯ãµã ããã§ãã¯ãããŠãããã©ãããããã³å€æŽããã¡ã€ã«ããããŒã®ãªãã»ããã«ã©ã®ããã«åœ±é¿ãããããã§ãã¯ãããŸãã
é©ãã¹ãããšã«ããã®ãããªãããã§ã¹ãã¯ãNeo 5Xã§Oreoã®äžã§æå¹ãªAPKãšããŠèªèãããŸãã

BinaryXMLParser.java
ããµããŒãããAndroidãã¬ãŒã ã¯ãŒã¯ã®éçºè
ããå€§å£°ã§æã«
BinaryXMLParser.java
ã§ããã®ãèããã°ããã ãšæããŸãã
æå€§ã®å©ç¹ãåŸãã«ã¯ããããã®ãã¹ãŠã®æããªæåããã«ãã€ãã§çœ®ãæããå¿
èŠããããŸãã ããã¯ãHexFiendã§ãã¡ã€ã«ã®éèŠãªéšåãèªèããã®ã«åœ¹ç«ã¡ãäžèšã®å§çž®ããã¯ã®ãããã§æ°ãã€ããåæžãããŸãã
UTF-8ãããã§ã¹ã
以äžã¯ãAPKãã€ã³ã¹ããŒã«ãããªãéèŠãªãããã§ã¹ãã³ã³ããŒãã³ãã§ãã
ãããã§ã¹ããããã±ãŒãžã¿ã°ãªã©ãããã€ãã®ããšã¯æããã§ãã æååããŒã«ã§ã¯ãversionCodeãšããã±ãŒãžåã衚瀺ãããŸãã
16é²ãããã§ã¹ã
ãã¡ã€ã«ã16鲿°ã§è¡šç€ºãããšãæååããŒã«ããã®ä»ã®å€ïŒãã¡ã€ã«ãµã€ãº
0x9402
ãªã©ïŒãèšè¿°ãããã¡ã€ã«ããããŒã®å€ã衚瀺ãããŸãã æååãè峿·±ãæ¹æ³ã§ãšã³ã³ãŒããããŸã-8ãã€ããè¶
ããå Žåãå
šäœã®é·ãã¯åã®2ãã€ãã§ç€ºãããŸãã
ããããããã§æé©åã®ããã®ä»ã®ãªãã·ã§ã³ãèŠã€ããããšã¯ã»ãšãã©äžå¯èœã§ãã
çµãã£ãïŒ ïŒ1757ãã€ãã1ïŒ
åæžïŒ
æçµçãªAPKãã芧ãã ããã
ãã®ååå
šäœãéããŠãAPKã¯v2眲åã«ç§ã®ååã瀺ããŸããã å§çž®ã«ããã¯ã䜿çšããæ°ããããŒã¹ãã¢ãäœæããŸãã
20ãã€ãç¯çŽããŸããã
ã¹ããã5ïŒèªè
1757
ãã€ãã¯éåžžã«å°ããã§ãã ãããŠç§ã®ç¥ãéããããã¯æ¢åã®æå°ã®APKã§ãã
ãã ããAndroidã³ãã¥ããã£ã®èª°ãããããªãæé©åãå®è¡ããçµæãããã«æ¹åã§ãããšåççã«ä¿¡ããŠããŸãã ãã¡ã€ã«ãçŸåšã®
1757
ãã€ãããæžããããšãã§ããå Žåã¯ãæå°ã®APKããã¹ãã
ããŠãããªããžããªã«ãã«ãªã¯ãšã¹ããéä¿¡ããã
ãTwitterã§å ±åããŠãã ãã ã
ïŒèšäºã®å
¬é以éããã¡ã€ã«ã¯æ¢ã«820ãã€ãã«åæžãããŠããŸã-çŽPerãïŒ