斑竹来看下  希望对你们 有帮助~~~~

社区服务
高级搜索
猴岛论坛DNF地下城与勇士斑竹来看下  希望对你们 有帮助~~~~
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
1个回复

斑竹来看下  希望对你们 有帮助~~~~

楼层直达
sunhuidiao

ZxID:2174320

等级: 少尉
举报 只看楼主 使用道具 楼主   发表于: 2009-05-21 0
检测到运行DNF需要调用的驱动及在HOST(限制了某些G下载网址)上做的手脚。 C?B7xK 
直接进入主题 L^=>)\R2$[ 
打开 EU+sTe> 
C:\WINDOWS\system32\drivers\etc %:??QD* 
右键HOST文件模式打开。 9orza<# 
会看到一些网址。。。诸如 JK1b 68n 
127.0.0.1 521dnf.cn %|;^[^7+}t 
127.0.0.1 776wg.cn iw#luHcJ 
B^6P 6, 
凡是出现的到网址,用浏览器是打开不了的。 @<};Bo' 
我是没做任何限制。但是每次运行DNF总是访问一下。。是个正常人都会知道TX在里面做了些手脚好让我们极大限度的不访问这些网址。 bDr'W  
解决方法。清空HOST的信息就可以了。或者用360强制修复一下IE。 :dK%=j*ZK 
a#kZY7s 
&;y(@e }D 
在说关于另外两个驱动问题 xd>2TW l# 
lRO4- y 
地址  fBQZ=zh 
C:\WINDOWS\system32 {2V=BDS|?K 
QJ$]~)w?H 
TesSafe.sys(这个不用说,看文件名大概都能猜出来,TX出的游戏都需要调用,难道里面做了规则在检测?) ag] nVE/ 
TesDrvPt.sys(这个也是一样,TX的的游戏大多是需要调用的,可能仅仅只是普通的驱动?哪个有工具的打开研究研究) /R^!~J50 
|R+=Yk&u 
^P]: etld9 
再聊聊钩子问题(Script.pvf ) X.JB&~/rO 
某叔叔说Script.pvf是个本地游戏运行数据文件(就是掉线了依旧可以行走打怪)以前的某些强化G可能是修改了这个文件吧。 BL]^+KnP 
掉线原因据说是Script.pvf文件大小问题。乐乐有强人的可以测试。哪天乐乐改版成钩子了。我想大家会很欢迎的吧。至少钩子的强大稳定我还是深有体会的。 NMOTWA }2 
60hf)er 
5|AZ/!rb 
另附 @UvjJ 
OY?uqP}c 
搞定QQ游戏系列(寻仙,DNF等等)驱动保护TesSafe.sys:转自广海 J@1(2%)|Z 
K_ RrSI&> 
1.用RKU看一下SSDT和SSDTShadow,发现SSDT并没有被HOOK,SSDTShadow HOOK了5个调用: }P^n / 
NtUserBuildHwndList c-gaK\u}j} 
NtUserFindWindowEx \)r#?qn4z; 
NtUserGetDC H#6J7\xcS 
NtUserGetDCEx 0k3^+#J 
NtUserGetForegroundWindow bv|v9_i 
r}XD{F}" 
想也不用想,肯定是为了防止其他软件找到他的窗口。 {_Wtk@ 
解决方法:在TesSafe加载前先加载自己的驱动,备份这5个调用的地址,等TesSafe加载后直接还原即可,或者直接用RKU还原,TesSafe并没有在这里加效验,所以比较容易。 > a^H7kp 
R[o KhU 
2.既然SSDT没有没HOOK,那么肯定有inline hook,用windbg看一下,发现被inline hook的调用有如下几个: |"l g4S% 
NtReadVirtualMemory _Z9I') 
NtWriteVirtualMemory _pk=IHGsB 
NtOpenProcess + 0x2xx Call ObOpenObjectByPointer处 Xa%Z0% { 
NtOpenThread + 0x1xx Call ObOpenObjectByPointer处 >Utn[']~ 
KiAttachProcess GAPZt4Z2 
OhIUm4=|$ 
解决方法: &XN*T.Y` 
(1). wxvt:= = 
NtReadVirtualMemory Rm6<"SLV 
NtWriteVirtualMemory qC IZW 
这2个比较好解决,自己写2个调用,实现这2个调用的头10个字节,然后再跳转到这2个调用头10个字节后面的地址,再到SSDT表里把这2个调用地址改成我们自己的即可。 Bxz{rR0XV 
>}_c<`: 
(2). Fx)]AJ~[t 
NtOpenProcess + 0x2xx qo4AQ}0 < 
NtOpenThread + 0x1xx NIQa{R/H 
在TesSafe加载前,先保存ObOpenObjectByPointer的地址(或者用MmGetSystemRoutineAddress获取),然后我们自己写一段代码,实现Call ObOpenObjectByPointer头N个字节(随便自己)以及Call ObOpenObjectByPointer,然后再jmp到Call ObOpenObjectByPointer后面的代码地址,如: #S_LKc 
push eax JA())0a 
push dword ptr [ebp-38h] sK}Ru?a) 
push dword ptr [ebp-24h] pO=bcs8Z 
Call ObOpenObjectByPointer kRZ( 
jmp xxx ~r&Q\G 
然后在Call ObOpenObjectByPointer前面N个字节处jmp到我们自制的代码,这样的话就算TesSafe把Call ObOpenObjectByPointer改成Call到自己的函数,对我们也没有作用了。 7A7K:,c 
注意:直接还原代码的话,势必会蓝屏。因为TesSafe对这个地址有代码效验 %|r@q 
nr-VzF7zu 
(3). B3)#Ou2 
KiAttachProcess tgc&DT; E 
由于这个调用并没有被导出,在SSDT表中也没有他的地址。所以我们首先要获取他的地址 W  $H8[G 
虽然它没有被导出,但是调用它的另外一个调用KeAttachProcess却是被导出了的,我们可以先用MmGetSystemRoutineAddress获取KeAttachProcess的地址,再通过KeAttachProcess + 0x41的Call KiAttachProcess来取得KiAttachProcess的地址,然后直接还原它的代码即可(TesSafe并没有对这里进行代码效验)。 XlDVJx<&J 
- stSl* 
至此,TesSafe的所有HOOK都已恢复完毕,这时用OD附加游戏,发现OD会突然停止。 ~O |j*T 
其实,上面那些HOOK大部分人都已经搞定,关键就是这最后一步,OD停止的原因是他收不到调试消息了,因为TesSafe有一个线程不停的向PEPROCESS->DebugPort 写入NULL(0)。 y)Ip\.KV\ 
DebugPort其实就是Debug_Object的指针。 $5%tGFh 
)u3<lpoTy 
UnHook的方法多种多样,稍微灵活变通下就能想出很多方法。 kX5v!pm[ 
程序我就不传了,我相信这些分析比传一个程序有用的多 j$N`JiKM 
h9g5W'.# 
NP和HS也都大同小异,自己写系统调用,一样过他 Kd7OnU 
以后我会介绍如果绕过NP,以及HS的保护。
银魂、

ZxID:2379765

等级: 大将
生如夏花,死如秋叶。

举报 只看该作者 沙发   发表于: 2009-05-21 0
Re:斑竹来看下  希望对你们 有帮助~~~~
转的太不专业了。
乱码都不去掉。
« 返回列表
发帖 回复