天天看點

apk格式分析及逆向

apk解壓後目錄結構:     

Dex檔案格式:

  • Official dex bytecode reference
  • Official dex format reference
視訊 Android安全之 – Dex檔案解析(一) Android安全之 – Dex檔案解析(二) (百度網盤)

apk簽名:

簽名相關檔案在META-INF目錄下三個檔案

關于X.509證書,RSA加密解密原理,SHA1算法參見其他文檔。 apk使用自簽名,證書使用自簽名。 是以隻能進行一緻性驗證不能進行合法性驗證。 MANIFEST.MF中儲存所有檔案對應SHA1摘要資訊。 CERT.SF中儲存了MANIFEST.MF檔案的SHA1-RSA摘要 簽名 及其他檔案的摘要簽名。(有說僅摘要未簽名,未核實) CERT.RSA儲存對CERT.SF的簽名,簽名使用的證書。

是以完全可以修改apk中檔案,然後用自己的證書重新簽名使用。

apk反向工程

使用dex2jar根據dex生成jar,使用jd-gui檢視jar包源碼 使用apktool根據apk解開apk生成smali檔案及資源檔案,可反向根據smali及資源檔案生成apk apktool使用smali及baksmali處理dex與smali的轉化
https://github.com/JesusFreke/smali
smali syntax is based on   jasmin/ dedexer syntax

執行個體操作

建立Hello.java     

generate Hello.class     javac Hello.java

generate Hello.dex     D:\android\sdk\build-tools\android-4.4W\dx --dex --output=Hello.dex Hello.class

disassemble hello class     javap -c -classpath . Hello

dump hello dex     dexdump -d Hello.dex

convert dex to smali     java -jar D:\work\tools\decompile_apk\smali-2.0.3\baksmali-2.0.3.jar Hello.dex

convert smali to dex     java -jar D:\work\tools\decompile_apk\smali-2.0.3\smali-2.0.3.jar out -o hello2.dex

run Hello with dalvikvm

adb push Hello.dex /sdcard/.
adb shell dalvikvm -classpath /sdcard/Hello.dex Hello
odex     系統app,預先生成放入rom中         /system/app      使用者安裝app,首次運作時dexopt緩存         /data/dalvik-cache

繼續閱讀