常用的Android反编译工具

好久没有写博客,一直在用自己的印象笔记记录一些问题。2017年了,想重新的把博客写起来。也希望通过这个平台交一些朋友。

什么是反编译?
反编译的定义--计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。

对于Android来说,反编译就是将一个apk转换成相应的资源文件(可能被混淆了)和java代码(可能被混淆了)。这一过程可能是apk->dex->jar->查看代码,也可能是apk->资源文件+smali,也可能直接是apk->查看代码。这个过程就就需要对具体的反编译工具而言了。

反编译工具有什么用?

一个新的强大的库想知道哪些大厂在使用,可以反编译大厂的apk,看看有没有相应的包。

apk发布以后发现有问题,可能某些功能漏了,反编译看看相应的代码是否存在就知道了。

看着别人apk的动画效果好厉害,反编译别人的apk,然后查找相应的代码模仿(很大可能也找不到)。

了解例如apt生成代码的效果,反编译代码就可以看到生成的代码(当然在build/generated/source/apt目录下也可以看到)。

反编译工具有哪些?

dex2jarjd-guijadxenjarifyApktool

上面的5种反编译相关的工具都是开源的。

  • 最开始反编译工具是dex2jar可以将dex转化成jar包,然后可以将jar通过jd-gui来转换。
  • 发现这个过程需要两步才能完成,后来直接使用jadx将apk反编译查看代码。
  • 使用jd-gui/jadx查看代码的时候,跳转以及查找都比较的慢。就使用enjarify(号称可以反编译出来的类最多)将apk反编译成dex,然后使用jadx将dex反编译成java代码,使用Android Studio查看代码。
  • 使用apktool可以反编译出资源文件。

所以现在我的习惯,对于直接给的jar(其它部门的SDK)使用jd-gui。对于不需要去具体看代码的apk使用jadx直接查看。对于可能需要研究的代码,使用enjarify + jadx + Andorid Studio。需要查看资源文件就使用apktool。

一个小的tips,使用adb命令快速的找到当前在那个界面。

adb shell dumpsys window windows | grep -E ‘mCurrentFocus'

更多的adb命令还可以查考awesome-adb

最后反编译不是我们学习的全部,但是了解一点还是对开发有帮助的。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值