Android反编译

六月ゝ 毕业季﹏ 提交于 2020-01-08 05:44:49

先说一下apk的结构。APK采用了zip格式的压缩,我们可以很容易解压。

一个APK文件结构为:

META-INF/   Jar文件中常可以看到

res/  存放资源文件的目录

AndroidManifest.xml  程序全局配置文件

classes.dex  Dalvik字节码

resources.arsc  编译后的二进制资源文件

apk下的文本文件是做了二进制处理的。

 

如果我们只是想看APK Manifest信息。可以使用aapt命令。

命名格式为:

aapt dump badging  *.apk  (这里*.apk是你的apk)

aapt命令我们可以在SDK下对应版本下的tools文件夹下找到:

这个是我的路径C:/android-sdk-windows/platforms/android-7/tools

 

 

如果是res目录下的文件,则需要用工具来读取并生成文本文件,android4meAXMLPrinter2是个很好的选择。

下载地址:

http://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.jar&can=2&q=

使用方法:

java –jar AXMLPrinter2.jar  capture.xml > test.xml

执行后,将标准输出capture.xmltest.xml文件。

 

下面我们开始反编译代码部分。反编译代码需要两个工具:

  • dex2jar,用于将dex文件转换为jar文件;
  • jd-gui,将jar文件反向工程为java代码。

dex2jar的地址:http://code.google.com/p/dex2jar/

下载后解压,dex2jar 的命令使用:

dex2jar.sh  classes.dex

命令执行后,会在该文件夹下生成一个classes.dex.dex2jar.jar的文件

jd-guiwindows,mac,linux三个版本。我们下载对应版本。

jd-gui的地址http://java.decompiler.free.fr/?q=jdgui

下载后解压,点执行文件。把刚才dex2jar生成的jar文件拖入jd_gui界面即可生成源代码。

 

 

之前一篇文章写过   自制Android反编译工具 , 用到了2个开源工具dex2Jar和AXMLPrinter2.

用dex2jar反编译dex 到jar没有问题,但是用AXMLPrinter2反编译的XML文件有些地方不太好, 比如标题,颜色,还有Id属性, layout属性等等 其他属性,这个文件应该将编译后的xml文件直接反编译回来的, 可读性不强。 

请看下面一个用AXMLPrinter2反编译后的xml文件, 以反编译支 付宝手机客户端 为例, 这个xml文件是支付宝about 文件(alipay_about_320_480.xml):

 

 

 

从上面的文件可以看到, 反编译后的文件可读性不好。

最近发现有一个开源工具apktool(http://code.google.com/p/android-apktool/), 这个工具功能比较强悍, 可以反编译成源码,xml文件和语言资源文件; 我们还可以对xml文件进行修改(汉化), 然后在利用此工具编译打包APK,然后签名后就可以在手机上安装了。 简单来说apktool 可以反编译apk文件, 也可以编译源码打包成APK文件。

 

V2.0 修改:  用apktoo替换AXMLPrinter2 来反编译xml文件。

 

软件主界面:

 

还是以上面的about页面为例子, 展示一下apktool反编译的效果:

 

 

这个反编译的效果可读性比较好了吧, 通过这个例子可以看到AXMLPrinter2 和 apktool的差距了吧。

 

1. 反编译后的apk主目录如下图:

 

2. res文件目录:

如果使用AXMLPrinter2来进行反编译, 就没有values文件夹。

3.登录菜单

 

 

4. 看下res/values下的string.xml, 如果使用AXMLPrinter2来进行反编译, 就没有values文件夹

 

声明: 本软件仅供大家学习之用, 请尊重软件原版。

 

  • 大小: 7.8 KB
  • 大小: 5 KB
  • 大小: 7.2 KB
  • 大小: 9.5 KB
  • 大小: 8 KB
  • 大小: 40 KB
  • 大小: 33.9 KB
  • 大小: 56.7 KB
  • 大小: 29 KB

转http://note.sdo.com/u/jesse_luo/n/sCPcz~jAnGiwLX01E0014t

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!