




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
先来说一下一些常用的加密方法:伪加密伪加密是Android4.2.x系统发布前的加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为”P K 01 02”的后第5位字节,奇数表示不加密偶数表示加密。虽然伪加密可以起到一定防破解作用,但也会出现问题,首先使用伪加密对其APK加密后市场无法对其进行安全检测,导致部分市场会拒绝这类APK上传;其次,伪加密的加密方式和解密方式也早已公布导致它的安全程度也大大降低;再次,Android4.2.x系统无法安装伪加密的APK;最后伪加密只是对APK做简单保护,在java层源码加壳保护、核心so库、资源文件、主配文件、第三方架包方面却没有任何保护处理。注意:高版本不支持这样的方法,所以还是不要尝试使用这样的加密方式了。 混淆加密 把原来有具体含义的类名,变量名,方法名,修改成让人看不懂的名字,例如方法名getUserName编程了方法名破解:耐心 运行时验证 运行时验证,主要是指在代码启动的时候本地获取签名信息然后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示盗版或者直接崩溃。当然你可以把必要的数据放在服务器端。破解:找到smali文件中,判断是否相等的部分。改为常量true,即失效。总之,反编译一些apk之后,只要是java代码写的总会有smil文件。对于smil文件,如果耐心读的话,还是可以查看到一些关键代码的。相较于应用来说,游戏apk因为采用cocos2d-x 或者 unity3D,采用的是c+ 和c# 编写的跨平台程序,在apk采用JNI的方式。所以没有smali,可以防止静态被破解apk包。当然游戏包apk 在运行的时候,会把.*so加载到内存中。动态也是可以在内存中抓取相应的数据。只不NDK 相对于smali破解来说,根部不是一个层级的关系。难道真的就没有好的加密方式吗。想做一个应用非要把核心部分使用ndk这么复杂的东西嘛。其实,我们完全可以借助第三方工具。比如爱加密以我上次使用gameChange.apk为例。这是我在爱加密官网申请的加密程序。该classes.dex是我原来的代码。没有混淆,没有任何的加密保护。反编译的话,真的是一丝不挂的漏了出来。该classes.dex是经过爱加密处理之后的,反编译之后发现莫名其妙的代码。其实这两个类是,运行使用jni加载so库的代码。NativeApplication 类,加载exec.so和execmain.so ,里面应该是固定的代码,是对源码1. package com.shell;2.3. import android.app.Application;4.5. public class NativeApplication6. 7. static8. 9. System.loadLibrary(exec);10. System.loadLibrary(execmain);11. 12.13. public static native boolean load(Application paramApplication, String paramString);14.15. public static native boolean run(Application paramApplication, String paramString);16.17. public static native boolean runAll(Application paramApplication, String paramString);18. SuperApplication继承自Application,程序主入口:1. package com.shell;2.3. import android.app.Application;4. import android.content.Context;5.6. public class SuperApplication extends Application7. 8. protected void attachBaseContext(Context paramContext)9. 10. super.attachBaseContext(paramContext);11. NativeApplication.load(this, com.example.gamechange);12. 13.14. public void onCreate()15. 16. NativeApplication.run(this, android.app.Application);17. super.onCreate();18. 19. 在加密之后的apk包中,多了一个assets目录,该目录下,有一些ijiami.dat,其实这个就是我们原来的classex.dex基本原理是在jni层, 使用DexClassLoader动态加载技术完成对加密classex.dex的动态加载,内存中解密classex.dex,完成动态加载。PS:使用DexClassLoader动态加载技术 可以使用Android DexClassLoader完成DEX的动态加载,DEX文件可以附属在assert或raw目录也可以运行时从网络下载。 我们知道DexClassLoader加载的类是没有组件生命周期的,也就是说即使DexClassLoader通过对APK的动态加载完成了对组件类的加载,当系统启动该组件时,还会出现加载类失败的异常。为什么组件类被动态加载入虚拟机,但系统却出现加载类失败呢?通过查看Android源代码我们知道组件类的加载是由另一个ClassLoader来完成的,DexClassLoader和系统组件ClassLoader并不存在关系,系统组件ClassLoader当然找不到由DexClassLoader加载的类,如果把系统组件ClassLoader的parent修改成DexClassLoader,我们就可以实现对apk代码的动态加载。总结一下,爱家密的加密步骤: 把原来的classex.dex 用未知的加密算法实现加密成assets/ijiami.dat 把事先写好的jni代码和相应的classex.dex替换到原有的位置 程序安装完运行起来以后,先运行爱加密的加壳程序,在jni里面动态加载原来的classex.dex代码,从而达到加壳保护的目的. 源classex.dex 隐藏起来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地域文化差异对教育模式创新的影响
- 7.3 一元一次不等式组说课稿-2025-2026学年初中数学沪科版2012七年级下册-沪科版2012
- 2025年理想汽车招聘试卷及答案
- Visual C#2010开发环境教学设计中职专业课-算法与程序设计(C#)-计算机类-电子与信息大类
- 水利设施巡检无人机平台创新创业项目商业计划书
- 精密金属零部件创新创业项目商业计划书
- 维生素D强化骨骼胶囊企业制定与实施新质生产力项目商业计划书
- 补水保湿套餐创新创业项目商业计划书
- Unit 5 Here and Now(Section A1a-1d)说课稿 2024-2025学年人教版(2024)七年级英语下册
- 2025年青少年心理健康问题的社会因素研究
- 2020年全国II卷英语高考真题试题(答案+解析)
- 《林佳明经方实践录》记录
- 宅基地转让协议书
- 十年(2015-2024)高考真题数学分项汇编(全国)专题25 新定义综合(数列新定义、函数新定义、集合新定义及其他新定义)(教师卷)
- 酒店数字化运营概论 课件 1.1 信息技术、数字技术与企业运营
- 重大质量事故纠正预防措施报告
- 日语N2必备单词
- 燃气行业数字化转型实施路径
- 抖音短视频运营直播带货KPI绩效考核指标(抖音直播运营规划方案 抖音直播部门组织架构及职责说明)
- 去极端化教育课件
- YY/T 0661-2008外科植入物用聚(L-乳酸)树脂的标准规范
评论
0/150
提交评论