首页
论坛
专栏
课程

[商业保护] [原创]反NP监视原理(+Bypass NP in ring0)

2007-1-3 11:58 81836

[商业保护] [原创]反NP监视原理(+Bypass NP in ring0)

2007-1-3 11:58
81836
最新回复 (91)
yxkcat 2007-1-15 22:25
51
0
期待下篇,学习了。
stupidass 2007-1-15 23:25
52
0
跳过r0保护我现在没有其他方法,只有一个办法,已驱动之道还施驱动彼身.以NP 更改了的SSDT中的 ZwOpenProcess为例,本来系统应该调用的服务会映射到NtOpenProcess,但是NP的驱动sys把SSDT中该服务对应的函数指针改成了NP_OpenProcess,但是你要清楚的知道,无论NP怎么做处理,在最后始终会调用NtOpenProcess,并且NP本身没有对他的驱动层代码做任何校验和保护.接下来我们要做的事情就是自己写个驱动,加载一个服务,在驱动中更改NP驱动层代码,只需要在NP_OpenProcess开始处直接跳转到NtOpenProcess就可以了.
NP的所有驱动层的SSDT都可以这样做.
steak 2 2007-1-18 11:11
53
0
最初由 stupidass 发布
跳过r0保护我现在没有其他方法,只有一个办法,已驱动之道还施驱动彼身.以NP 更改了的SSDT中的 ZwOpenProcess为例,本来系统应该调用的服务会映射到NtOpenProcess,但是NP的驱动sys把SSDT中该服务对应的函数指针改成了NP_OpenProcess,但是你要清楚的知道,无论NP怎么做处理,在最后始终会调用NtOpenProcess,并且NP本身没有对他的驱动层代码做任何校验和保护.接下来我们要做的事情就是自己写个驱动,加载一个服务,在驱动中更改NP驱动层代码,只需要在NP_OpenProcess开始处直接跳转到NtOpenProcess就可以了.
NP的所有驱动层的SSDT都可以这样做.


一般调试游戏都是附加的多.这种方法可以附加吗?
SCSHWXL 2007-1-18 12:35
54
0
还好我什么都看不懂。
stupidass 2007-1-19 13:14
55
0
最初由 steak 发布
一般调试游戏都是附加的多.这种方法可以附加吗?

显然可以attach啊.在NP运行的情况之所以不能附加或者附加会失败是因为他在SSDT中钩了ZwOpenProcess,ZwWriteVirtualMemory,ZwVirtualProtect,ZwIoDeviceControl,如果你用上面说的方法放这些SSDT钩子都失效,那么你就能够用调试工具正常的找到进程,并正常的进行attach(因为调试工具ATTACH的过程中会用这些API的.)
精灵猪 2007-1-22 15:39
56
0
是个好思路 如果在这个思路下扩展威力巨大 不过NP会隐藏保护进程给调试带来很多不方便 我研究了好几个星期了 一直没头绪 期待下文
苦茶 2007-2-8 22:19
57
0
复制系统函数到自己的代码是下策,动态分配内存,交叉复制整个系统模块

做法很简单,系统四个DLL,kernel32.dll,gdi32.dll,user32.dll,ntdll.dll,外加自己一个功能模块的DLL,全部从内存中移位运行

DLL模块都有重定位表,且系统DLL都不加壳保护,所以可直接利用重定位表将系统DLL在内存中复制后进行修正,一定要修正,而且是交叉修正,除ntdll.dll直接与底层通信不需要修正外,其余3个系统DLL是必须要修正的

VirtualAllocEx为四个DLL分配空间,返回的值作为四个DLL的HMODULE,复制四个DLL的全部字节到该空间,修正各个输入输出节的偏移,不修正,其调用依然调用系统内存区函数,修正后,彼此交叉调用,完全断绝NP监视,自然,NP如果发展到驱动底层拦截ntdll.dll的ring0调用,那就当我没说这个方法了

