android 脱壳 虚拟机,一种基于Android虚拟机的沙箱脱壳方法及系统与流程

f90f7bf66da34681d6a18cbfef8f5663.gif

技术特征:

1.一种基于Android虚拟机的沙箱脱壳方法,其特征在于,包括以下步骤:

启动Android虚拟机,将系统的类加载器替换为预定义类加载器,加载用于沙箱脱壳的自定义Android虚拟机代码包,得到可执行Android脱壳代码的运行环境,其中,所述自定义Android虚拟机代码包用于为应用程序执行提供接口,并为脱壳流程提供入口;

在虚拟机中读取待脱壳的目标应用的包名和主Acitivity名,并根据包名和主Acitivity名构建目标应用的上下文环境和资源访问接口;

构架目标应用的资源访问接口,模拟目标应用的正常执行流程,将与目标应用匹配的上下文环境传递进目标应用的启动参数中,在沙箱中对目标应用进行程序代码解密,得到目标应用的程序代码。

2.一种基于Android虚拟机的沙箱脱壳系统,其特征在于,包括:

执行控制模块,用于启动Android虚拟机,将系统的类加载器替换为预定义类加载器,加载用于沙箱脱壳的自定义Android虚拟机代码包,得到可执行Android脱壳代码的运行环境,其中,所述自定义Android虚拟机代码包用于为应用程序执行提供接口,并为脱壳流程提供入口;

系统框架模块,在虚拟机中读取待脱壳的目标应用的包名和主Acitivity名,并根据包名和主Acitivity名构建目标应用的上下文环境和资源访问接口;

脱壳模块,构建目标应用的资源访问接口,调用目标应用执行入口,模拟目标应用的正常执行流程,将与目标应用匹配的上下文环境传递进目标应用的启动参数中,在沙箱中对目标应用进行程序代码解密,得到目标应用的程序代码。

3.根据权利要求1所述的方法或权利要求2所述的系统,其特征在于,启动Android虚拟机时还包括构建应用执行所需的基本接口的方法,该方法包括以下步骤:

创建虚拟机对象,在内存结构中初始化用于查找类的缓存;

在虚拟机中创建用于构建基本接口的基础类;

加载Android系统框架层代码包,根据基础类构建Android应用执行时能够直接调用的基本接口。

4.根据权利要求1所述的方法或权利要求2所述的系统,其特征在于,将系统的类加载器替换为预定义类加载器的方法为:

Android虚拟机启动时指定系统的类加载器的全局变量,判断系统查找类的方式;

若为无类加载器的方式,在全局变量中指定自定义Android虚拟机代码包,并查找类;

若为使用类加载器的方式,构造预定义类加载器并替换系统的类加载器,通过该预定义的类加载器查找自定义Android虚拟机代码包的路径,加载自定义Android虚拟机代码包。

5.根据权利要求1所述的方法或权利要求2所述的系统,其特征在于,自定义Android虚拟机代码包的实现方法为:

获取自定义Android虚拟机代码包的jar文件,存放到与目标应用同名的DexFile结构体中;

将DexFile结构体存放到全局的ClassPath扩展变量中;

执行查找系统类的流程,从全局变量中通过类名查找系统类;从全局的扩展变量中查找自定义Android虚拟机的类,并将其添加到哈希表中,下次查找该类时直接从哈希表中获取;

若为自定义Android虚拟机未实现的类,从全局变量中的系统类进行替换;若为与系统类同名的类,用自定义Android虚拟机的类替换系统类。

6.根据权利要求1所述的方法或权利要求2所述的系统,其特征在于,所述模拟的目标应用的程序代码在内存中的存放形式为DexFile结构体,包括dex文件内存映射指针,dex文件各区域地址指针和区域大小,以及执行时期直接相关的结构体DexClassDef和Method。

7.根据权利要求6所述的方法,其特征在于,在沙箱中对模拟的目标应用进行程序代码解密的方法为:

获取与目标应用同包名的DexFile结构体;

修复内存映射文件的dex文件魔术字段,内存区域地址指针根据连续性偏移大小计算指针位置;

根据模拟的目标应用的类找到DexClassDef结构体,获取真实的类代码,并修复区域大小;

根据模拟的目标应用的类找到Method结构体,修复单个函数的代码区域,并修复区域大小;

根据修复后的代码区域,修复dex文件结构的头部,得到完整的解密的程序代码。

8.根据权利要求6所述的系统,其特征在于,在沙箱中对模拟的目标应用进行程序代码解密的方法为:

获取与目标应用同包名的DexFile结构体;

修复内存映射文件的dex文件魔术字段,内存区域地址指针根据连续性偏移大小计算指针位置;

根据模拟的目标应用的类找到DexClassDef结构体,获取真实的类代码,并修复区域大小;

根据模拟的目标应用的类找到Method结构体,修复单个函数的代码区域,并修复区域大小;

根据修复后的代码区域,修复dex文件结构的头部,得到完整的解密的程序代码。

9.根据权利要求1所述的方法或权利要求2所述的系统,其特征在于,所述的Android虚拟机为dalvik虚拟机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值