[发明专利]一种安卓端抽取壳的实现方法及系统在审
申请号: | 202110647219.0 | 申请日: | 2021-06-10 |
公开(公告)号: | CN113378123A | 公开(公告)日: | 2021-09-10 |
发明(设计)人: | 刘德建;丁铖;何巍巍;陈宏展 | 申请(专利权)人: | 福建省天奕网络科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 福州旭辰知识产权代理事务所(普通合伙) 35233 | 代理人: | 程勇 |
地址: | 350212 福*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 安卓端 抽取 实现 方法 系统 | ||
1.一种安卓端抽取壳的实现方法,其特征在于,所述方法包括以下步骤:
步骤S1、对源APK的函数进行抽取,对Dex文件的代码结构进行解析;
步骤S2、通过指定类的指定方法检索到其代码结构体信息,拿到被抽取函数的codeltem;
步骤S3、通过拿到被抽取函数的指令个数和指令偏移地址,构造空指令集,覆盖原指令,保存函数指令;
步骤S4、重新计算Dex文件中的校验和checksum值,回填至被抽取的函数中;
步骤S5、函数回填后,禁用掉Dex文件中的dex2oat,hook loadmethod函数拿到每个方法的ArtMethod对象指针和函数指令;
步骤S6、借助ArtMethod对象指针筛选和函数指令定位到的被抽取函数,回填被抽空函数的原指令。
2.根据权利要求1所述的一种安卓端抽取壳的实现方法,其特征在于:所述步骤S2进一步具体为:根据Dex文件的结构遍历Dex文件,通过指定类的指定方法检索到其代码结构体信息,就是根据Dex文件的结构,逐字节解析Dex文件,拿到被抽取函数的codeItem和函数指令。
3.根据权利要求1所述的一种安卓端抽取壳的实现方法,其特征在于:所述步骤S3进一步具体为:所述被抽取函数的codeltem的组成包括:ushort outsSize:代码调用其它方法时需要的参数个数;ushort triesSize:try_item结构的个数;uint debugInfoOff:指向本段代码的debug信息存放位置,是一个debug_info_item结构偏移地址;uint insnsSize:指令列表的大小,以16-bit为单位ushort insns:代码指令;ushort paddding:值为0,用于对齐字节;trylten tries:异常相关;encodedCatchHandlerList异常相关;在每个函数方法中,由于codeItem前16个字节是固定的,所以构造空指令直接从代码指令开始,将此函数方法后面的指令全部置为空指令,也就是说此方法的代码指令以及后面部分在16进制下面全部为00;然后将置空指令部分的指令保存。
4.根据权利要求1所述的一种安卓端抽取壳的实现方法,其特征在于:所述步骤S4进一步具体为:由于Dex文件在加载的时候安卓的art模式会对Dex文件的校验和checksum值进行校验,校验和不对的话就会停止加载,所以校验和checksum值需要重新计算;将抽取方法之后的Dex文件重新计算校验和checksum值,拿到重新计算的校验和checksum值回填覆盖原来的校验和checksum值。
5.根据权利要求1所述的一种安卓端抽取壳的实现方法,其特征在于:所述步骤S5进一步具体为:由于Dex文件中的dex2oat预编译过程会产生完整的Dex文件,所以需要禁用掉Dex文件中的dex2oat预编译过程,将execve函数方法在内核层hook就能禁用掉Dex文件中的dex2oat预编译过程。
6.根据权利要求1所述的一种安卓端抽取壳的实现方法,其特征在于:所述步骤S6进一步具体为:在系统函数loadmethod函数执行时,根据ArtMethod对象指针得到函数指令,然后根据筛选到被抽空函数,根据被抽空函数的ArtMethod对象指针,找到被抽空函数在内存中的codeItem偏移,将保存的原指令回填回去。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建省天奕网络科技有限公司,未经福建省天奕网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110647219.0/1.html,转载请声明来源钻瓜专利网。