Android Reverse Engineering: Basics -- Tools Usage and Proguard

步骤参考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了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值