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,理论上只要绕过就可以过保护,分析已经完成,以后再写代码。 |