ãŽã«ãã§ã¯ããã€ã³ããæãå°ãªãæ¹ãåã¡ãŸãã
ãã®ååã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ãïŒ