(这篇是我13年分享在eoeandroid上的,纯粹搬过来这边跟大家分享一下。大神可以直接飘过。)
虽然说Android的反编译一直都不是什么神秘高深的技术,好久之前就已经搞过,但是闲着无聊,还是想来跟小伙伴们分享一下。
一、工欲善其事必先利其器。
反编译apk包不可少的就是apktool工具,可以上 https://code.google.com/p/android-apktool/ 下载相关工具,或在我的附件中下载亦可。
(apktool所依赖的环境包括JDK、Android SDK,此处不赘述)。
二、反编译植入代码的思路与方法。
其实思路很简单,
1、假如我们要植入代码带targetapk.apk中, 那么首先我们要反编译 targetapk.apk,得到源代码对应字节码。我们知道,如果我们要植入代码到其中,必须加入字节码然后重新编译打包。
2、但是我们只会Android代码,怎么写字节码?其实我们只要新建一个Android工程,将我们需要加入的Android代码写入,然后打包成apk,比如sourceapk.apk;接着反编译它得到Android代码对应的字节码。
3、将需要植入的Android代码对应的字节码拷贝,粘贴到targetapk对应的字节码源文件中的合适位置。
4、重新编译targetapk对应的源文件,生成apk后进行签名即可安装使用。
思路出来了,方法也就呼之欲出了,接下来直接进入实战。
1、apktool反编译命令:apktool d targetapk.apk targetapkfolder 。重新编译命令:apktool b targetapkfolder 。 生成的apk在targetapkfolder的dist文件夹下。
2、以金山毒霸为目标apk,植入一段Toast代码进行演示。
①反编译duba.apk:
命令行cd到apktool目录下(或者直接点击其中的start.bat即可),并将duba.apk拷贝到该目录: