移动应用安全加固.pdf

移动应用加固技术移动应用加固技术 梆梆安全梆梆安全 CTO陈彪 加固的原因加固的原因 • AndroidJava编写,容易逆向 • Android应用允许自签名,同时应用市场混乱,导 致大量应用被二次打包,植入广告、木马等 • Root后,利用调试、Hook等技术手段对应用进行 动态攻击动态攻击 加固功能加固功能 • 代码加壳 • 反调试 • 完整性检查 保护对象保护对象 • Java-AndroidDex • C/C++/ObjjC-AndroidSo、Apppplemach-o • 各种开发框架的文件各种开发框架的文件 ✓✓ httml、、JsJs、、Luaua、、CC#等等 DexDex加固加固 -第第一代整体加密代整体加密 技术技术 • 基于Java本身提供的类加载技术 • classes.dex被完整加密,放到APK的资源中 • 运行时修改程序入口,将加密后的classes.dex在 内存中解密,并让Dalvik虚拟机加载执行 加固前后的变化加固前后的变化 加固前的加固前的apkk 加固后的加固后的APKAPK AndroidManifest.xml AndroidManifest.xml assets/bangcle_classes.j ar classes.dex classesdexclasses.dex 存在的问题存在的问题 • 难以对抗动态分析 • 内存中存在连续完整的解密后的代码,可通过内存dump的方式得到解密代码 • 针对内存针对内存ddump,各家加各家加固厂商都会打商都会打一些些patchh ✓Dex加载完毕后,抹掉或者混淆内存中dex的头部或者尾部信息 ✓检查ZJdroid是否存在,如存在,加固应用不运行 ✓… • 这些patch都是治标不治本的措施,难以从本质上解决内存dump的问题 • 例如:通过修改Dalvik虚拟机,在载入dex时候进行dump,而不是在Dex已 加载完成之后 DDex加固加固 -第二代第二代 • 基于方法替换方式 ✓原理:Java虚拟机在第一次执行某个类的某个方 法前,才需要真正加载这个方法的代字节码 ✓将原APK中的所有方法的代码提取出来,单独加 密密 ✓✓当当Daalvik要执行某个方法时,加固引擎才解密该要执行某个方法时,加固引擎才解密该 方法,并将解密后的代码交给虚拟机执行引擎执 行行 加固前后的变化加固前后的变化 加加固前APK 加固后APK AndroidManifest.xm AndroidManifest.xmAndroidManifest.xm ll l classes.des classes.dex classes.dex 加固前后的变化加固前后的变化 加固前

文档评论(0)

1亿VIP精品文档

相关文档