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

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

APKTOOL的使用

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

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

执行过程会出现这些。


对某APK反编译修改代码到重新打包编译_第1张图片

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

对某APK反编译修改代码到重新打包编译_第2张图片

通过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的


对某APK反编译修改代码到重新打包编译_第3张图片

代码了

你可能感兴趣的:(对某APK反编译修改代码到重新打包编译)