散谈驱动过游戏保护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 *****
有意思啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
页:
[1]