方法一
1,使用apktool将一个apk文件给反编译成smali文件,并拿到其清单文件与资源文件。使用apktool.bat或者apktool.jar。示例如下: apktool d aa.apk ————这是使用apktool.bat进行
java -jar apktool.jar d aa.apk ————这是使用apktool.jar进行反编译。所有使用jar文件的方式都是通过java -jar完成
2,使用smali.jar将第一步得到的smali文件转换成dex文件。如:
java -jar smali.jar a ./aa/smali -o name.dex ————./aa/smali指的是smali所在的文件夹。 -o后所跟的是dex的文件名
3,将得到的dex文件通过dex2jar转换为jar文件。如下:
d2j-dex2jar ../aa.dex -o ../bb.jar ————前一个路径指的是dex所在的文件夹,后一个路径指的是转换的jar所在的文件夹
4,使用jd-gui查看jar文件,或者直接导到as中查看。
方法二
可直接解压apk文件,拿到其中的dex文件。可进行如下操作:1,通过baksmali.jar将dex转换成smali文件。如:
java -jar baksmali.jar d ./classes.dex -o ./smali ————第一个路径指的是dex所在的文件夹,第二个指的是反编译得到的smali所在的文件夹
2,通过dex2jar将dex文件转换成jar文件:
d2j-dex2jar ../classes.dex -o ../xxxxxx.jar
拿到smali文件后,可以修改smali文件,并将smali重新打包成apk。
比较
两者都可以拿到代码文件。但方法二无法拿到资源文件、布局文件等(通过解压方式拿到的布局文件是乱码,没法查看的)。但它操作简便。
总结
apktool:反编译,同时拿到res,smali文件。
smali:将smali文件转换成dex文件。
baksmali:将dex文件转换成smali文件。
dex2jar:将dex文件转换成jar文件。
jd-gui:查看jar文件。
重新打包
反编译后可以拿到smali文件,并可以对smali文件进行修改,可以将修改后的smali文件打包成apk并进行签名安装。具体涉及到的有aapt的命令。
本文介绍了两种反编译方法:使用jd-gui查看jar和通过smali文件修改再打包apk。虽然两者都能获取代码,但方法二无法获取资源文件。总结了相关工具如apktool、smali、baksmali、dex2jar和jd-gui的用途,并提及反编译后如何重新打包签名安装。
1167

被折叠的 条评论
为什么被折叠?



