APP脱壳的分析

admin 2022年3月18日08:40:47评论4 views字数 2063阅读6分52秒阅读模式
APP脱壳的分析

背景

APP脱壳的分析

目前市面上的各种APP安全加固厂商非常多,也是由于它们的加固产品的技术不断被攻破,从而推动它们加固技术的不断迭代更新。加固和脱壳永远是对立面的。脱壳更多的需要涉及到对APP内存的dump。

android目前有dalvik虚拟机和ART虚拟机,其中dalvik虚拟机是android 4.4以前使用的,而art虚拟机是android 4.4之后使用的。由于ART的预先加载代替用时查找以此提升APP应用的性能,所以目前的主流的虚拟机都是跑ART虚拟机。但是在加固过程中都需要对这两种虚拟机进行兼容,因此脱壳上也是有不一样的脱壳方法。

APP脱壳的分析

脱壳本质

APP脱壳的分析

Android中的APP脱壳本质是对内存中处于解密状态的dex进行dump。脱壳就是对加固的app中保护的dex的整体dump,不管是函数抽取、dex2c还是vmp虚拟机壳,都是要对整体的dex进行dump,然后再对脱壳下来的dex文件进行修复。同时要实现对app进行脱壳,那么就需要准确的定位 内存中解密后的dex文件的起始位置和大小。

同时要实现脱壳成功需要两个关键因素:1.内存中dex的起始地址和大小。2.脱壳的时机,只有在dex解密后进行脱壳,这样才能dump出明文状态的dex。

APP脱壳的分析

基于hook函数

APP脱壳的分析

在dalvik虚拟机下可以通过hook系统关键函数进行dump内存数据也就是脱壳,例如dvmDexFileOpenPartial、DexFileParse等函数

其中DexFileParse该函数主要就是对内存中的dex内容进行解析,最终返回一个DexFile结构体供虚拟机使用,函数的参数部分包含了内存中的dex文件的起始地址和大小,因此可以利用这个函数进行脱壳。

其中dvmDexFileOpenPartial该函数里最后调用了dexFileParse函数来得到解析后的DexFile结构体,函数的参数部分也包含了内存中dex的起始地址和大小,因此也可以利用这个函数进行脱壳。

在ART虚拟机种可以通过hook系统函数openMemory、OpenAndReadMagic、DexFile::DexFile()函数进行dump内存数据也就是脱壳。

APP脱壳的分析

从上图中可以看到OpenMemory函数的参数中包含了内存中dex的起始位置和大小,因此可以通过该函数进行脱壳。

APP脱壳的分析

基于ART的脱壳

APP脱壳的分析

在ART虚拟机下影响脱壳的关键的一个类就是DexFile。

APP脱壳的分析

1、那么可以直接查找法就是指以DexFile为关键字,在庞大的源码库中检索定位可能的脱壳点。如参数中出现DexFile类型的、返回值为DexFile类型的、函数流程中出现DexFile类型的源码位置。在获取到DexFile对象以后,然后再通过该对象的Begin()和Size()函数获取到该DexFile对象对应的内存中的dex的起始地址和大小即可进行dex的dump。

2、通过以DexFile为出发点,寻找能够间接获取到DexFile对象的。如通过ArtMethod对象的getDexFile()获取到ArtMethod所属的DexFile对象的这种一级间接法等;然后再在海量源码中以ArtMethod为关键字进行检索,检索那些参数中出现ArtMethod类型的、返回值为ArtMethod类型的、函数流程中出现ArtMethod类型的源码位置;

再比如通过Thread的getCurrentMethod()函数首先获取到ArtMethod或者通过ShadowFrame的getMethod获取到ArtMethod对象,然后再通过getDexFile获取到ArtMethod对象所属的DexFile的二级间接法以及通过ShadowFrame对象的GetMethod()函数获取到当前栈中执行的ArtMethod对象,然后再获取DexFile对象等等的二级间接法。

参考借鉴文章https://bbs.pediy.com/thread-254555.htm

【推荐阅读】

APP加固和脱壳方案总结

Android加固和脱壳原理探索

Android安全之定制ROM脱壳机浅析

移动端过检测抓包最全解决方案

burpsuite在各场景下的抓包方法(建议收藏)

2022年岗位招聘第1期
Android Framework/驱动/内核中高级工程师

APP脱壳的分析

移动端安全开发、移动端安全、网络安全视频课程
(1).移动安全App安全检测、渗透测试、风控、隐私合规、加固防护、病毒逆向的视频课程

(2).Android系统Framework、驱动、内核等模块的定制开发和Android APP开发以及鸿蒙APP开发的视频课程

(3).网络安全漏洞挖掘、Web安全、渗透测试、病毒逆向、溯源反制等系列视频课程

以上视频课程会在近期发布,欢迎各位扫码关注"哆啦安全"公众号、视频号

APP脱壳的分析

                                                                             【关注、点赞、分享是最大动力】

原文始发于微信公众号(哆啦安全):APP脱壳的分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月18日08:40:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APP脱壳的分析https://cn-sec.com/archives/832868.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息