NP用户层监视原理

NP启动后通过WriteProcessMemory跟CreateRemoteThread向所有进程注入代码(除了系统进程smss.exe),代码通过np自己的LoadLibrary向目标进程加载npggNT.des。npggNT.des一旦加载就马上开始干“坏事”,挂钩(HOOK)系统关键函数如OpenProcess,ReadProcessMemory,WriteProcessMemory,PostMessage等等。挂钩方法是通过改写系统函数头,在函数开始JMP到npggNT.des中的替换函数。用户调用相应的系统函数时,会首先进入到npggNT.des模块等待NP的检查,如果发现是想对其保护的游戏进行不轨操作的话,就进行拦截,否则就调用原来的系统函数,让用户继续。

 

C下面是NP启动前user32.dll中的PostMessageA的源代码(NP版本900,XP sp2)

 

8BFF MOV EDI,EDI

55 PUSH EBP

8BEC MOV EBP,ESP

56 PUSH ESI

57 PUSH EDI

8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C] 6 o; B/ {: W  l# {# R; Z  k; K
8BC7 MOV EAX,EDI
SUB EAX,145 

 

以上是头几下,而下面是NP启动后user32.dll中的PostMessageA的源代码(NP版本900,XP sp2)

E9 A69AB8CD JMP npggNT.458A6630

56 PUSH ESI 7 G1 u% T. u/ f4 r7 @+ B. w
57 PUSH EDI
8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C] , U

8BC7 MOV EAX,EDI !

2D 45010000 SUB EAX,145

 

通过对比我们可以发现,NP把PostMessageA函数头原来的8BFF558BEC五个字节改为了E9A69AB8CD,即将

MOV EDI,EDI

PUSH EBP

MOV EBP,ESP

三条指令改为了JMP npggNT.458A6630。所以用户一旦调用PostMessageA的话,就会跳转到npggNT.des中的458A6630中去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值