安卓反编译学习

最近学习了解了一下安卓的反编译技术,进行一下学习总结。

一、准备阶段

下载反编译所需软件

  1. apktool 作用:把apk文件反编译,取出资源
  2. dex2jar 作用:把存有java内容的dex文件反编译(classes.dex转化成jar文件)
  3. jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

百度网盘:https://pan.baidu.com/s/1T94PX4EBYyuJKOqfNqyc6g 提取码: mquv


二、使用阶段

1. 使用apktool反编译apk得到图片、XML配置、语言资源等文件


在存放下载好的反编译工具所在目录的上方输入cmd可以使cmd直接定位到该文件夹目录下


java -jar apktool_2.4.0.jar d -f jiazirili1.0.0_2265.com.apk -o MMTS

命令格式为

java -jar apktool.jar包的文件名 d -f  要反编译软件包名 -o 要输出的文件夹

(由于我这里软件包和输出文件夹都在该目录下所以没有加全路径)如上图所示没有报错便是运行成功了


成功便可在输出的MMTS文件夹下看到资源内容了


2.使用dex2jar反编译dex文件得到Java源码

以压缩包的的形式打开apk安装包我这里使用的是7z解压软件


找到dex结尾的文件classes.dex,这就是java编译打包后的文件


将获取到的classes.dex放到之前解压出来的反编译工具【dex2jar】文件夹内

通过cd指令将cmd定位到dex2jar

cd 文件夹路径

由于dex2jar的文件夹是我当前的cmd所在文件夹的下,所以没有输绝对路径


cmd进入该文件夹后输入

d2j-dex2jar 你放进去的dex文件名

我这里是

d2j-dex2jar classes.dex

执行完成后就可以在该目录下看到dex文件反编译成功后得到的jar包了


最后打开所下载的jd-gui-windows工具打开反编译得到的jar文件就可以反编译得到java源代码了

如果是未加壳的软件那么到这里就算是反编译完成了,当然里面可能会有许多的文件命名是a,b,c这样的包括许多的变量名也是如此,这是由于使用了代码混淆技术,加大了阅读的难度。


可以在我的截图中看出,我反编译所得到的内容很少,并且可以看到得到的文件包名写着qihoo360(万恶的360),这是因为我反编译的这个软件使用了加壳技术,所以无法直接反编译得到内容。需要先脱壳然后再进行反编译。


参考:https://blog.csdn.net/s13383754499/article/details/78914592

通过模拟器脱壳 : https://www.jianshu.com/p/2a5612aa6e02

你可能感兴趣的:(安卓反编译学习)