一步步教你Android反编译

14,871 阅读2分钟

前言

反编译已经有很多大佬写过了,我这里又写了一遍。一是希望能够更加的通俗易懂,让没接触过反编译的小伙伴能

够快速入手。二也是希望自己能够更加的牢记,就像是笔记一样。希望大家能够多多支持。

工具介绍

  1. Android反编译一般会用到三个工具。apktooldex2jarjd-gui
  2. apktool将xml资源文件反编译成可以查看。并把class.dex文编译成了可以smali文件。smali具体是什么我也不太清楚,上网查说是底层java虚拟机读的语言。
  3. dex2jar将class.dex文件转换成jar包的工具
  4. jd-gui可以读取jar包的工具
  5. 工具地址: “ https://github.com/13046434521/-”

实例

这里我们以某TV为例。因为个人想写一个直播视频的Demo,可是没有数据,所以只能用fiddler去拦截请求。可是发现并没有直接把地址直接写在返回的请求里。个人猜测是把返回的数据,拼接成了播放地址。这里我们反编译试一下。

1.apktool:

  • 我们将apk文件解压。这样我们就能得到该apk的资源文件以及class.dex文件即源代码。

解压


  • 这样我们就得到了图片。但是我们打开AndroidManifest和layout布局这些xml格式的文件就会发现,全是乱码。我要是想看这个Apk的布局怎么写的该怎么办呢。这时候就用到apktool了。将我们要反编译的apk文件放进apktool的文件夹方便一会用到。 打开dos窗口,进入apktool界面。apktool d 文件名.apk

apktool


  • 这样我们就得到了编译好的文件了。这时的xml文件已经可以查看了,而不是乱码了 。

反编译完成.png

2.dex2jar:

将classes.dex文件翻入dex2jar的文件夹。输入图中的命令,就可得到图中的jar文件,即源代码。

jar文件

3.jd-gui:

将jar文件,通过jd-gui打开即可看到源代码。

源代码

结尾 :

反编译出来的代码有可能,有a,b,c这种代码,那是因为打包的时候加了混淆,防止反编译。

反编译就说到这里了,感觉排版有点乱。各位大大就凑合来吧。我去看他的源码去了。

喜欢的点个关注呗,你们的关注就是我最大的动里。

还是那句话,风力雨里在这里等你。感谢各位,希望大家共同进步,3Q。

(另外加句题外话,我发现有的公司喜欢把图片放到drawable里而不是mipmap里。比如我反编译的这个项目就是。不知道你们喜欢放到哪儿。)