免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

XX游戏过保护分析(实例B)

A、分析游戏进程保护
     B、分析游戏数据读取保护
     C、分析游戏数据写入保护
课时:19分

OpenProcess         //NtOpenProcess+0x21E
OpenThread          //NtOpenThread+0x214
DebugActiveProcess  //KeAttachProcess+0x41
ReadProcessMemory   //NtReadVirtualMemory+0
WriteProcessMemory  //NtWriteVirtualMemory+0

KeAttachProcess+D6  //KiAttachProcess

KdDebuggerEnabled 状态标志位 byte
KdDisableDebugger
KdEnableDebugger

//b8 a4 78 f3 a5 ff e0 e8 36 79 f8 ff
mov eax, A5F378A4
jmp eax

SSDT 指向自己函数
执行前7字节指令
JMP  NtReadVirtualMemory+7

//b8 ce 79 f3 a5 ff e0 e8 2c 78 f8 ff
mov eax, A5F378A4
jmp eax

KeAttachProcess=0x804F9B73-0x804f9b32=0x41
KiAttachProcess=0x804F9A08

===============================

笔记:
还是要继续讲一下原理,比如OD附加程序的过程,是通过OpenProcess打开进程,然后通过DebugActiveProcess来调试,用ReadProcessMemory来读取进程,再用WriteProcessMemory来进行写入下断等,每个函数对应驱动中的函数教案中教案中已经写出。另外还有一个调试标志位是导出的变量,如果是1则可以调试。

打开工具看一下ReadProcessMemory函数发现已经被HOOK,我们要跳过它之前的7个字节,同样WriteProcessMemory也同样被HOOK了。看一下KeAttachProcess函数已经被HOOK再看一下KiAttachProcess函数就在下面也被HOOK。因为有检测,如果直接恢复则会蓝屏。

再仔细查看一下代码,是通过CALL跳转而不是JMP。总共找到5个函数的几处被HOOK,理论上只要绕过就可以过保护,分析已经完成,以后再写代码。

返回列表