首页
社区
课程
招聘
[原创]如何在NP下读写游戏内存及如何进入NP进程
发表于: 2007-1-4 13:28 76419

[原创]如何在NP下读写游戏内存及如何进入NP进程

2007-1-4 13:28
76419
收藏
免费 8
支持
分享
最新回复 (68)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
谢谢  我已经将这个收藏了
2007-2-8 00:47
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
27
居然搜索出这篇好文。嘿嘿
2007-3-26 19:32
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
28
网游也可以用内存修改?!
太好了,又多了新思路
2007-3-26 21:09
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
正在学习 希望LZ在出些NP相关的文章
2007-3-28 10:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
楼主太强了,学习!
2007-3-28 12:07
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
31
试了一下ring3。修改ImageBase到np认可的范围后直接调用复制的ZwOpenProcess等函数可以绕过npggnt.des和ssdt hook,但还是要失败。返回c0000022。可以确认是ssdt中的真实NtOpenProcess返回的。提升权限为SYSTEM也不行。估计是内部结构被破坏了。
2007-4-26 17:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
好文章.顶一下.谢谢分享
2007-4-30 17:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
+++=======++++++++++==========+++++++++++============++++++++++++++===========+++++++++++++
2007-4-30 23:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
借这里向各位新老朋友祝福,祝大家五一快乐,全家身体健康,万事如意。
2007-5-1 12:30
0
雪    币: 59
活跃值: (53)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
35
哪儿可以下载键盘的模拟驱动程序呢,
2007-6-16 13:12
0
雪    币: 963
活跃值: (828)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
历史来看NP曾经出过无数版本..
从最早的驱动反HOOK..到现在的3分钟检测..

一次比一个变态..一次比一个可怕..

所以做为技术人员..我们深入研究NP的各种技术..同时发现NP的技术大部分依赖驱动..但由于WIN32这个笼子...NP本身开始走向一个衰败和极端...

首先..说一下NP本身的一些技术..和一些漏洞
(目前除了3分钟检测..我几乎都能挂掉 因为3分钟检测属于完全内置与游戏代码中...NP的特征库不全..有时候无法区分版本..所以挂起来很困难)...

NP可以说有众多版本..反外挂的等级也层次不起...
其中最容易也简单的..应该是2001~2003版本(部分2003版本带3分钟检测..例如精灵)

用年号区分...是因为NP本身的技术是没有太大的长进的..只是每年适当的更新

例如..众多版本都使用NP的驱动挂接API函数..这个和当初所谓的检测导入表差距比较大...
我个人也模仿NP的一些假想技术开发过一些反外挂程序..其中对于检测到处表..可以说是非常的占资源..属于不太可能实现的一种手段..因为你要去定位..但是这个对于CPU开销太大

我也在考虑NP是如何检测一个程序是否是非法程序的呢?

做几个试验..启动带NP的游戏..之后启动GM8或WPE..你会发现这些程序自动关闭...

其实要做起来也简单..JMP API函数....当程序要读写内存,注入进程时..这个时候API已经跳到了NP自己的地址空间..之后NP只需要结束目标程序即可..(如果是DLL..就释放该DLL)简单D很~!

那么如何破解呢?我们开发过驱动的应该知道..启动本身需要加载之后才可以起效....之后程序结束..驱动同时卸载...(如果需要可以参考WINIO的驱动加载部分)

这个过程大概需要1秒前后(好机器更快)..但是如果你的外挂是全局HOOK..这个时候比NP要快..已经自动挂接到全部的系统进程当中(前提是再游戏启动NP前启动外挂)...着就是NP最大的局限..也是NP无法攻克的局限..

为了兼容NP只有60%左右的驱动...

其实想挂掉NP.只要挂掉NP加载即可..但是3分钟检测如果是再程序内部被封装..这个时候你即便挂掉NP..3分钟检测依然会启动..游戏本身没什么用..

NP一般是在启动程序时的一个CALL..之后加载NP..只要耐心跟踪..首先确认哪个CALL LAOD NP..跟进入..再确认哪个CALL LOAD NP..依次..直到彻底NOP掉NP为止..

所以要看NP的版本来确定采用什么技术来挂掉NP~!

