导言: 在我们安卓开发当中, 我们不仅需要掌握基础的开发技能, 也需要掌握软件的安全技能, 这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件, 同时也可以让自己的核心技术不会被别人所盗取.
首先我们应当了解的是, 对于反编译我们一共需要三个工具, 它们分别是: APKTool,dex2jar, 和 jd-gui.
APKTool: 用于解析 apk 的 res 文件以及 AndroidManifest.xml 文件
dex2jar: 用于把 apk 解压后生成的 classes.dex 文件解析为后缀为 jar 的文件, 与下面的 jd-gui 工具联合使用则可以得到我们的核心 Java 代码
jd-gui: 将上一步所得到的 jar 文件解析为 Java 文件, 从而得到软件的核心代码
这就是反编译的核心流程, 凡是没有被 MD5 算法加密, 或者加固过的 APK 都可以利用这个方法来进行反编译破解.
第一步. 来到官网下载 APKtool
网址: https://ibotpeaches.github.io/Apktool/install/
界面如下:
我们需要把下载的两个文件都放在同一个文件夹下, 这个文件夹可以自己进行选择或者新建, 本人这里在 E 盘下创建了一个 androidsafe 的文件夹用于保存这个工具, 点击第二个链接之后会出现如下界面:
第二步. 将需要进行反编译的文件放到刚刚我们创建好的那个文件夹下
此时我们的 E:/androidsafe 文件夹下只有这三个文件, 同时我们也需要把下载的第二个文件 apktool-2.4.0.jar 更改成 apktool.jar, 不然是无法运行这个工具的. 同时把需要反编译的 apk 文件移动到这个文件夹下.
第三步. 开始反编译
键盘输入 win+r, 进入 cmd 的 Windows 命令行模式.
利用 cd 命令将命令行模式进入刚刚创建的这个文件夹下,
再输入:
apktool d 您拿到这个文件夹下的需要反编译的 apk 文件名. apk
如下图所示:
这样我们的反编译过程就完成了.
我们再来看看刚刚我们所创建的文件夹就会多出一个名为 appdebug 的文件了:
文件目录如下:
可以说是十分成功了. 其中的 res 文件夹是程序当中的所有资源文件, smali 文件夹下存放了程序所有的反汇编代码. apktool 这个工具主要是用来解析资源 res 和资源 AndroidManifest.xml 的, 除此之外的, 我们还需要另外的工具来解析 Java 源码, 利用下以下两个工具则可以用于解析 Java 源代码, 它们分别是: dex2jar 和 jd-gui.
第四步. 将 apk 文件解析为后缀为 dex 的文件
1. 首先我们把刚刚用于解析的 apk 文件的后缀改为 zip, 然后随便用一个你已经安装过的压缩包软件把它解压就可以了
2. 解压之后你会在解压之后的文件当中发现一个名为: classes.dex 的文件, 这样就把 apk 的 dex 文件得到啦! 如下图所示:
第五步. 利用
dex2jar 工具把 dex 文件解析成后缀为 jar 的文件
dex2jar 的下载网址是: https://bitbucket.org/pxb1988/dex2jar/downloads/
1. 下载到我们刚刚安装 apktool 的文件夹下, 然后解压, 更改解压后的文件名为 dex2jar
2. 将刚刚所得到的 classes.dex 文件剪切到 dex2jar 文件夹下, 如下图所示:
3. 打开命令行 cmd 模式, 利用 cd 命令将目录切换到 dex2jar 的文件夹下, 同时键入以下代码:
d2j-dex2jar.bat classes.dex
这个时候返回文件夹, 立刻就可以看到在 classes.dex 文件夹下就多了个 jar 文件了.
第六步. 将 jar 文件解析为 Java 文件
下面就来到最激动人心的一步, 得到我们的 Java 文件啦!
首先下载 jd-gui, 网址如下:
https://github.com/java-decompiler/jd-gui/releases/
这里 Windows 版本的就直接下载后解压, 解压后点击后缀为 exe 的可执行文件打开就是了, 再将 jar 文件拖进去就好啦!:
如下图所示:
反编译的步骤还是挺简单的, 但是如果被加密后再进行反编译难度就大了.
来源: https://www.cnblogs.com/geeksongs/p/10864200.html