Android菜鸟日记

25 android反编译

写在最前面的话:之所以写这个是感觉目前市场上的书写的内容都不够,那么有很多大公司的android apk写的不错,教下师弟们反编译去看看人家怎么写的,加以学习,请勿用于抄袭或者任何形式的不正确的行为,这样违背了我的初衷谢谢。

 

所有要用到的文件在附件

 

dex2jar来反编译classes.dex

1.首先用压缩软件打开apk[我这里打开的是京东的 =-=#感谢京东apk]

Android菜鸟日记25-android反编译 2880458305.jpg

 

 

得到:


Android菜鸟日记25-android反编译 1464483021.jpg

2.把里面的classes.dex拿出来 放到dex2jar文件夹下。

 


Android菜鸟日记25-android反编译 83292899.jpg

 

 

 

 

 

3.然后打开CMD[win+r 键入cmd]

Cd  定位到你要使用的目录

键入以下代码

Dex2jar classes.dex 如图


Android菜鸟日记25-android反编译 3600750083.jpg

其实是用dex2jar.bat去反编译classes.dexjar

此时目录文件夹[dex2jar-0.0.7-SNAPSHOT文件夹]下会多出一个classes.dex.dex2jar.jar文件.

 

4.jd-gui打开classes.dex.dex2jar.jar得到下图


Android菜鸟日记25-android反编译 528408450.jpg

下面不说了 你懂得 自己看吧  一般大的apk都做了混淆 找些小的看

 

 

 

 

AXMLPrinter2.jar查看apkxml文件

有些不懂得布局是如何做的怎么办呢?AndroidManifest不知道怎么写?

看打开APKRESXML文件撒。

什么直接打开编译有问题?[如下图]


Android菜鸟日记25-android反编译 2433137277.jpg


Android菜鸟日记25-android反编译 1420885458.jpg

 

乱码了。



Android菜鸟日记25-android反编译 635142069.jpg

 

怎么解决呢?

其实apkxml文件时需要解析一下的,这里提供一个通过使用AXMLPrinter2来解决xml乱码的问题。

 

1.首先吧AXMLPrinter2下载下来放到任意文件夹,然后把你要查看的xml文件也丢到那个文件夹。如下图


Android菜鸟日记25-android反编译 1694494185.jpg

2.依旧进入cmd cd到当前目录执行一下代码

Java =jar AXMLPrinter2.jar main.xml>xxx.txt  //main.xml是你要反编译的文件 xxx.txt是转换后的存储文件。 Xxx.txt你写成 随意.xml亦可。[txt是为了和编译前得文件分辨]


Android菜鸟日记25-android反编译 983794049.jpg

将会得到一个xxx.txt



Android菜鸟日记25-android反编译 3621691097.jpg

打开xxx.txt你想要的东西就会出来了。

[截图内容为京东客户端的AndroidManifest.xml文件]

 



Android菜鸟日记25-android反编译 3828812596.jpg

 

先写这么多吧,以后想到再写,以上大多数是我自己的经验,可能有些不符合别人习惯但是我觉得挺好的。个人按照自己需求选择性学习。有更好的办法请使用更好的办法在写这篇文章的时候我还没想到更好的解决办法。

 

2011-10-23

poolo

 




评论: