apk包真的安全吗?会被反编译吗?如何防止被反编译?
一、查看APK包的源码
dex2jar 这个工具用于将dex文件转换成jar文件
下载地址:http://sourceforge.net/projects/dex2jar/files/
jd-gui 这个工具用于将jar文件转换成java代码
下载地址:http://jd.benow.ca/
1.解压apk压缩包,找到classes.dex.
执行代码: d2j-dex2jar classes.dex
2.然后使用jd-gui工具打开classes-dex2jar.jar这个文件就可以看到源码了
二、查看和修改apk包资源
apktool 解压。
apktool d dujinyang.apk编译出来smail文件,修改之后apktool b dujinyang -o KARL_dujinyang.apk把它编译回去,当然,如果要正常使用的话要使用签名。
签名使用:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名
签名之后才可以正常安装到手机上的,当然,你可以优化下包,使用Zip对齐下,如果要深入的话,Zip还有其它用法。
语法:zipalign 4 KARL_dujinyang.apk KARL_dujinyang_ok.apk
三、如何混淆代码防止反编译
Eclipse的话可以通过Jocky插件、project.properties文件等
Android Studio的话可以通过借助SDK中自带的Proguard工具,需要修改build.gradle中的一行配置即可。
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
并且还可以起到压缩APK包的作用。
四、混淆sdk/Jar
1.通过ClassLoader动态加载的方式进行加密。
2.通过安卓sdk自带/tools目录下的proguard GUI进行配置,执行到最后一步即可。
五、加密apk
1.通过动态加载时,加入自身加密算法。
2.通过第三方平台进行加密,现在都比较稳定安全了。