Android Reverse Engineering: Basics -- Tools Usage and Proguard

来源:互联网 发布:关于淘宝店 编辑:程序博客网 时间:2024/06/06 14:29

步骤参考http://blog.csdn.net/wawxf2008/article/details/21303907

所用工具: Android Studio 1.01 , dex2jar, jadgu

用Android Studio 生成一个默认blank activity (带个hello word)的兼容从2.3.3到5.01的apk。大小为934KB。

用unzip解压后得到以下文件:


直接用文本处理工具打开.xml和dex文件,结果如下应该都是无法直接辨识的十六进制编码。


dex也就是传说中的dalvic bytecode了。用dex2jar把dalvic bytecode 转成java bytecode

Hao$ dex2jar/dex2jar.sh app-release/classes.dex 


生成classes_dex2jar.jar。

这时我们可以用jad-gui来再次把java bytecode转成java code,让我们来看看效果


可以看到对于这个简单的且没有使用proguard的apk, jad能够还原的很好。

并且能看到一个build config的类,反应了apk的一些基本信息。内容如下


我们再来测试下使用minify后的情况。

进入build.gridle把false改成true

    buildTypes {        release {            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }

然后signing release, 注意是release不是debug。

生成的apk大小小了接近一半,为577KB。

重复刚才我们的步骤。


我们可以看到android.support里的class 和method名 都被按字母重命名了。

现在我们再来测一下使用proguard的情况。把minify改成runProguard, 结果gradle报错。查文档看到这么一句话

ProGuard is supported through the Gradle plugin for ProGuard version 4.10. The ProGuard plugin is applied automatically, and the tasks are created automatically if the Build Type is configured to run ProGuard through the minifyEnabled property.

看来上面的minify其实就是proguard + optimization了。



0 0
原创粉丝点击