阅读:2521回复:3
求教 寒江独钓Windows安全编程 键盘过滤的一个问题
下面是 键盘过滤 获取 kbdclass 里的回调函数地址 的部分代码
//循环遍历 while(pTargetDeviceObject){ DeviceExt = (PBYTE)UsingDeviceExt; for(;i<4096;i++,DeviceExt+=sizeof(PBTYE)){ PVOID tmp; //临时变量 //如果此处内存不可读或引发分页错误则 跳出 if(!MmIsAddressValid(DeviceExt)){ break; } //如果找到了地址 跳出循环 if(gKbdCallBack.classDriverObject && gKbdCallBack.serviceCallBack){ status = STATUS_SUCCESS; break; } //在端口驱动扩展中 找类驱动对象 tmp = *(PVOID*)DeviceExt; if(tmp ==pTargetDeviceObject){ gKbdCallBack.classDriverObject = (PDEVICE_OBJECT)tmp; DbgPrint("classObject %8x\n",tmp); continue; } //如果在设备栈 中找到了 位于 Kbdclass 的地址 那么就可认为该地址就为回调函数的地址 if(tmp>KbdDriverStart && tmp<(PBYTE)KbdDriverStart+KbdDriverSize && MmIsAddressValid(tmp)){ //将这个回调函数记录下来 gKbdCallBack.serviceCallBack = (KEYBOARDCLASSSERVICECALLBACK)tmp; AddrServiceCallBack = (PVOID*)DeviceExt; } } 请问下 AddrServiceCallBack 是声明的 还是系统未公开的函数之类的东西 我看了这个代码并没有AddrServiceCallBack 的声明 请问下AddrServiceCallBack 的意思是什么 谢谢 |
|
沙发#
发布于:2013-02-23 11:13
这本书的作者太2了 也不知道从哪里找的代码 根本没有AddrServiceCallBack 的声明 注释寥寥草草 基本上跟没写一样 中国人出的书烂死
|
|
总版主
|
板凳#
发布于:2013-02-23 16:45
回 a464086549 的帖子
a464086549:这本书的作者太2了 也不知道从哪里找的代码 根本没有AddrServiceCallBack 的声明 注释寥寥草草 基本上跟没写一样 中国人出的书烂死 (2013-02-23 11:13) 对你这种人我不想说什么,这本书再烂,请不要做出“中国人出的书烂死”这个结论。 何况这本书好还是烂,不是你一个人就能评定的。无数的读者都已经认同了它的价值。 代码看不懂就抱怨注释太少,一抱怨就出来骂人,这行为和得不到零花钱就吵闹的小孩没区别。 |
地板#
发布于:2013-09-10 18:00
AddrServiceCallBack 是一个全局变量。获得的是键盘驱动内部的CALLBACK地址。
|
|
|