天天看点

Android 安全之如何反编译与加密apk包

apk包真的安全吗?会被反编译吗?如何防止被反编译?

一、查看APK包的源码

        dex2jar 这个工具用于将dex文件转换成jar文件

        jd-gui 这个工具用于将jar文件转换成java代码

        1.解压apk压缩包,找到classes.dex.

        执行代码: <code>d2j-dex2jar classes.dex</code>

        2.然后使用jd-gui工具打开classes-dex2jar.jar这个文件就可以看到源码了

二、查看和修改apk包资源

        apktool 解压。

        apktool d dujinyang.apk编译出来smail文件,修改之后apktool b dujinyang -o KARL_dujinyang.apk把它编译回去,当然,如果要正常使用的话要使用签名。

        签名使用:

        签名之后才可以正常安装到手机上的,当然,你可以优化下包,使用Zip对齐下,如果要深入的话,Zip还有其它用法。

语法:zipalign 4 KARL_dujinyang.apk KARL_dujinyang_ok.apk

三、如何混淆代码防止反编译

        Eclipse的话可以通过Jocky插件、project.properties文件等

        Android Studio的话可以通过借助SDK中自带的Proguard工具,需要修改build.gradle中的一行配置即可。

        并且还可以起到压缩APK包的作用。

四、混淆sdk/Jar

        1.通过ClassLoader动态加载的方式进行加密。

        2.通过安卓sdk自带/tools目录下的proguard GUI进行配置,执行到最后一步即可。

五、加密apk

        1.通过动态加载时,加入自身加密算法。

        2.通过第三方平台进行加密,现在都比较稳定安全了。