cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1928回复:2

hook ZwCreateProcess的问题。

楼主#
更多 发布于:2004-09-03 19:26
做过系统服务hook的朋友帮帮我吧,解决如下hook ZwCreateProcess的问题。
我试验UndocumentNT一书中hook API的例子(hooksys)。Hook ZwCreateFile编译通过,执行正常,将下面代码中ZwCreateFile该成ZwCreateProcess后编译报“undefined symbol:ZwCreateProcess”。为何会这样呢?
...
NTSTATUS HookServices()
{
OldNtCreateProcess=(NTCREATEPROCESS)(SYSTEMSERVICE(ZwCreateProcess));
_asm cli
(NTCREATEPROCESS)(SYSTEMSERVICE(ZwCreateProcess))=NewNtCreateProcess;
_asm sti
return STATUS_SUCCESS;
}

void UnHookServices()
{
_asm cli
(NTCREATEPROCESS)(SYSTEMSERVICE(ZwCreateProcess))=OldNtCreateProcess;
_asm sti
return;
}
...
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-04 10:25
ZwCreateProcess是由NTDLL.dll导出的,不是ntoskrnl.exe,因此要在sources文件中加上ntdll.lib才能编译成功。
但是这样并不能运行,回报错:无法加载DLL……
我是直接用interrupt code进行hook的。


直接用interrupt code进行hook是如何实现的呢?思路是什么?
ftofficer
驱动牛犊
驱动牛犊
  • 注册日期2004-07-16
  • 最后登录2007-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-03 22:59
ZwCreateProcess是由NTDLL.dll导出的,不是ntoskrnl.exe,因此要在sources文件中加上ntdll.lib才能编译成功。
但是这样并不能运行,回报错:无法加载DLL……
我是直接用interrupt code进行hook的。
游客

返回顶部