johnzhou
驱动牛犊
驱动牛犊
  • 注册日期2003-02-13
  • 最后登录2010-07-21
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望20点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1361回复:3

Hook Native 时为什么总要 “+1”?

楼主#
更多 发布于:2005-04-10 07:58
Und NT 书中在Hook Native api的时候总是有(PUCHAR)_function+1这一句,为什么要 \"+1\" 啊,
另外,如果有个函数没有被导出,而我只知道此函数的ID,是否可以将上面这一句该为(PUCHAR)ID+1 进行HOOK?
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2005-04-10 13:02
kernel是从零开始算
user mode从一开始算
 
如果有个函数没有被导出

那有此函数的ID ??
johnzhou
驱动牛犊
驱动牛犊
  • 注册日期2003-02-13
  • 最后登录2010-07-21
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望20点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-10 15:29
那未被导出的函数可否调用吗,能给具体的段代码吗?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-04-11 08:32
因为是由NTDLL中的该函数的反汇编代码决定.
一般在32位WINDOWS下,函数开始的第1条指令是MOV EAX,ID
对应的机器码是B8XXXXXXXX,所以加1就是后面所对应的ID
不过在64位OS下,反汇编代码就完全不同了,而且NTDLL,和NTOSKRNL的机器码也不一样,所以需要动态获得SERVICE ID......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部