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
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
相关文章推荐
- 如何反编译D-Link路由器固件程序并发现它的后门
- 常见电子书格式及其反编译思路分析第1/3页
- android 使用虚拟机安装apk(图文教程)
- BAT批处理一键生成APK包脚本分享
- 配置apache支持apk ipk下载的方法
- Android实现检查并下载APK更新、安装APK及获取网络信息的方法
- .dll 文件反编译的工具软件集合
- Android应用开发之将SQLite和APK一起打包的方法
- lua脚本实现自动生成APK包
- php获取apk包信息的方法
- 使用android-apktool来逆向(反编译)APK包方法介绍
- php自定义apk安装包实例
- Android快速分析apk工具aapt的使用教程
- 如何安装系统认证签名过的APK
- jarsigner重新签名apk无法安装的解决方法
- 解决在eclipse中将android项目生成apk并且给apk签名的实现方法详解
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- 教你如何使用platform密钥对apk进行签名
- Android反编译代码和防止反编译
- 破解.net程序(dll文件)编译和反编译方法