关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结:
几种文件之间的转换命令:
-
odex -> smali
java -jar baksmali.jar -a <api_level> -x <odex_file> -d <framework_dir>
-
smali ->dex
java -Xmax512M -jar samli-2.0.jar <smali_dir> -o classes.dex
-
dex ->odex
在android平台下使用命令dexopt-wrapper实现:dexopt-wrapper 123.apk 123.odex
-
对odex的签名,用于对修改后的odex文件,使用源文件的一部分文件头:
busybox dd if=android.policy.odex.bak of=android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
-
对apk的签名 使用专门的签名工具:
java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk
Apktools的使用
Apktool 是apk的逆向分析工具,可用于对apk的打包 解包。
APKtool 软件包有 2 个程序组成:apktool.jar 和 aapt 运行 apktools.jar 需要 java 环境(1.6.0 版本以上)。
apktool.jar 用于解包,apktool.jar 和 aapt.exe 联合用于打包。
java -jar /data/dtgy.package/bin/apktool.jar d -f -s --keep-broken-res $APK_FILE $APK_DIR
For additional info, see: http://code.google.com/p/android-apktool/
AXMLPrinter2.jar
java -jar AXMLPrinter2.jar AndroidManifest.xml #解开在apk 中的 AndroidManifest.xml-
dex2jar 一个工具集,可用来反编译dex文件到class等,然后结合jd-gui查看java代码
示例:./dex2jar-2.0/d2j-dex2jar.sh classes.dex -o 1.zip