早上与兄弟聊天,谈到他现在公司的android产品,心血来潮,反编了一下,之前接触反编的时候就发现网上很多资料写的非常混乱,正好趁着今天整理一下,保存备用。

APK反编译---------------------------------------------------------------------------------------------------------------------------------------------------------------

apk反编是比较简单的,网上资料很多,但是其中良莠不齐,具体来讲,apk反编分为两个部分,一个部分是反编得到java代码的,另一部分是反编得到配置与布局文件的。

首先总结下怎样获得java代码:

这里我们需要两个工具分别是dex2jar,还有jd-gui。这两个工具网上下载的地方很多,在这里就不给地址了。

1、将apk文件直接解压,压缩工具就不用我来推荐了吧。

2、找到解压后的classes.dex文件,把它放到dex2jar的解压目录下,然后到cmd命令行cd到dex2jar的解压目录下,运行 dex2jar classes.dex

然后我们会看到"this cmd is deprecated, use the d2j-dex2jar if possible"的警告信息,无视它吧。当出现done的时候说明已经反编完成了。

能看到,jar文件是会比dex文件稍大一点的。

3、相信这个时候很多人都知道要怎么做了,直接使用jd-gui打开jar文件就OK了。打开之后如果发现类名、方法名以及变量名都是什么a、b、c....这种的说明是混淆了的。

然后我们来看下怎样获得配置文件:

这里,我们需要一个谷歌提供的工具apktool,这里我要提下,有很多文章里面提到apktool的时候,我们会发现其中有不同之处,有的是只有一个apktoo.jar,

有的则有aapt.exe,apktool.jar,apktool.bat。让人觉得很混乱,这里我就解释下,核心的东西就是apktool.jar,有这个我门才能完成解包、打包等功能,aapt.exe是打包时候需要用到的工具,在这里我们就不谈它了,而apktool.bat是一个方便大家使用apktool.jar来解包的一个批处理程序,他的内容如下

1 @echo off
2 set PATH=%CD%;%PATH%;
3 java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

这样讲完后,大家对apktool就有了一个更深入的了解,解包我们只要有apktool.jar和apktool.bat就够了,没有apktool.bat咱们照着上面写一个也行,这样就不至于看着网上的各种版本不知道用哪个了。

这个工具怎么用呢,简单,还是打开cmd命令行,cd到apktool.jar与apktool.bat所在的文件夹

运行

apktool d <file.apk> <dir>

<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\abc.apk

<dir>代表了反编译后的文件的存储位置,比如C:\AAA

如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令

apktool d –f <file.apk> <dir>

这样就会强行覆盖已经存在的文件。

这就是解包后的效果,清单文件、布局文件随便看。

代码混淆------------------------------------------------------------------------------------------------------------------------------------------------------------------

时间不多了,我就简略的说下

2.3.3后,google提供了proguard.cfg文件来作为代码混淆的配置文件,网上的教程也大多基于此,但是4.0发生了一些小小的改变

http://my.eoe.cn/zgjxxjkon/archive/14791.html

这篇博客介绍的比较详细,我就不赘述敷衍了。

posted on 2014-04-25 14:17  二十年梨花  阅读(365)  评论(0编辑  收藏  举报