news 2026/5/30 13:31:37

逆向分析某手游基于异常的内存保护

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
逆向分析某手游基于异常的内存保护

总结

通过mprotect设置内存为 PROT_NONE 并使用sigaction注册信号处理接管访问被保护内存的SIGSEGV

随后在sigsegv_handler进行了一系列解析指令、模拟执行指令、回写解密数据的操作:

1、解析异常地址并判断是否属于被保护范围,解析ARM引发SIGSEGV的指令,获取操作数、寄存器信息

2、读取context中加密的寄存器值,解密数据并将其写回异常context

3、构造shellcode实现一个模拟单步,传入解密后的context,使用context结构中的寄存器信息单步执行

4、shellcode会将写入的单步指令的执行结果回写到context中,此时便可以跳过异常指令直接恢复执行

至此数据解密完成

分析

一、追踪目标代码

进入游戏对局后发现,全局World地址无法读取到正确的数据,查看maps发现该地址vma属性已经被设置成---p

既然无法访问,那么进程自身是如何访问的呢?遂在内核接管了下 mprotect 和 sigaction,发现游戏设置了SIGSEGV (11) 的 signal_handler 用来处理内存访问异常

二、SIGSEGV处理概览

ARM指令编码规则:https://developer.arm.com/documentation/ddi0602/2024-12/Index-by-Encoding

三、异常指令分类处理

1、处理 Loads & Stores Instructions

解析指令,拿到指令用到的的寄存器、立即数等信息,为下一步的模拟执行准备context信息

读取异常context中的用到的加密值,解密值并写回异常context

随后调用sub_75A299FDA0加载模拟执行用到的shellcode,填充需要模拟单步的指令

sub_75A299FDA0会mmap申请一块内存,写入原始的shellcode包,详见下文

刷新模拟单步的shellcode所在的指令和数据缓存,使用修正后的异常context执行shellcode,并从shellcode执行后的context中获取指令执行结果

将结果写回到SIGSEGV上下文寄存器中,修改PC跳过指令继续执行

2、处理 SYS Instructions

与直接读写内存的指令类似,解析指令拿到指令隐性使用到的寄存器值,解密值并将其写回context,随后直接模拟执行来修正异常指令执行后的context并跳过该指令

3、模拟执行shellcode构造

使用mmap申请一段rwx内存并写入shellcode,shellcode实现了加载context到物理寄存器,执行需要单步的指令,将物理寄存器写回context结构

代码预置了四个类似的shellcode,唯一区别是解析shellcode参数时用到的寄存器分别为X0、X1、X2、X3,其目的是为了防止解析参数的寄存器影响到模拟执行结果

构造完成后将shellcode地址存到线程相关的结构上,类似Windows的TEB,只不过这个是te*safe自己构造的

其中一个shellcode具体内容如下,其他的shellcode除存储context的寄存器不同外逻辑一致

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 22:54:27

Java全栈工程师的面试实战:从基础到高阶的完整技术演进

Java全栈工程师的面试实战:从基础到高阶的完整技术演进 1. 面试者基本信息 姓名:林浩然 年龄:28岁 学历:硕士 工作年限:5年 工作内容: 负责公司核心业务系统的后端开发,使用Spring Boot和Vue3构…

作者头像 李华
网站建设 2026/5/30 12:20:26

YOLOFuse多GPU训练支持情况说明:分布式训练可行性分析

YOLOFuse多GPU训练支持情况说明:分布式训练可行性分析 在智能安防、自动驾驶和夜间监控等现实场景中,光照条件常常极为恶劣——黑夜、雾霾、烟尘遮挡让传统的可见光摄像头力不从心。这时候,红外(IR)成像的优势就凸显出…

作者头像 李华
网站建设 2026/5/30 12:19:12

YOLOFuse火车站旅客遗失物品识别:智能广播寻物

YOLOFuse火车站旅客遗失物品识别:智能广播寻物 在现代化火车站里,每天都有成千上万的旅客匆匆赶路。嘈杂的人声、闪烁的灯光、频繁进出的人流,构成了一个高度动态且复杂的环境。在这种场景下,一件被遗忘在座椅上的背包&#xff0c…

作者头像 李华
网站建设 2026/5/30 12:19:58

YOLOFuse稻田灌溉管理:土壤湿度与作物长势联合判断

YOLOFuse稻田灌溉管理:土壤湿度与作物长势联合判断 在南方某大型水稻种植基地,清晨的薄雾尚未散去,无人机已开始例行巡田。可见光相机拍下的画面模糊不清,但红外热像仪却清晰捕捉到田块中几处异常高温区域——这些“热斑”正暗示…

作者头像 李华
网站建设 2026/5/29 8:21:07

YOLOFuse罐头食品封口检查:胀罐隐患提前发现

YOLOFuse罐头食品封口检查:胀罐隐患提前发现 在食品生产线上,一个看似不起眼的“鼓起来”的罐头,背后可能隐藏着微生物污染、密封失效甚至食品安全事故的风险。传统质检依赖人工目视或单一视觉系统,在烟雾弥漫、光照不均的车间环…

作者头像 李华
网站建设 2026/5/29 21:21:37

Java Web 协同过滤电影推荐系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着互联网技术的快速发展和用户需求的多样化,个性化推荐系统已成为提升用户体验的关键技术之一。电影推荐系统通过分析用户的历史行为和偏好,能够为用户提供个性化的电影推荐,从而增强用户粘性和满意度。协同过滤算法作为推荐系统的核心…

作者头像 李华