首页
社区
课程
招聘
[求助]关于inline hook 的平栈问题
发表于: 2011-7-12 11:52 4905

[求助]关于inline hook 的平栈问题

2011-7-12 11:52
4905
大家好,
   我是一名inline hook的初学者,有个问题请教:
   比如说,我先hook了KeStackAttachProcess,
     代理函数为:
__declspec (naked)
VOID
Proxy_KeStackAttachProcess(
    PKPROCESS pKProcess,
    PVOID APCState
    )
{
  {
    __asm {  // 共字节
            _emit 0x90
            _emit 0x90
            _emit 0x90
            _emit 0x90
            _emit 0x90  // 前字节实现原函数的头字节功能
            _emit 0x90  // 这个填充jmp
            _emit 0x90
            _emit 0x90
            _emit 0x90
            _emit 0x90  // 这字节保存原函数+5处的地址
            _emit 0x90  
            _emit 0x90  // 因为是长转移,所以必须是0x0080
    }
}  

而我处理的函数是:
  __declspec (naked)
VOID
fake_KeStackAttachProcess (
    PKPROCESS pKProcess,
    PVOID APCState
    )
{
     __asm{ pushad
                   pushfd
     }
     //做了我自己的处理
......
     __asm{ popfd
                   popad
     }

   Proxy_KeStackAttachProcess(pKProcess,APCState);
}

这样处理对吗?
假设:
      内联钩子的处理都已经处理完毕了。

请大侠不吝赐教!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在你自己的处理里面保持堆栈平衡就可以了  我做的inline hook就是直接在原函数指令中弄的jmp然后跳转到我自己的函数,等我的指令执行完了后我就跳回去。。。
2011-7-12 13:04
0
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
3
fake_xx不需要naked修饰
2011-7-12 13:08
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大侠,帮帮我
2011-7-12 18:38
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
5
你hook 的时候,Proxy_KeStackAttachProcess已经处理了头5字节的代码了啊。
2011-7-12 20:01
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是的,
Proxy_KeStackAttachProcess的头五个字节是KeStackAttachProcess的原始的五个字节;
后五个字节是跳转到KeStackAttachProcess的第六个字节处的实现,都已经实现了,最后两个字节是08 00
2011-7-12 22:57
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最后两个字节是0x0080
2011-7-12 22:58
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我发现,在这里:
__declspec (naked)
VOID
fake_KeStackAttachProcess (
    PKPROCESS pKProcess,
    PVOID APCState
    )
{
     //做了我自己的处理
......

   Proxy_KeStackAttachProcess(pKProcess,APCState);
}

加入了自己的处理后也能跑,但是会引起访问违规!
2011-7-12 22:58
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
解决了,谢谢各位大侠!
2011-7-20 10:08
0
雪    币: 225
活跃值: (294)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不过,win7下,还是有问题,哪位大侠指点一下?
2011-7-20 10:09
0
游客
登录 | 注册 方可回帖
返回
//