反编译

本文介绍了两种反编译方法:使用jd-gui查看jar和通过smali文件修改再打包apk。虽然两者都能获取代码,但方法二无法获取资源文件。总结了相关工具如apktool、smali、baksmali、dex2jar和jd-gui的用途,并提及反编译后如何重新打包签名安装。

方法一

        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的命令。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值