我在做一个类似于金山词霸的程序,需要在XP下运行,于是需要对ExtTextOutW进行挂钩,我首先注册了一个鼠标钩子,这是为了能注入dll到每个拥有GUI的进程,然后开始修改import表,郁闷的是,程序已运行自己就被灭了,连声招呼都不打,我这个晕那,后来我改用微软的detour2.1也一样,哪位大侠是英俊与智慧的化身,正义与利智的代表帮咱看看吧。 还有阿要是我用F5 DEBUG的话,连带MSDEV一样连招呼不打就挂。我这里先谢过了。
调试欢乐多
他们的xp版都不是修改ITA/IMP
还是想点别的法子这两种办法只能跑在2000下
不用贴了我把别人的成形的程序反汇编了
他们的xp版都不是修改ITA/IMP
还是想点别的法子这两种办法只能跑在2000下-------------------------------
是吗?怎么我写的又可以跑在XP以及2003下呢?奇怪了..
我的想法是这样的,起一个鼠标hook,勾的是系统里所有的GUI线程,然后,当鼠标指向一个窗口时,我可以得到其进程和线程ID,然后修改其ITA,很奇怪不可以,不晓得为什么。
我原来是起了鼠标钩子之后,查全部的输入表,改掉全部的thunk里的函数地址,挂了,就是一开始我说的那样子,后来就改了,还是不成。
问个问题啊,当我起了钩子后,其callback被调用时,钩子所在的dll是被映射到什么地址空间?
有没有办法让它映射到鼠标所指窗口所在的进程的地址空间,我是没办法,还要大侠们指点一二。谢了。
这是我成功Hook Explorer的ExtTextOutW成功的图片..可以与我一起讨论.
用调试输出的方法简单处理了一下..因为写这个测试的程序只用了10分钟.
上面的URL是163的,放心好了.
不过我不会汇编。大哥问个问题啊
拦截TextOutExtW的话,是否只需要注入explore就可以了?
BOOL WINAPI InstallHook()
{
sg_hGetMsgHook=::SetWindowsHookEx(
WH_GETMESSAGE,
(HOOKPROC)(MsgProc),
glhInstance,
0
);
return TRUE; // ModuleFromAddress(MsgProc)
}EXE调用 InstallHook();后如果不退出程序,HOOK能构正常工作,退出后 无法正常工作。
不知道 什么原因 感谢大家能指点!! 如何能够实现 EXE退出后HOOK能正常工作
在your。dll里进行挂钩,
也就是说只注入,不管卸载,并使夫进程和子进程不带关联,试试吧,我也没把握的。