smali:https://github.com/JesusFreke/smali/wiki
鏈接:http://pan.baidu.com/s/1c23vDwk 密碼:s237
1.github下載smali包祟敛,編譯生成相關(guān)jar包
./gradlew build
java -jar baksmali-2.2.0-dev-fat.jar -h查看支持的指令幫助
java -jar smali-2.2.0-dev-fat.jar -h查看支持的指令幫助
2.從系統(tǒng)中pull出需要反編譯的odex文件,eg: Stk.odex
3.將smali-master/baksmali/build/libs/baksmali-2.2.0-dev-fat.jar和smali-master/smali/build/libs/smali-2.2.0-dev-fat.jar拷貝出來
4.執(zhí)行指令:java -jar baksmali-2.2.0-dev-fat.jar deodex Stk.odex
此時(shí)可能會提示,Could not find classpath entry boot.oat跑揉, 請將系統(tǒng)/system/framework/arm或者/system/framework/arm64中的boot.oat pull出來
5.再次執(zhí)行指令:java -jar baksmali-2.2.0-dev-fat.jar deodex Stk.odex
此時(shí)可能會提示叼架, Cannot find dependency boot-core-libart.oat in null, 請將系統(tǒng)/system/framework/arm或者/system/framework/arm64中的boot-core-libart.oat pull出來
---->建議將/system/framework/arm或者/system/framework/arm64中所有的文件均pull出來扮饶,省去一次次執(zhí)行報(bào)錯(cuò)的煩惱(當(dāng)然乍构,apk的依賴不一樣,所需的包也不一樣岂丘,請根據(jù)提示來操作即可)
6.再次執(zhí)行java -jar baksmali-2.2.0-dev-fat.jar deodex Stk.odex后眠饮,會在當(dāng)前目錄下生成out文件夾,里邊放的是smali中間文件寨蹋,可以用這些文件來生成.dex文件
7.生成.dex方法,執(zhí)行指令:
java -jar smali-2.2.0-dev-fat.jar assemble out/
會在當(dāng)前目錄下生成out.dex
8.之后使用jadx工具反編譯.dex文件(jadx -d Stk_folder out.dex)扔茅,即可生成java文件 (請查看apk反編譯2)
9.反編譯出的只有java文件,如需資源文件运褪,請pull出Stk.apk文件玖瘸,使用apktool,即可反編譯出資源文件 apktool d Stk.apk(請查看apk反編譯1)