欢迎来到天天文库
浏览记录
ID:22630399
大小:161.00 KB
页数:5页
时间:2018-10-30
《app加密及那点事儿》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、先来说一下一些常用的加密方法:伪加密 伪加密是Android4.2.x系统发布前的加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为”PK0102”的后第5位字节,奇数表示不加密偶数表示加密。 虽然伪加密可以起到一定防破解作用,但也会出现问题,首先使用伪加密对其APK加密后市场无法对其进行安全检测,导致部分市场会拒绝这类APK上传;其次,伪加密的加密方式和解密方式也早已公布导致它的安全程度也大大降低;再次,Android4.2.x系统无法安装伪加密的APK;最后伪加密只是对APK做简单保护,在
2、java层源码加壳保护、核心so库、资源文件、主配文件、第三方架包方面却没有任何保护处理。注意:高版本不支持这样的方法,所以还是不要尝试使用这样的加密方式了。混淆加密 把原来有具体含义的类名,变量名,方法名,修改成让人看不懂的名字,例如方法名getUserName编程了方法名 破解:耐心运行时验证 运行时验证,主要是指在代码启动的时候本地获取签名信息然后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示盗版或者直接崩溃。当然你可以把必要的数据放在服务器端。破解:找到smali文件中,判断是否相等的部分。改为常量true
3、,即失效。总之,反编译一些apk之后,只要是java代码写的总会有smil文件。对于smil文件,如果耐心读的话,还是可以查看到一些关键代码的。 相较于应用来说,游戏apk因为采用cocos2d-x或者unity3D,采用的是c++和c#编写的跨平台程序,在apk采用JNI的方式。所以没有smali,可以防止静态被破解apk包。当然游戏包apk在运行的时候,会把.*so加载到内存中。动态也是可以在内存中抓取相应的数据。只不NDK相对于smali破解来说,根部不是一个层级的关系。难道真的就没有好的加密方式吗。想做一个应用非要把核心部分使用nd
4、k这么复杂的东西嘛。其实,我们完全可以借助第三方工具。比如爱加密以我上次使用gameChange.apk为例。这是我在爱加密官网申请的加密程序。 该classes.dex是我原来的代码。没有混淆,没有任何的加密保护。反编译的话,真的是一丝不挂的漏了出来。 该classes.dex是经过爱加密处理之后的,反编译之后发现莫名其妙的代码。其实这两个类是,运行使用jni加载so库的代码。 NativeApplication类,加载exec.so和execmain.so,里面应该是固定的代码,是对源码1.packagecom.shell;2.3.imp
5、ortandroid.app.Application;4.5.publicclassNativeApplication6.{7. static8. {9. System.loadLibrary("exec");10. System.loadLibrary("execmain");11. }12.13. publicstaticnativebooleanload(ApplicationparamApplication,StringparamString);14.15. publicstaticnativebooleanrun(Ap
6、plicationparamApplication,StringparamString);16.17. publicstaticnativebooleanrunAll(ApplicationparamApplication,StringparamString);18.}SuperApplication继承自Application,程序主入口:1.packagecom.shell;2.3.importandroid.app.Application;4.importandroid.content.Context;5.6.publicclassS
7、uperApplicationextendsApplication7.{8.protectedvoidattachBaseContext(ContextparamContext)9.{10.super.attachBaseContext(paramContext);11.NativeApplication.load(this,"com.example.gamechange");1.}2.3.publicvoidonCreate()4.{5.NativeApplication.run(this,"android.app.Application"
8、);6.super.onCreate();7.}8.}在加密之后的apk包中,多了一个assets目录,该目录下,有一些ijiami.dat,其实这个就是我们原来的
此文档下载收益归作者所有