能力值:
( LV3,RANK:20 )
|
-
-
26 楼
这是常规方法,不过我觉得太麻烦,我会想点其他方法搞定……
最近有点忙,没时间调游戏,这块暂时搁置……
|
能力值:
( LV3,RANK:20 )
|
-
-
27 楼
这和改偏移位置是一个思路吧
|
能力值:
( LV3,RANK:20 )
|
-
-
28 楼
嘿…………这么神奇吗……还真没注意,最近几天有点忙,忙完这块我再来调戏下DXF
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
谢谢楼主啊,学习了。
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
nice
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
不会吧,x64有patchguard,不能hook内核函数,TP自己也没hook。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
技术帖,收藏一下
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
那么问题来了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
mark.
新手学习一下
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
发个帖,证明我还存在。
|
能力值:
( LV3,RANK:20 )
|
-
-
36 楼
自己调试的话可以先过PG
TP里似乎是没有hook函数,但它改了某些变量
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
??????????????/
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
过PG只是在较早的版本可以,往后越来越难,win8.1还没看到真正可以过的,以后只会更难,这条路走不通。
话说回来,PG越完善,保护软件也越干净,现在win8.1x64里的内核保护是非常容易过的。所以保护软件都把大量的强度转移到ring3了,各种hook、花指令、虚拟机、校验线程,很浪费时间。TP的ring3花指令很厉害,ida里一大堆乱码,用调试器去跟发现它所有的call都用jmp,然后把堆栈清掉,根本不知道是哪里调用的。
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
请问可以问一下吗。
IoAllocateMdl
hook了这个函数后,如何再调用以前的函数呢?
oldIoAllocateMdl这个函数,就算调用,也调用不到吧。。。不一样会调用MyIoAllocateMdl然后如此一直循环调用。造成卡死。
用的什么方法去HOOK这个函数的。。。不是jmp到自己函数头部吗? 就跟NTOpenProcess那样处理一样的HOOK,
如果可以的话,请发一下相关的代码,,让我自己看看。。或者能否稍微讲解一下。。困扰2天了这个问题。一直蓝屏。
我选择jmp到自己头部。
然后判断。。是TP就+30
不是TP就跳回去原地址
但是这样。不开TP还是没问题。。运行游戏后,就会蓝屏。。不是出现999999.而是C2, {7, cd4, a0033fff, 80556a74}
80556a74是pKdEnteredDebugger+0x30的地址
楼下我的代码
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
PMDL MyIoAllocateMdl(
__in_opt PVOID VirtualAddress,
__in ULONG Length,
__in BOOLEAN SecondaryBuffer,
__in BOOLEAN ChargeQuota,
__inout_opt PIRP Irp OPTIONAL)
{
__asm pushad
ULONG a=(ULONG)(IoAllocateMdl)+5;
if (pKdEnteredDebugger == VirtualAddress)
{
VirtualAddress =(PVOID)((DWORD)pKdEnteredDebugger+0x30); //+0x20 是让他读到其他的位置
}
else
{
__asm
{
popad
mov eax,a
jmp eax
}
}
__asm popad
return (PMDL)VirtualAddress;
}
|
能力值:
( LV3,RANK:20 )
|
-
-
41 楼
你还是去翻翻帖子学一下hook的原理吧,补补基础,先别急着搞TP了
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
r3没处理啊 附加就崩溃
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
没看懂啊
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
nt!KeUpdateSystemTime+0x1dd:
fffff800`03e8445d 381dadfc9efe cmp byte ptr [fffff800`02874110],bl
fffff800`03e84463 7474 je nt!KeUpdateSystemTime+0x259 (fffff800`03e844d9)
fffff800`03e84465 8b056d711900 mov eax,dword ptr [nt!KiPollSlotNext (fffff800`0401b5d8)]
fffff800`03e8446b 890563711900 mov dword ptr [nt!KiPollSlot (fffff800`0401b5d4)],eax
fffff800`03e84471 ffc0 inc eax
fffff800`03e84473 89055f711900 mov dword ptr [nt!KiPollSlotNext (fffff800`0401b5d8)],eax
fffff800`03e84479 8b058ddb2200 mov eax,dword ptr [nt!KeNumberProcessors (fffff800`040b200c)]
fffff800`03e8447f 8b0d53711900 mov ecx,dword ptr [nt!KiPollSlotNext (fffff800`0401b5d8)]
kd> dd MyKdDebuggerEnabled
fffff880`02874110 00000001 00000000 00000000 00000000
fffff800`02874110 fffff880`02874110这两个差个8,不知道怎么处理,偏移只能替换4字节内容,如果直接用88去计算偏移位置不够,,您没有遇到这个问题吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
45 楼
是有这个问题,要是按照楼主的方法改,指令长度都得变,你最好在ntoskrnl模块里找始终为1的常量,然后替换掉KeUpdateSystemTime里对KdDebuggerEnabled引用的部分
|
能力值:
(RANK:10 )
|
-
-
46 楼
学习了 不错不错
|
能力值:
( LV4,RANK:50 )
|
-
-
47 楼
|
能力值:
( LV4,RANK:50 )
|
-
-
48 楼
mark慢慢学
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
mark ValidAccessMask
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
bingkan
第一张图调试的不是DNF,而且其他程序,所以OD正常
第二张图是DNF,OD显示不正常,也找不到模块信息
我也遇到过就是附加后游戏不会暂停然后点击E选项卡查看某块信息是空的。
|
|
|