要让自己的代码不受NP干扰,修改进程的内存,有很多方法都可以实现,注入DLL也好,进程间访问也罢,系统都不会偏袒哪一方,系统了解了,除了直接底层驱动干扰,又还受什么影响呢.
qmillion 2007-3-4 11:23
58
0
顶一下.
文中讲到建造自己的函数,这个方法对某些函数有效,但对SendInput却无效,当无NP时,SendInput能够正常工作,但NP启动后SendInput返回0,用GetLastError也返回0,也就是说NP不但Hook了SendInput,在底层还作了手脚
oooooooo 1 2007-3-5 01:49
59
0
谢谢楼主,学习,学习...
Isaiah 10 2007-3-5 02:02
60
0
但是NP在ring0确实有拦截。。。
kagayaki 2007-3-5 04:50
61
0
帮顶!!!!!!!!!!我也想知多点!!!!!!!
曾半仙 9 2007-3-5 11:27
62
0
np不就是个毒么....
sony的rootkit就行不通, np的公关能力还比sony强么?
堕落天才 10 2007-3-7 11:57
63
0
随着对NP的了解深入,发现这篇文章的谬论真不少啊!自己先汗一下!比如NP ring3 HOOK 系统函数根本就没有用到ReadProcessMemory、WriteProcessMemory、GetCurrentProcess等(不过NP ring3 HOOK的整个远程代码中还是少不了系统函数的,GameMon.des也没有全部做好保护),所以这篇文章所介绍的在GetCurrentProcess设陷阱的方法依然管用(NP版本961)。真是让高手见笑了,不过我也不打算改,就让它作为一个成长的见证吧!现在反npggNT.des注入的方法真是多如牛毛,最主要原因就是GameMon.des向目标进程注入npggNT.des后,不检测是否已经成功,也不会不断检测是否被卸载,所以我们想怎么搞都行。不过反npggNT.des注入的意义并不是很大(不能模拟鼠标键盘,不能直接打开游戏进程,不能直接读写游戏内存,呵呵,还有什么可干的呢?),在ring0反HOOK才是正道。
   对于我来说,NP是一位很好的老师,想当初(5个月前),从不懂Windows核心编程、不懂汇编,到现在学ring0 HOOK、搞逆向,都是多得它的指引。 多探讨技术,少思考利益,可能会更好点。
Isaiah 10 2007-3-7 13:53
64
0
看来搞定了吧?恭喜恭喜
smallpig 2007-3-9 11:21
65
0
最初由 堕落天才 发布
随着对NP的了解深入,发现这篇文章的谬论真不少啊!自己先汗一下!比如NP ring3 HOOK 系统函数根本就没有用到ReadProcessMemory、WriteProcessMemory、GetCurrentProcess等(不过NP ring3 HOOK的整个远程代码中还是少不了系统函数的,GameMon.des也没有全部做好保护),所以这篇文章所介绍的在GetCurrentProcess设陷阱的方法依然管用(NP版本961)。真是让高手见笑了,不过我也不打算改,就让它作为一个成长的见证吧!现在反npggNT.des注入的方法真是多如牛毛,最主要原因就是GameMon.des向目标进程注入npggNT.des后,不检测是否已经成功,也不会不断检测是否被卸载,所以我们想怎么搞都行。不过反npggNT.des注入的意义并不是很大(不能模拟鼠标键盘,不能直接打开游戏进程,不能直接读写游戏内存,呵呵,还有什么可干的呢?),在ring0反HOOK才是正道。
对于我来说,NP是一位很好的老师,想当初(5个月前),从不懂Windows核心编程、不懂汇编,到现在学ring0 HOOK、搞逆向,都是多得它的指引。 多探讨技术,少思考利益,可能会更好点。


看见最近堕落天才对NP做了不少分析,还是挺有见解的. 小弟不才,作了一个某游戏的内挂, 不过这个游戏没有用NP来保护. 现在用np保护的游戏很多,小弟也有兴趣探讨一下如何搞定NP,并公布于众,以长我们民族外挂之志气.

如果,我们分析NP的目的是制作游戏内挂, 对于堕落天才兄弟的分析,我提几个问题。 首先明确,我们必须有一个技术可以自由的修改游戏的代码段,才可以实现数据包拦截等等功能。
1. 反npggnt.des注入别的非游戏进程有什么用处? 因为npggnt.des对于游戏进程本身的监控还是没办法解除,照样不能写游戏的代码段
2. 如果采用ring0 hook的功能,据我所知也不过就是hook一些内核函数,比如ntcreatefilea等等。 这样还是没有用处,解决不了问题

