?? ? ? 具体如下面的介绍:
?? ? ? 反编译一个.apk文件,需要做以下几步:1) 找到.apk安装文件 ? 2)找到安装软件的*.dex文件 ? ?3)dump dex文件 ??? ??4)分析dex文件获取想要的代码
?
?? ? ? 一、找到apk安装文件这个比较容易,把手机或者模似器安装好后,可以在eclipse的DDMS中的File Explorer下找到安装程序的apk译文件,也可以通过adb命令找到:
查找目录方式:路径为/data/app/下的apk文件?? 命令方式:通过adb命令?? adb shell--->cd /data/app---->ls?
上述两种方式可以看到相关apk文件???????
??????????????????????????????? 指令参数解释:-d : disassemble code sections
??????????????????????????????????? -f : display summary information from file header
??????????????????????????????????? -h : display file header details
??????????????????????????????????? -C : decode (demangle) low-level symbol names
??????????????????????????????????? -S : compute sizes only
?
以上是对android中dex中的文件进行反编译,但是android项目中xml文件如何进行反编译呢?如果不进行反编译,那么项目中的xml(布局文件、资源文件)文件都是乱码,当然也有针对性解决该问题的方法。
需要工具AXMLPrinter2.jar(http://code.google.com/p/android4me/downloads/list)。具体的使用方法,与上面的差不多,将它放到android-sdk\tools文件夹中,然后运行cmd,进入tools目录,运行java -jar AXMLPrinter2.jar main.xml > main.txt;
这样android项目中相关的文件基本上都经过了反编译操作,可能有些人用jd-gui来反编译时候是在jd-gui软件中进行代码查看的,当然,用eclipse做过java开发的人员都知道如果在eclipse中直接打开.class文件,这里我也介绍几种方式,便于android开发者使用,方法如下:
1.从http://www.kpdus.com/jad.html#download地址下载最新的jad;
2.从http://nchc.dl.sourceforge.net/s ... jadclipse.jar地址下载jadclipse.jar,拷贝到eclipse的plugins目录下;
3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse 下的 Path to decompiler???? jad目录\jad.exe;
4.Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”
之后在java类里按住ctrl点击类就可以看到它jad反编译后的源带码了;
如果发现安装了没有效果,可以删除eclipse主目录下的\configuration\org.eclipse.update后,再执行eclipse -clean试试
? 当然,还有一个开源的android软件可以提供android中所有文件的反编译,就是以下这种, ?
Android apktool?
?
4.cmd命令行进入到解压该文件夹,输入apktool测试是否安装成功;
安装成功后,下面开始反编译过程:
apktool d (要反编译的文件) (输出文件夹) 如:apktool d XXX.apk (目标文件夹,不能重名)?反编译 my.apk到文件夹myapk,这样apk文件转换成一个android的工程了,但是该工具主要的缺陷是反编译的class文件内容不是太完整,xml文件以、图片、汉化等功能到是挺不错的。
工程编译成apk文件
apktool b (目标文件夹)??从目标文件夹中重建APK,生成的APK在"目标文件夹"\dist文件夹里,叫out.apk。
?这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html,这里就不说了。签名后得到的APK,就是可以装到手机里的了。