apktool静态调试反编译

一:主要用到了apktool,dex2jar,jd-gui三个工具。

apktool:负责将apk生成assets,res,AndroidManifest,以及smali文件的获取。

dex2jar:将classes.dex转换成jar的工具。首先将.apk修改成.zip或.rar进行解压缩,然后就能得到classes.dex。然后使用dex2jar转换成jar文件。

jd-gui:是一个Java反编译工具,它可以将编译后的Java字节码文件(包括classes.dex文件)反编译回可读的Java源代码。我们这里主要 用来把dex2jar所生成的jar文件,以可视化界面的形式打开(实测:如果apk做了混淆,这个时候看到的都是abc等)

注意:上面三个工具在使用过程中可能会遇到一些问题,整理如下

        1)首先将apktool,dex2jar所在目录,添加进环境变量path,同时把java的jdk环境变量配置上移到第一个位置,因为有可能你的电脑配置了多个jdk,防止出现java和javac版本不一致的问题。cmd命令里输入:java -version和javac -version可以查看版本判断是否一致。

        2)下载apktool,包含apktool.jar和apktool.bat两个文件。下载官网:https://ibotpeaches.github.io/Apktool/install/

        dex2jar:https://gitcode.com/pxb1988/dex2jar?utm_source=csdn_github_accelerator&isLogin=1

        jd-gui:https://github.com/java-decompiler/jd-gui/releases/

二:具体步骤

        1)先使用apktool,得到xml文件,清单文件和图片,smail文件等资源

                最好是cmd进入apktool的jar包所在目录后(好处是后面的命令中不用输入apk的路径了),cmd命令输入:apktool d <apk名字>.apk 或者 apktool d <apk名字>.apk -o <生成的资源文件目录名字>

        2)利用dex2jar工具将dex转化为jar

                经过上面的步骤,我们可以在文件夹app-release中发现一个文件夹smali,这里面其实就java代码,只不过不是jar形式的,关于如何查看java源码,其实很简单的,如下:
        第一步:把你的apk后缀名改为zip,然后解压后,就会发现有个classes.dex,这里面就是java源码了。
        第二步:我们需要吧dex文件转为jar格式的文件,用到了一个工具叫dex2jar(下载链接),我们把它下载来后解压(下载来后是zip文件)。
        第三步:我解压后是放在F:\Android\apktools\dex2jar-2.0目录下,现在把dex文件拷贝到该目录下。
        第四步:cmd窗口进入F:\Android\apktools\dex2jar-2.0,然后输入命令:d2j-dex2jar.bat classes.dex回车,如下图:

完成后我们在F:\Android\apktools\dex2jar-2.0目录下就会多了个classes-dex2jar.jar文件,这个就是我们需要的jar文件,接下来就是如何查看java代码了,这里笔者借用一个工具jd-gui(下载链接),下载完解压(这里选择window平台),然后用它打开classes-dex2jar.jar就可以了,如果你的apk经过混淆,那么看到的都是a、b之类的。

动态解析:

    

知晓上面的结构,java代码编译成class文件,我们可以使用反编译尝试还原java代码。第一部分说过静态反编译,这里说一下动态调试所用到的几个工具,做个记录。

为什么使用动态调试?这是因为当代码逻辑复杂时,不知道运行时会走到哪个方法,哪个分支。

工具有:Jadx:提供动态调试smali代码功能。工具里有断点调试的功能

        androidstudio:给androidstudio安装插件Smalidea后,将apktool静态编译得到的snali文件拷贝到Android项目中作为源码文件,也可以动态调试smali。

        xposed:鄙视是root后的Android手机安装这个Xposed框架。

        Frida:是一个客户端动态逆向分析工具。由server和client组成,server程序是部署在客户端上,client程序则运行在pc侧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值