学习反编译目的不是为了盗取别人的成果,而是能够加快自己的学习进度,不像以前为了查一个小功能网上四处寻找,无数种解决办法,最后测试下来只有一种正确。之前做delphi和.net也经常用reflector去反编译*.dll文件,今天才发现android编译出的*.apk文件也能反编译,学习了!
首先从反编译自己开发的系统(南青信息查询Android客户端)来学习反编译开始,好像很有趣,偷窥别人不好意思,偷窥自己总可以吧。
【反编译工具】
1.AXMLPrinter2.jar
2.baksmali.jar
3.smali.jar
【*.xml文件反编译】
项目目录结构
cmd命令:java -jar AXMLPrinter2.jar main.xml > main.txt
反编译前后对比:
res->layout->main.xml源文件
生成出来的main.txt
【*.dex文件反编译】
将Info.apk里的classes.dex解压到tools目录
cmd命令:java -jar baksmali.jar -o classout/ classes.dex
生成classout文件夹
反编译前后对比:
反编译前(chuangbo)
反编译后
前后差别还是挺大的,不过仔细琢磨还是能得到想要的东西!
Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
作者:水煮鱼
出处:http://blog.csdn.net/sheshou2