同时需要你的汇编非常好~!

以上是一些经验和技术理论..
2007-7-19 23:05
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
37
Ring0读写进程+自己手工修改context,完全忽略NP
2007-7-21 09:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
38
好文~~支持一下
2007-7-22 19:30
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
完全实力型选手
2007-7-23 05:21
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
强人那!
我拜!
2007-7-28 23:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
现在游戏用NP保护就是难弄!!

我是用VB的,看楼主的C看不懂!
2007-7-29 01:55
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
望尘莫及!
谢谢您的分享!
2007-8-23 18:09
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
怎么现在才有人发? 早在A3时代我就用这招了。可以启一个线程或者自己响应键盘事件来控制操作内存,不过有一点,我还是没有饶过NP的自检校验代码段.如果把检查的代码NOP掉了会认为用外挂而踢掉线.所以最好连他的checksum都搞定
2007-8-24 10:16
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
正需要,THANKS VM
2007-9-5 10:16
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
45
现在不行了...就算进入游戏的进程,也不能读游戏内存..但是我在测试的过程中,dll进入游戏进程后,OpenProcess打开游戏进程还是成功的..ReadProcessMemoery这个函数就不成功了,貌似是因为NP在r0下做了手脚..ReadVirtualMemory实际上调用NtReadVirtualMemory:

.text:7C8021CC ReadProcessMemory proc near             ; CODE XREF: GetProcessVersion+2F2FDp
.text:7C8021CC                                         ; GetProcessVersion+2F31Cp
.text:7C8021CC                                         ; GetProcessVersion+2F343p
.text:7C8021CC                                         ; Toolhelp32ReadProcessMemory+26p
.text:7C8021CC
.text:7C8021CC hProcess        = dword ptr  8
.text:7C8021CC lpBaseAddress   = dword ptr  0Ch
.text:7C8021CC lpBuffer        = dword ptr  10h
.text:7C8021CC nSize           = dword ptr  14h
.text:7C8021CC lpNumberOfBytesRead= dword ptr  18h
.text:7C8021CC
.text:7C8021CC                 mov     edi, edi
.text:7C8021CE                 push    ebp
.text:7C8021CF                 mov     ebp, esp
.text:7C8021D1                 lea     eax, [ebp+nSize]
.text:7C8021D4                 push    eax
.text:7C8021D5                 push    [ebp+nSize]
.text:7C8021D8                 push    [ebp+lpBuffer]
.text:7C8021DB                 push    [ebp+lpBaseAddress]
.text:7C8021DE                 push    [ebp+hProcess]
.text:7C8021E1                 call    ds:NtReadVirtualMemory

NtReadVirtualMemory:

NtReadVirtualMemory proc near           ; CODE XREF: LdrFindCreateProcessManifest+1CCp
.text:7C92E2BB                                         ; LdrCreateOutOfProcessImage+7Cp
.text:7C92E2BB                                         ; RtlReadOutOfProcessMemoryStream+2Ep
.text:7C92E2BB                                         ; LdrFindCreateProcessManifest+1612Fp
.text:7C92E2BB                                         ; LdrFindCreateProcessManifest+1691Ep
.text:7C92E2BB                                         ; LdrFindCreateProcessManifest+1697Bp ...
.text:7C92E2BB                 mov     eax, 0BAh       ; NtReadVirtualMemory
.text:7C92E2C0                 mov     edx, 7FFE0300h
.text:7C92E2C5                 call    dword ptr [edx]
.text:7C92E2C7                 retn    14h
.text:7C92E2C7
.text:7C92E2C7 NtReadVirtualMemory endp

最后他还是要进ring0...不知道恢复ssdt,ReadVirtualMemory能否读游戏内存?
2007-11-6 22:10
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
46
好文,顶顶
2007-11-7 16:38
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
经典收藏.....
2007-11-8 03:01
0
雪    币: 213
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
好的, 谢谢分享
2007-12-5 18:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
留个名,以后再详细拜读
2007-12-9 14:18
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
1059以后的NP好像完全无效了吧...
2007-12-13 23:59
0
游客
登录 | 注册 方可回帖
返回
//