最完整的Android反编译流程

摘自:http://blog.csdn.net/Bob1993_Dev/article/details/44345977


对于反编译一直持有无所谓有或无的态度,经过昨天一下午的尝试,也有了点心得和体会:

先给大家看看编译的过程和我们反编译的过程概图吧:




 如下是反编译工具的根目录结构:


三个文件夹也实际上是以下三个步骤的体现:

(不知道大家发现没,我把三个目录名字都改了一下,apktool即为处理apk的工具;dex2jar即就是将dex文件处理为jar包的工具;jar2gui即就是我们将jar包内的class转换为源码的gui界面以供大家参考的工具)


setp 1: 在apktool里:
  打开dos框(cmd进入然后进入该目录下,这个应该都是妇孺皆知的事情了)执行  apktool d -s xxx.apk

这里会在该目录下生成一个以apk名为名字的文件夹,有classes.dex+res文件夹+AndroidManifest.xml 这三个东西,想必大家已经懂得了其中的内涵,没错,这就是我们的项目根目录,而dex即就是由jar打包而成的Android可执行文件。

/*

*命令里的apktool 其实也就是在执行目录下的apktool.bat批处理文件,而后边的xxx.apk也就是我们所需要反编译的apk包的名称。当然啦,经常使用dos命令的人都直到,文件名或者路径都可以使用其绝对路径予以代替,因此如果我们把我们需要反编译的包放到当前根目录下,即可以直接试用其名称来执行命令

*/


setp 2: 在dex2jar里

将1中生成的classes.dex(即就是Android下的可执行文件,由一簇一簇的.class文件jar包生成)拷入dex2jar下
执行 dex2jar classes.dex  --->生成jar包,即就是classses_dex2jar.jar


setp 3:在jar2gui下运行jd-gui选中2中的jar,即可查看源码(这里是真源码)。



既然上边提到“真源码”这个概念,相对应的必然就会有伪源码(纯属本人造词,如有雷同,你猜呢?哈哈,开玩笑的)

这里再上一图


上图左侧即就是我们用setp 3达到的效果,而右侧即就是我们通过jad工具反编译class文件出来的java源文件,通过对比很明显让人得出一个极为蛋疼的结论,反编译出来的东东简直目不忍视啊·······,当然啦,左侧的代码是可以直接拷贝出来的,但是如果你想要生成源码来编译的话,还请三思~~~毕竟我们反编译出来一个是要使用res资源,另一个是参考代码,如果想要破解原apk的话,相信还有办法反编译出更好的源码(用工具进行代码复制,这样虽然本质上并没有对class进行反编译,但却得到了相对准确的源码)


具体使用jad工具来反编译的话,我就不继续写了,具体教程写在工具包的README.text文本里了,欢迎大家下载:

Android反编译工具

jad工具


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值