通过在np启动之前注入游戏进程的方法,还是很容易将一个dll或者直接是一段程序写入游戏的进程空间的。但是小弟的困惑是好像这些都无法对付np定时扫描游戏代码段的操作。

希望大虾出来指点,小弟感激不尽。抛砖引玉
堕落天才 10 2007-3-16 14:46
66
0
既然在zby的帖子里说开了,就把ring0绕NP加到这里吧,这样就更完整点。
zby 2007-3-16 15:28
67
0
非常感谢
我是雷锋 2007-3-17 01:13
68
0
继续学习~~~~~~~~
qqlqql 1 2007-3-22 11:54
69
0
Bypass NP in ring0 (2007年3月16日):
1,Add MyService
2,hook sysenter
3,SystemServiceID->MyServiceID
4,MyService JMP ->SystemService Function + N bytes(参考【原创】SSDT Hook的妙用-对抗ring0 inline hook  )

1、2、3 ->绕过NP SSDT检测
4       ->绕过NP 内核函数头检测

不错 不错 学习了
仙剑太郎 2 2007-3-23 11:23
70
0
后来加的才是正道...
gjku 2007-4-20 18:35
71
0
太感謝了
受用無窮
chinatme 2007-4-25 17:38
72
0
仁兄,学习你的了~,好东西~
lcy 2007-4-26 13:43
73
0
值得学习中了!!
baddog911 2007-4-27 16:18
74
0
**********************************************************************
Bypass NP in ring0 (2007年3月16日):
1,Add MyService
2,hook sysenter
3,SystemServiceID->MyServiceID
4,MyService JMP ->SystemService Function + N bytes(参考【原创】SSDT Hook的妙用-对抗ring0 inline hook  )

1、2、3 ->绕过NP SSDT检测
4       ->绕过NP 内核函数头检测

NP968下通过

**********************************************************************

绕过ssdt不用这么麻烦。问题在于新版np绕过了还是无法访问被隐藏进程,
NtOpenProcess返回C0000022(访问被拒绝)。
moodsky 8 2007-4-27 17:47
75
0
收藏一下!!!!!!
Ajampie 2007-4-27 19:17
76
0
文章太好了,,值得收藏
lylrabbit 2007-4-29 09:16
77
0
学习,支持。
beehgf 2007-5-18 12:49
78
0
期待中,非常不错
wzanttm 2007-6-16 13:11
79
0
请问一个哪儿有键盘鼠标模拟驱动下载啊
wzanttm 2007-6-17 17:21
80
0
哪里可以下载,那个模拟键盘驱动啊,
郁闷啊,拿来写外挂!!!!
阿酷 2007-8-14 16:08
81
0
非常感謝您的教學,我將此文章轉到
http://bbs.8855.com.tw/viewthread.php?tid=61034&extra=page%3D1
並註明看雪論壇以及墮落天才原創
woohyuk 2007-8-15 18:30
82
0
真的很不错,很用心,期待下文
original 2007-8-15 21:47
83
0
看完了  支持中 继续吧
DazzleJ 2007-8-16 03:09
84
0
如此强文不得不收藏.....
fmpfreh 2007-8-16 09:19
85
0
谢谢!学习中!
很是佩服!
方程 2007-9-15 01:32
86
0
兄弟,顶上去啊。。。。继续啊。。
jpinglove 2007-10-6 00:46
87
0
这篇文章要是不收藏那太可惜了!
tglxftc 2007-11-6 21:13
88
0
除了顶,还能干什么!!!!!!!!
combojiang 26 2007-11-7 13:51
89
0
好文,顶
DKJOLIN 2007-11-16 15:39
90
0
关键是我看不懂啊。。。哎。。要把汇编学好啊。哎。。
popeylj 6 2007-12-4 14:01
91
0
看来对NP有“ 相当 ”的了解了
mbrshl 2008-1-12 10:31
92
0
好贴,顶一下!!!!
游客
登录 | 注册 方可回帖
返回