首页
社区
课程
招聘
[求助]问一个小小的问题
发表于: 2010-11-19 14:36 3352

[求助]问一个小小的问题

2010-11-19 14:36
3352
void HookpIofCallDriver()
{
   KIRQL oldIrql;
   ULONG addr = (ULONG)IofCallDriver;
   __asm
   {
     mov eax,addr
     mov esi,[eax+2]
     mov eax,[esi]
     mov old_piofcalldriver,eax
   }

kd> u IofCallDriver
nt!IofCallDriver:
804ef120 ff2500d25480    jmp     dword ptr [nt!pIofCallDriver (8054d200)]

在这段代码里addr存放的是IofCallDriver的地址, 把地址赋给eax,eax+2指向ff25后面这个地址,那[eax+2]就应该是这个地址里的内容00d25480吧,把它赋给esi,那后面为啥又写
mov eax,[esi]啊,那岂不是把00d25480所指的内容赋给eax啊? 想我大半天想不明白,高手指点指点小弟啊。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 72
活跃值: (52)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
哪位大哥给小弟讲讲啊 急切的想弄明白
2010-11-19 18:14
0
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
就这样的啊12345
2010-11-19 22:42
0
雪    币: 72
活跃值: (52)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
明白了  原来mov eax addr 是把addr的地址传给eax 而不是把IofCallDriver的地址传给eax
2010-11-19 22:54
0
游客
登录 | 注册 方可回帖
返回
//