kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
阅读:2000回复:10

[请教]如何在Inline-Hook的代理函数中阻止原函数执行?

楼主#
更多 发布于:2007-08-12 16:27
好不容易写了一个Inline-HOOK,结果只能记录函数执行而不能阻止原函数执行.大侠们帮忙看看是哪儿出的问题.

// Inline过程.
原函数开头
JMP 0008:MyFunction

// void MyFunction(LPVOID lparam)
{
if(/* 条件判断*/)
{
DbgPrint("Forbid.");
return;  //一个RETURN就蓝屏了.换成_asm ret 4也没戏,如果去掉后就不会蓝屏.
}
JMP_OrgFunction(lparam);
}

__declspec(naked)void JMP_OrgFunction(LPVOID lparam)
{
// 其中下面的区域在DRIVERENTRY时写入了原函数的前七个字节与JMP到原函数第八个字节的指令.
_asm
{
nop
nop
......
}
}

看了下DMP文件,竟然报RAV的驱动memcan.sys与hookapi.sys的错误.在虚拟机中测试时说是内存错误.

已经搞了两天多了,一点点头绪也没.哪位大牛帮忙看看啊....
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-14 17:05
小声地说一句,被HOOK 的函数是PspExitThread.不调用是找XX啊.
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-14 17:06
见炉子的代码中HOOK掉了PspExitThread,结果成功.我用IS反了一下他的proxy,照原样写.还是出错..
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-14 19:48
MJMM的意思是................
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-14 19:49
按炉子的说法
DECLSPEC_NORETURN void Hook_PspExitThread
{
if(...!=....)
{
JMP...
}
}
一样蓝屏
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-14 19:52
反炉子一下.

ee463ad0 55              push    ebp
ee463ad1 8bec            mov     ebp,esp
ee463ad3 e86e0d0000      call    ee464846
ee463ad8 50              push    eax
ee463ad9 ff15205046ee    call    dword ptr ds:[0EE465020h]
ee463adf 3b05306246ee    cmp     eax,dword ptr ds:[0EE466230h]
ee463ae5 740a            je      ee463af1
ee463ae7 8b4508          mov     eax,dword ptr [ebp+8]
ee463aea 50              push    eax
ee463aeb ff15406246ee    call    dword ptr ds:[0EE466240h]
ee463af1 5d              pop     ebp
ee463af2 c20400          ret     4

这些不会蓝屏.
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-15 12:06
老大已经把HOOK都玩透了,偶还只是菜鸟...
游客

返回顶部