阅读:1302回复:2
请教斑竹和各位:问PCAUSA之VXD之HOOK??
我现在正在看PCAUSA之WIN98的VXD源代码,有很多都不懂,先请问
在Hook_Device_Service_Ex_RAW()里面,其最终作用就是调用 VMMCall (Hook_Device_Service); 但其中参数和变量我有些不懂! 一、下面几句是否可以不要? stub -> JmpShort.Opcode = JMP_SHORT_OPCODE; stub -> JmpShort.Disp = (PBYTE) &(((HOOK_PROC_STUB *) NULL) -> JmpHook) - (PBYTE) (&(((HOOK_PROC_STUB *) NULL) -> JmpShort) + 1); stub -> JmpOrg.Opcode1 = JMP_INDIRECT_OPCODE1; stub -> JmpOrg.Opcode2 = JMP_INDIRECT_OPCODE2; stub -> JmpOrg.Pointer = HookVar; 因为我看它调用Hook_Device_Service_RAW仅仅需要stub -> JmpHook 也就是自己定义的HookFunc,而定义stub -> JmpHook时不需要?? 二、为何自己定义的HookFunc=&(stub -> JmpHook), 即请具体解释stub -> JmpHook的计算方式,如下两句: stub -> JmpHook.Opcode = JMP_NEAR_OPCODE; stub -> JmpHook.Disp = (PBYTE) HookFunction - (PBYTE) (&(stub -> JmpHook) + 1); 请斑竹和各位高手分析!!!!! |
|
|
沙发#
发布于:2002-11-06 18:12
不要就不能Unhook_Device_Service了!
|
|
板凳#
发布于:2002-11-08 15:45
to flyfox:
参考: 《Windows 95 系统程式设计 - 虚拟机器与 VxD 程式设计》 Walter Oney 著, 侯俊杰 译 第四章 系统程序设计接口 VxD Service API - P55, 总P80 [编辑 - 11/8/02 by edust] |
|