对某APK反编译修改代码到重新打包编译

2017-01-13 15:16:58来源:http://www.jianshu.com/p/6f2046b5e386作者:nullStr人点击

第七城市

由于兴趣的原因需要对某地图APK进行反编译,然后修改AndroidManifest,再重新打包编译。此处声明,并没有做什么坏事,只是纯粹的了解下技术。网上最大的坑就是下载apktool这个工具,自己下载了好多次,很多都有问题的,现在提供自己的反编译用到的所有工具git@github.com:justinhaisheng/-Java_Decompiler.git


APKTOOL的使用

apktool工具最最有的两个文件分别为apktool.bat与apktool.jar。


打开cmd.exe 进入到apktool工具所在的目录下执行apktool d +apk所在位置 。例如:



执行过程会出现这些。




如果中途出错,考虑是不是以前有执行过过时的apktool,可以到C盘符下user目录寻找到apktool/framework下的文件删除,然后重新反编译。
反编译完之后会在apktool下生成相应的文件文件内容如下:




通过apktool工具反编译出来后的文件,我们主要可以看到资源文件例如AndroidManifest.xml,如果只是改动这里的话,用编辑器打开改动就可以重新打包编译了。在这个文件目录下,smali是我们的主要代码所在的位置,只是现在打开看也是我们无法识别的东西(当然主要是我对这个不懂),看得懂的人可以不需要借助dex2jar继续反编译。


重新编译打包

改完代码后想重新编译打包也不难主要命令是:apktool d -r xxx.apk


在此说说我遇到的另一坑,大家也估计有机会遇到,就是重新打包后不能直接安装进手机的,原因是签名,必须要有签名才行,可是如果你是反编译别人家的apk你哪有人家的签名呀,没办法可以用自己Android工具下的签名工具(具有怎么签名请百度谷歌)来进行签名,我说的坑就是你用自己的默认签名之后,一开应用就奔溃了,原因是这个软件有做检测签名的逻辑代码,所以还必须要找到这个代码然后干掉才行。


dex2jar的使用
把.apk的包重命名为.zip,然后解压出来
解压之后会有.dex 的文件,使用dex2jar就是把.dex文件转化为.jar文件
打开cmd.exe 进入到dex2jar-2.0工具所在的目录下执行d2j-dex2jar xxx.dex。例如:



*然后就可以看到生成了.jar文件了。


jd-gui的使用

这个的使用就很简单了,打开刚刚生成的.jar就可以看到真正的.class的




代码了




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台