Android反编译的目的无非就是为了看到APK的xml、资源和代码:

  得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码

     得到XML的方式:

    方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方式查看的XML文件的id都是数字--即R文件中id对应的值)

           方式2:使用APKTool工具解压APK文件可以直接查看XML文件

 

Android反编译常常使用如下的一些工具:

1、反编译命令:  

  apktool d D:\\Developer\androidDecode\Test0201.apk D:\\Developer\androidDecode\test0201  

    D:\\Developer\androidDecode\Test0201.apk:要反编译的APK文件

    D:\\Developer\androidDecode\test0201:反编译文件的保存目录,必须为空目录

2、从反编译的文件编译成APK  apktool b D:\\Developer\androidDecode\test0201 D:\\Developer\androidDecode\test020101.apk

   D:\\Developer\androidDecode\test0201:保存编译后文件的目录  

  D:\\Developer\androidDecode\test020101.apk:生成的新的APK文件的保存的绝对路径

3、签名APK文件:  

  singedAPK.bat文件  

    java -jar "%~dp0signapk.jar" "%~dp0testkey.x509.pem" "%~dp0testkey.pk8" %1 signed.apk  

  执行singedAPK.bat命令  

    singedAPK D:\\Developer\androidDecode\test020101.apk  生成一个singed.apk文件和test020101.apk在同一个目录

4、使用baksmali.jar把一个dex文件转换为一个smali文件  

    java -jar D:\\Developer\ApkTool\baksmali.jar -o D:\\Developer\androidDecode\baksmaliout D:\\Developer\androidDecode\Hello.dex  

      D:\\Developer\ApkTool\baksmali.jar:baksmali.jar文件所存在的全路径  

      D:\\Developer\androidDecode\baksmaliout:生成的smali文件的保存目录  

      D:\\Developer\androidDecode\Hello.dex:要转成smali文件的路径

5、使用ddx.jar把一个dex文件转换为ddx文件  

    java -jar D:\\Developer\ApkTool\ddx.jar -d D:\\Developer\androidDecode\ddxout D:\\Developer\androidDecode\Hello.dex  

      D:\\Developer\ApkTool\ddx.jar:ddx.jar文件的绝对路径  

      D:\\Developer\androidDecode\ddxout:要保存ddx文件的路径  

      D:\\Developer\androidDecode\Hello.dex:要转换的dex路径

6、Android自带dexdump工具:dex文件转为smali文件  dexdump -d xxxx.dex > xxxx.smali

7、dex2jar.jar:dex2jar XXX.dex YYY.jar

 

说明:

  apktool项目地址:https://code.google.com/p/android-apktool/

  baksmali项目地址:https://code.google.com/p/smali/

      dex2jar项目地址:https://code.google.com/p/dex2jar/downloads/list

      java Decompiler(JD)项目地址:http://jd.benow.ca/

  XJAD百度网盘下载地址:http://pan.baidu.com/share/link?shareid=406366626&uk=3558809438&fid=881236853

  axmlprinter项目地址:https://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.jar&can=2&q=

posted on 2014-05-09 23:16  wangwangheng  阅读(11887)  评论(0编辑  收藏  举报