debra 发表于 2021-5-4 21:59:48

散谈驱动过游戏保护TP那点事+源码


声明:本文只为研究技术,请所有童鞋切勿使用本文之方法做下那天理难容罪恶不舍之坏事。

   既是研究游戏保护,那么总要有一个研究对象。本文就以TMD_TP这款游戏保护为例进行分析讲解。请勿对号入座,如有雷同之处。纯属反汇编引擎之错误,不关我的事!

   关键字:DNF 驱动保护

tmd_TP也就是国内比较流行的游戏D_N*F的游戏保护。
它在ring0层一共HOOK了几个地方和一些其他的工作。来达到保护的目的

下面是简报:

NtOpenThread //防止调试器在它体内创建线程
NtOpenProcess //防止OD等在进程列表看到它
KiAttachProcess //防止其他软件附加它
NtReadVirtualMemory //防止别人读取它的内存
NtWriteVirtualMemory //防止别人在它的内存里面乱写乱画
KDCOM.dll:KdReceivePacket //这两个是COM串口的接受和发送数据
KDCOM.dll:KdSendPacket //主要用来方式别人双机调试

使用了KdDisableDebugger来禁用双机调试
.text:010025F0               jz      short loc_1002622
.text:010025F2               call    sub_10022A4
.text:010025F7               call    ds:KdDisableDebugger
.text:010025FD               push    offset byte_10022EC
.text:01002602               push    esi
.text:01002603               push    offset byte_10022DC
.text:01002608               push    edi
.text:01002609               push    dword_100CF24

并对debugport进行了疯狂的清零操作
甚至还包括EPROCESS+70\+74\+78等几处位置


处理的手段通常都是向64端口写入FE导致计算机被重启
.text:01001665               mov   al, 0FEh
.text:01001667               out   64h, al         ; AT Keyboard controller 8042.
.text:01001667                                       ; Resend the last transmission
.text:01001669               popa
.text:0100166A               retn


下面简单看下他关键的几个HOOK:
KiAttachProcess   


NtReadVirtualMemory


NtWriteVirtualMemory


NtOpenThread


NtOpenProcess


其中,前3个直接恢复即可。
第4个有监视,直接恢复即刻重启
第5个和ring3有通信,直接恢复1分钟内SX非法模块

**** Hidden Message *****

yuntang 发表于 2024-12-24 00:55:58

有意思啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
页: [1]
查看完整版本: 散谈驱动过游戏保护TP那点事+源码