转自:http://shazhuzhu1.iteye.com/blog/1415328
很多人热衷于逆向工程,其过程中既可以学习作者的思路,又可以锻炼自己的能力,可谓是一举多得!今天我来给大家伙介绍介绍我所了解的apk反编译的相关技术,和大家一起来做一个逆向工程.
提醒:未经授权而逆向别人的程序是违法行为!在此,我们只做学术研究,不搞破坏~
知识铺垫:
1.反编译的结果有两种,一种是smali (java机器码),还有一种是大家喜闻乐见的java代码形式.
2.apk文件其实是一个zip压缩包,里面的目录结构与android工程的结构很类似,其中我们的java源码(包括R.java)在classes.dex文件中.
3.期间的工具大部分是java写的,运行时需要具备java环境!
我先介绍大家喜闻乐见的形式吧,哈哈…
将apk反编译为源码.
需要的工具:
1.dex2jar. dex2jar-0.0.7.10-SNAPSHOT.zip(590.31 KB, 下载次数: 44)
2.Jd-gui. jd-gui-0.3.3.osx.i686.zip(689.59 KB, 下载次数: 39)
3.AXMLPrinter2.AXMLPrinter2.zip(38.76 KB, 下载次数: 34)
逆向目标是前阵子悬赏区发过的一个demo,正好是我写的,我授权给所有cmd100用户,欢迎逆向,不追任何究法律责任..
源码:http://www.cmd100.com/bbs/forum- ... 052-pid-173308.html
Apk文件: CMD100.demo.slipButton.rar(18.74 KB, 下载次数: 19)
方法:
既然是一个zip压缩包,那就先把apk包解压出来吧!
可以看到解压出来的文件如下:
先处理xml 文件..你可能想直接打开xml文件,但其实xml文件被加密过了,打开只会是一堆你读不懂的东西,这需要用工具解码一下,用到AXMLPrinter2.
打开CMD切换到AXMLPrinter2目录.
命令: Java –jar axmlp