天天看点

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

继续阅读