重点推荐jadx
Java反编译查看工具推荐jd-gui
jd的开源地址
http://java-decompiler.github.io/
apk 反编译查看工具推荐jadx-gui
jadx的开源地址
https://github.com/skylot/jadx
jd的使用
直接将class拖到jd-gui.exe上即可,同时也支持jar包的反编译查看。
支持查询检索,不过需要注意的检索框中需要勾选查询条件,这样才会把更多的内容给检索出来
jadx-gui的使用
jadx反编译功能很强大,支持apk直接反编译查看,类,方法,变量之间的引用跳转,代码颜色区别提示,检索功能也很给力。
这两个软件都支持代码保存
虽然支持代码保存,但是保存出来的项目基本上不可能当成项目源码使用的,只能说仅供分析阅读代码,不过对于我们来说逆向突破软件的最重要的就是分析突破点。
检索小技巧:
-
在反编译过程中,有些中文会被反编译或者人为的原因将中文转义成Unicode编码,这个时候就需要将检索的内容先转成Unicode编码然后再去检索。
Unicode转换
http://tool.chinaz.com/tools/unicode.aspx
-
反编译apk后,首先去看AndroidManifest.xml
因为通过AndroidManifest.xml可以找到程序入口:查找
-
其他位置的检索:其他位置的检索可以从元素(如按钮)或者弹窗(Toast)文字检索,如果文字检索不到,要考虑是否Unicode转码了。如果检索出文字在values.xml或者style.xml中,就需要在通过元素在R.id的数值进行再次检索,一般就可以找到引入该元素的activity方法体。
-
元素定义一般在res文件中,打开res文件可以根据文件名重点去浏览浏览。
如果是有一定安卓开发基础,对这些文件结构就不会陌生,查找起来也比较得心应手,就好比某台机器是你组装的,当你拆解起来也不会太困难,正所谓
知其所以然才能知其然吧。
逆向主要是需要多方面的技能储备。
可以关注我获取系列的文章列表