apk 加密流程
爱加密Android APK 加密步骤:
1.把原来的classex.dex ⽤Android 加密算法实现加密成assets/ijiami.dat
2.把事先写好的jni 代码和相应的classex.dex 替换到原有的位置
3.程序安装完运⾏起来以后,先运⾏Android 加密 爱加密的加壳程序,在jni ⾥⾯动态加载原来的classex.dex 代码,从⽽达到Android 加密保护的⽬的。
源classex.dex 隐藏起来了,在静态的时候就没有办法对其破解。
伪加密
混淆保护
运⾏时验证
Android APK 加密⽅案都有哪些?看如下分析:
伪加密是Android4.2.x 系统发布前的Android 加密⽅式之⼀,通过java 代码对APK(压缩⽂件)进⾏伪加密,其修改原理是修改连续4位字节标记为”P K 01 02”的后第5位字节,奇数表⽰不加密偶数表⽰加密。1虽然伪加密可以起到⼀定防破解作⽤,但也会出现问题,⾸先使⽤伪加密对其APK 加密后市场⽆法对其进⾏安全检测,导致部分市场会拒绝这类APK 上传;其次,伪加密的加密⽅式和解密⽅式也早已公布导致它的安全程度也⼤⼤降低;再次,Android4.2.x 系统⽆法安装伪加密的APK ;最后伪加密只是对APK 做简单保护,在java 层源码加壳保护、核⼼so 库、资源⽂件、主配⽂件、第三⽅架包⽅⾯却没有任何保护处理。Android APK 加密⽅案
2END
把原来有具体含义的类名,变量名,⽅法名,修改成让⼈看不懂的名字,例如⽅法名getUserName 编程了⽅法名。Android APK 加密⽅案1混淆保护只是增加了代码阅读难度,对于破解基本上是没有实质性作⽤的!Android APK 加密⽅案
2
END 运⾏时验证,主要是指在代码启动的时候本地获取签名信息然后对签名信息进⾏检验来判断⾃⼰的应⽤是否是正版,如果签名信息不是正版则提⽰盗版或者直接崩溃。当然你可以把必要的数据放在服务器端。Android APK 加密⽅案java源代码加密
破解:到smali ⽂件中,判断是否相等的部分。改为常量true,即失效。
总之,反编译⼀些apk 之后,只要是java 代码写的总会有smil ⽂件。对于smil ⽂件,如果耐⼼读的话,还是可以查看到⼀些关键代码的。
相较于应⽤来说,游戏apk 因为采⽤cocos2d-x 或者 unity3D ,采⽤的是c++和c# 编写的跨平台程序,在apk 采⽤JNI 的⽅式。所以没有smali ,可以防⽌静态被破解apk 包。Android APK 加密⽅案
使⽤第三⽅Android 加密平台
当然游戏包apk 在运⾏的时候,会把.*so 加载到内存中。动态也是可以在内存中抓取相应的数据。只不过NDK 相对于smali 破解来说,根部不是⼀个层级的关系。Android APK 加密⽅案
END
以⼀个例⼦分析
该classes.dex 是原来的代码。没有混淆,没有做任何的Android 加密保护。反编译的话,源代码暴露⽆疑。
该classes.dex 是经过爱加密Android APK 加密之后的,现在看看反编译之后的效果。Android APK 加密⽅案
NativeApplication 类,加载exec.so 和execmain.so ,⾥⾯应该是固定的代码,是对源码
SuperApplication 继承⾃Application ,程序主⼊⼝:
在Android APK 加密之后的apk 包中,多了⼀个assets ⽬录,该⽬录下,有⼀些ijiami.dat ,其实这个就是原来的classex.dex 6
END

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。