關于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