首页
社区
课程
招聘
SSDT Hook的妙用 的问题
发表于: 2008-10-16 16:13 4314

SSDT Hook的妙用 的问题

2008-10-16 16:13
4314
堕落天才大大的文章 http://bbs.pediy.com/showthread.php?t=40832
堕落大大在里面有这么一条语句:
JmpAddress = (ULONG)NtOpenProcess + 10; //跳转到NtOpenProcess函数头+10的地方,这样在其前面写的JMP都失效了

这时JmpAddress已经是指向NtOpenProcess函数头+10的地方了,所以我们在自己的函数MyNtOpenProcess里面用JmpAddress跳回去
  __asm{
    push    0C4h
    push    804eb560h  //共十个字节
    jmp     [JmpAddress]     
  }

我的疑问是为什么不是用 jmp JmpAddress,而是用jmp  [JmpAddress],明明JmpAddress已经是我们想要的地址了。。。。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 354
活跃值: (10)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
是一样的。。。
2008-10-16 16:56
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这两个一样???的确我调试结果也证明这两个是一样的
但是为什么呢,[xxxxx]明明是间接地址啊。。。。
2008-10-16 17:04
0
雪    币: 242
活跃值: (418)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
4
[]简单理解为
&

jmp的目标是一个地址

jmp [jmpaddress]
即把jmpaddress转换为一个地址,然后跳过去
2008-10-17 02:11
0
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
JmpAddress  这个是一个全局变量。
在内存中访问是[xxxx],xxxx是全局变量的地址。
然后你 jmp JmpAddress
在内存中表示就是jmp [xxxx]
jmp [JmpAddress]
按照上面的推测应该为jmp [[xxxx]]
但实际这样语句不合法,所以就算jmp [[[[[[[[[[[JmpAddress]]]]]]]]]]]不管有多少个[]都等价于jmp JmpAddress。
2008-10-17 03:30
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢回答我的朋友,ls讲的有点道理。。。。。。。解开我多日的疑惑
2008-10-17 09:57
0
游客
登录 | 注册 方可回帖
返回
//