能力值:
( LV6,RANK:80 )
|
-
-
51 楼
原来是ImageFileName
+0x174 ImageFileName : [16] UChar
上面是XP SP3看到的,
可是我在Windows7上看到是
+0x16c ImageFileName : [15] UChar
位置不一样了,
请问有什么通用的办法取到ImageFileName吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
52 楼
不错的文章讲的很细
|
能力值:
( LV2,RANK:10 )
|
-
-
53 楼
学习.
|
能力值:
( LV5,RANK:60 )
|
-
-
54 楼
[QUOTE=fhurricane;753896]原来是ImageFileName
+0x174 ImageFileName : [16] UChar
上面是XP SP3看到的,
可是我在Windows7上看到是
+0x16c ImageFileName : [15] UChar
位置不一样了,
请问有什么通...[/QUOTE]
WIN7是这样的。。。。。
总之文章对新手理解inline hook没错的,能引起大牛关注更好了,能把问题讨论的更清楚。感谢楼主,也感谢对这个题目提出正解的大牛。。。。。论坛有此风,更上一层楼啊。。。。
BS一些用‘囧’之类的打击别人,这样的回帖楼主大可不必放在心上。。。。
楼主的很多文章写的很不错的。。。
|
能力值:
( LV13,RANK:760 )
|
-
-
55 楼
呵呵,支持先,研究才会进步
|
能力值:
(RANK:600 )
|
-
-
56 楼
附件里的错误没有改过来,错误好像还不少,不过还是谢了。
|
能力值:
( LV2,RANK:10 )
|
-
-
57 楼
问下为什么同样是修改内存SSDT HOOK就不需要操作IRQL,而INLINE HOOK就需要?
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
感谢楼主分享
|
能力值:
( LV4,RANK:50 )
|
-
-
59 楼
文章相当的到位。
一点疑惑:
如果单CPU上跑,这个问题出现的几率比较少,但是多CPU上跑有可能出问题吧?(概率上会更多)
写.text内存的时候,
1.假设按字节写内存,写到一半别的线程冲入,那进来的线程肯定会JMP到半正确的地址,会导致CRASH吧?
2.假设写内存是走DMA,写入过程可能有硬件回调通知,意味着虽然写入执行是完了,但是有未写入的可能吧?
另外CPU有缓存,尤其是多核CPU各自有自己的,如果不清除这个缓存会发生啥?
钻了一下牛角,以上问题能否有个解决方案??
|
能力值:
( LV3,RANK:20 )
|
-
-
60 楼
感谢lz的分享精神,大师才有明示自己错误的勇气。不必太在意。支持下LZ!!
|
能力值:
( LV2,RANK:10 )
|
-
-
61 楼
学习下!!!!!!!!!!!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
记得我高中一位语文老师说过“学生中,无论对知识点完全不明了,或者明白部分,或者完全掌握的。切莫做沉默不语高深状却又故意露出些许踪迹引起人注意的。你懂不懂是你个人之举,但是那种凸显自己的行为对我授课质量简直是一幅毒药。”
一个公司除非老板,其他的也不过都是打工。销售有因为开发部门无盈利迹象就大加鄙视么?财务的因为开发部门不懂成本核算而进行指责其智商低么?我是没遇到的。那么开发部门内部应该互相指责么?我想也不应该。
公司内部都应该有个互相尊重的底线,何况我们这个交流的论坛,对同学之人何必大加囧言。你不过先行一步,毕竟也没做到老板的层次,对不对? 何必呢!
|
能力值:
( LV15,RANK:280 )
|
-
-
63 楼
楼主文笔一流,调理清晰,看懂了。达到了传到授业的效果。
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
收藏,谢谢!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
65 楼
//关闭内存写保护
_asm
{
push eax
mov eax, cr0
mov CR0VALUE, eax
and eax, 0fffeffffh
mov cr0, eax
pop eax
}
执行时出错!
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
大神,请问你是不是使用了堕落天使发的 SSDT巧用对抗 INLINE HOOK的方法?
|
能力值:
( LV2,RANK:10 )
|
-
-
67 楼
不错的贴子
谢谢lz
|
能力值:
( LV2,RANK:10 )
|
-
-
68 楼
膜拜+学习~
|
能力值:
( LV3,RANK:20 )
|
-
-
69 楼
收藏了!!!!!
|
能力值:
( LV12,RANK:210 )
|
-
-
70 楼
E9短跳转 JMP X是相对于当前指令的下一条指令。
当前指令为EIP = Orig
Orig+5+X = Hook。因此x = Hook-Orig -5。即
*( (ULONG*)(JmpAddress + 1) ) = (ULONG)DetourMyKiInsertQueueApc - (ULONG)g_KiInsertQueueApc - 5;
|
能力值:
( LV3,RANK:30 )
|
-
-
71 楼
楼主辛苦了,思路清晰,非常适合初学者。
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
主楼的一个地方的地址是:uf KeInsertQueueApc
nt!KeInsertQueueApc+0x3b:
804e6d0a 8b450c mov eax,dword ptr [ebp+0Ch]
804e6d0d 8b5514 mov edx,dword ptr [ebp+14h]
804e6d10 894724 mov dword ptr [edi+24h],eax
804e6d13 8b4510 mov eax,dword ptr [ebp+10h]
804e6d16 8bcf mov ecx,edi
804e6d18 894728 mov dword ptr [edi+28h],eax
804e6d1b e8523fffff call nt!KiInsertQueueApc (804dac72)
804e6d20 8ad8 (错误) mov bl,al
我这个地方却是:
nt!KeInsertQueueApc+0x3b:
804fd4b5 8b450c mov eax,dword ptr [ebp+0Ch]
804fd4b8 8b5514 mov edx,dword ptr [ebp+14h]
804fd4bb 894724 mov dword ptr [edi+24h],eax
804fd4be 8b4510 mov eax,dword ptr [ebp+10h]
804fd4c1 8bcf mov ecx,edi
804fd4c3 894728 mov dword ptr [edi+28h],eax
804fd4c6 e8dd340000 call nt!KiDeliverApc+0x218 (805009a8)
804fd4cb 8ad8 mov bl,al
你的函数是:nt!KiInsertQueueApc ,我这里变成了nt!KiDeliverApc+0x218 ,是怎么回事啊 ?难道nt!KiDeliverApc+0x218 =nt!KiInsertQueueApc?请高手给小弟指点一下。。谢谢
|
能力值:
( LV3,RANK:20 )
|
-
-
73 楼
MARK,以备后看
|
能力值:
( LV7,RANK:110 )
|
-
-
74 楼
老大,你的程序很强大啊,你的这个程序支持多核心么?DPC级别只能在一个CPU核心运行,要是不能同时让所有CPU核心都处于DPC级别的话,那么你的HOOK过程中,很可能会BOSD,因为这样的话,有可能你在HOOK的时候,另外的CPU核心又调用你坐在HOOK的程序的话,你想想看,一个被破坏的指令,你想看会怎么样?总之,你的程序怎样写是不支持多核心的,因为你的程序在多核心系统上运行,有一定的几率BOSD,至于为什么,我已经解释了,情楼主写这样的程序的时候一定要注意程序是否支持多核心!
|
能力值:
( LV15,RANK:360 )
|
-
-
75 楼
收益挺多 顶一下
|
|
|