flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1302回复:2

请教斑竹和各位:问PCAUSA之VXD之HOOK??

楼主#
更多 发布于:2001-06-08 17:02
我现在正在看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);
请斑竹和各位高手分析!!!!!
一剑西来,天外飞仙
KingV
驱动牛犊
驱动牛犊
  • 注册日期2001-11-27
  • 最后登录2006-08-04
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-06 18:12
不要就不能Unhook_Device_Service了!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-08 15:45
to flyfox:

参考:
《Windows 95 系统程式设计 - 虚拟机器与 VxD 程式设计》
Walter Oney 著, 侯俊杰 译
第四章 系统程序设计接口
    VxD Service API - P55, 总P80

[编辑 -  11/8/02 by  edust]
游客

返回顶部