反编译工具及使用

反编译工具及使用


反编译大致流程:
对Dex文件(Davilk虚拟机的可执行文件)进行反编译成 Smali (Davilk的寄存器语言)
再转化为 .class文件 最后将.class的字节码文件转为.java文件

主要工具:

给apk文件修改后缀为.zip 然后解压 可以查看 manifest.xml文件、各种lib(so库)、classes.dex文件

而将apk直接拖进到AS中,也是相当于修改后缀为.zip 也是可以查看 manifest.xml文件、各种lib(so库)、classes.dex文件 主要用来查看各个模块占用的大小占比

1 apktool
下载使用见 https://ibotpeaches.github.io/Apktool/install/
将apk放在解压的 apktool目录
执行:

apktool d xxx.apk

主要用来将 apk 转换成 资源文件、manifest(如查看包名)、assets、lib


2 dex2jar
将dex文件转为jar包
下载:https://sourceforge.net/projects/dex2jar/files/ 并解压
使用:
1 将 apk 加上 .zip后缀 然后解压 得到 classes.dex 文件
2 放在 dex2jar 解压的文件夹中,执行:d2j-dex2jar classes.dex


3 jd-gui
查看jar包的源代码目录结构和源代码内容
若没有代码混淆 则是可以看得到所有的相关代码的

使用: 将 jar文件放入 jd-gui中即可

注意: 反编译得到的目录结构 并不一定是真正的项目结构,只是他根据名字放在了一起

4 jadx-gui 可以直接打开apk,获取到源代码的目录结构和源代码内容 MAC平台推荐使用
下载:https://github.com/skylot/jadx
可以通过 文件->另存为gradle项目 然后用AndroidStudio打开 这样可以更好的进行代码的搜索

5 androidStudio
会自动decompile(反编译)字节码文件 当然若混淆了就decompile不了
所以拿到.class的文件 直接用as打开就好

对于代码混淆的
用 simplify
但是也是需要自己分析

你可能感兴趣的:(android,反编译)