您的位置:首页 > 其它

apk格式分析及逆向

2015-09-07 10:08 483 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apk dex smali 反编译