如何反编译APK修改成自己想要的并打包运行

作者:Yogi

原理

利用解压缩工具获得源码的classes.dex文件;
通过dex2jar工具将classes.dex文件转换成jar包,并用jd_gui工具查看源码;
确定要改的位置后,在对应的smali文件中做修改;
修改完smali文件后再把smali文件打包成classes.dex,并通过压缩工具将原apk的classes.dex替换;
最后通过签名工具,重新生成新的可用的apk。
下面我们以y2.apk为apk名举例进行具体步骤的说明

步骤说明

通过解压缩工具获得源码的classes.dex文件

复制y2.apk文件,将复制的文件改名为y2.rar,通过Windows的WinRar工具,解压缩到y2文件夹,即可看到classes.dex文件

通过dex2jar工具将classes.dex文件转换成jar包

将上述的classes.dex文件拷贝到dex2jar.bat所在的文件夹,启动cmd命令行,执行如下操作
把dex文件转换成jar包

即可将classes.dex文件转换成jar包。如下图
如何反编译APK修改成自己想要的并打包运行_第1张图片

通过jd_gui工具查看jar包,分析要修改的位置

如图
如何反编译APK修改成自己想要的并打包运行_第2张图片
可以看到源码,虽然源码经过混淆有些难读,但是类名以及基本的函数,如onCreate\onDestroy等方法没有被混淆。在此处确定要修改的类以及函数之后,进入下一步。

获取源码的smali文件

启动cmd命令行,执行如下操作
获取smali文件
就会在D盘根路径下生成一个out文件夹,里面就是y2.apk源码的smali文件。

修改对应的smali文件

根据第3步分析得到的要修改的位置,找到对应的smali文件,进行修改与保存即可。

将修改后的smali文件转换成classes.dex文件

启动cmd命令行,执行如下操作
转换成classes.dex
通过smali-2.0.3.jar工具就能把smali文件所在的out文件夹转换成classes.dex文件。

替换classes.dex文件

如下图,通过winrar工具将y2.apk打开后,直接第6步生成的classes.dex拖到里面进行替换。
如何反编译APK修改成自己想要的并打包运行_第3张图片

签名打包,生成新的可运行的apk

启动cmd命令行,执行如下操作
签名操作
这样,就利用signapk.jar这个工具,以及密钥,就把y2.apk重新签名打包成了yy2.apk,至此符合我们要求的,可运行的apk就做好了。

使用工具下载

过程中用到的工具包:工具包下载

你可能感兴趣的:(Android)