反编译以及重新打包并重新签名apk

反编译以及重新打包并重新签名apk

最近去网上学习了反编译及重写apk,下面是我吸取了网上的知识后梳理的知识,记下来以后方便用:
网上学习时浏览过的博客(ps:有些不是CSDN的,不知道会不会被打额/捂脸):
1、https://www.jianshu.com/p/792a08d5452c
2、https://www.oschina.net/question/54100_33457
3、https://www.jianshu.com/p/6bc51cee8c8c

第一步:反编译
网上反编译教程很多,我就根据自己找的写写:
反编译需要用到的工具依次是:dex2jar、jd-gui、apktool
1、dex2jar    下载地址:https://sourceforge.net/projects/dex2jar/files/
2、jd-gui    下载地址:http://jd.benow.ca/
2、apktool   下载地址:http://ibotpeaches.github.io/Apktool/install/
反编译步骤:
1>将apk文件后缀名改为“.zip”后,解压,找到classes.dex文件
2>将classes.dex拷贝到dex2jar解压后的根目录下,打开cmd,输入下面的命令:
d2j-dex2jar classes.dex

如图:


执行完后,你会看见,dex2jar文件夹里多了classes-dex2jar.jar文件


3> 解压刚下载好的jd-gui,并用其打开classes-dex2jar.jar,就可以看到反编译后的代码了,但是你会发现,其资源文件都是乱码,比如AndroidManifest.xml;

 

4> 为了还原资源文件AndroidManifest.xml,就需要apktool文件,下载http://ibotpeaches.github.io/Apktool/install/下的以下两个文件

 

5> 先创建个文件夹(命名不带中文及特殊符号)apktoolinstall,将刚下载的两个apktool文件放在文件夹里,并将要反编译的apk(我的是test.apk)放进该文件夹,如图:

 

6> 打开cmd ,切换至刚建的apktoolinstall文件夹目录下(D:\decompilationssqxm\apktoolinstall),输入以下命令:

apktool d test.apk

如图:

点击回车后,便可看到,apk正在被反编译中(该图已经编译完成):

(注: 这个命令可以写进脚本里,放在 D:\decompilationssqxm\apktoolinstall 下,双击一下即可实现反编译:

(1)新建一个文本,修改后缀名为.bat,如:反编译.bat;

(2)右键编辑“反编译.bat”,输入命令:apktool d test.apk ,保存退出

(3)双击“反编译.bat”,即可。

7>  编译完成后,apktoolinstall文件下就多了个  test  文件夹,打开文件夹中的AndroidManifest.xml文件你会发现,文件没有乱码了,反编译到这就完成了,我们可以在test文件夹下获取该apk的相关资源和借鉴代码,也可以对test文件夹下的文件做相应的修改,然后重新打包。

第二步:修改test文件夹相关文件

test文件夹中的文件如图所示:

1> 在apktool.yml中 修改apk版本信息,也可删减assets文件夹中的文件

第三步:重新打包apk

打开cmd,切换至刚建的apktoolinstall文件夹目录下(D:\decompilationssqxm\apktoolinstall) 输入以下命令:

apktool b test -o test_new.apk

如图:

(注: 这个命令可以写进脚本里,放在 D:\decompilationssqxm\apktoolinstall 下,双击一下即可实现重新打包

(1)新建一个文本,修改后缀名为.bat,如:重新打包.bat;

(2)右键编辑“重新打包.bat”,输入命令:apktool b test -o test_new.apk ,保存退出

(3)双击“重新打包.bat”,即可。

编译完成后,即可在D:\decompilationssqxm\apktoolinstall 下看到一个test_new.apk,就是重打包生成的新的apk,如图:

到这里,重新打包apk就完成了,但是这个新打包的apk是没有签名的,是adb instlall 不上的,如需安装,则需要重新签名。

第四步:重新签名

将相应签名文件(我的是platform_3.x509.pem、platform_3.pk8、signapk.jar  3个文件)放到 D:\decompilationssqxm\apktoolinstall  目录下,打开cmd,输入以下命令:

java  -jar  signapk.jar  platform_3.x509.pem  platform_3.pk8   test_new.apk    test_new_3.0_signed.apk

如图:

(注: 这个命令可以写进脚本里,放在 D:\decompilationssqxm\apktoolinstall 下,双击一下即可实现重新签名

(1)新建一个文本,修改后缀名为.bat,如:重新签名.bat;

(2)右键编辑“重新签名.bat”,输入命令:apktool b test -o test_new.apk ,保存退出

(3)双击“重新签名.bat”,即可。

签名成功后,在 D:\decompilationssqxm\apktoolinstall  下就生成了一个  test_new_3.0_signed.apk,这个apk就是签好名的了;到这里重新签名就结束了。

最后  D:\decompilationssqxm\apktoolinstall   文件夹下的内容如下: