首页
社区
课程
招聘
[原创]逆向分析某手游基于异常的内存保护
发表于: 2025-12-28 20:34 19220

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

R0g 活跃值
2
2025-12-28 20:34
19220

去年元旦心血来潮逆向了一下传说中保护最强的手游,看完保护方案之后一直没时间把代码搬出来,一年后整理资料时偶然看到以前的记录,遂发布

分析日期:2025-01-08


通过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 用来处理内存访问异常

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

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

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

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

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

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


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-12-28 22:13 被R0g编辑 ,原因:
上传的附件:
收藏
免费 14
支持
分享
最新回复 (9)
雪    币: 104
活跃值: (7361)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
tql
2025-12-29 09:55
0
雪    币: 267
活跃值: (1836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
nb
2025-12-29 10:40
0
雪    币: 455
活跃值: (877)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

是inca 的nProtect

最后于 2025-12-29 12:49 被bbpk编辑 ,原因:
2025-12-29 12:46
0
雪    币: 2257
活跃值: (6454)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
bbpk 是inca 的nProtect吗
不是呢
2025-12-31 13:00
0
雪    币: 1293
活跃值: (922)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
666
2025-12-31 17:16
0
雪    币: 280
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
有没有大佬会过瓦手 何平 八宝粥的检测 有会的dd我 长期合作
2026-1-4 18:20
0
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
学到了
2026-1-5 17:38
0
雪    币: 1553
活跃值: (3832)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
我只能说是, 图片的马赛克还没有打到位, com.tencent 呼之欲出, 律师函警告
2026-1-6 23:28
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
求联系!!!!!!!!!!!!!
2026-1-7 21:55
0
游客
登录 | 注册 方可回帖
返回