ygmlq
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2014-11-07
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1592回复:7

ZwCreateProcess(...) 编译通不过,怎么回事?

楼主#
更多 发布于:2003-10-21 10:12
NTSYSAPI NTAPI ZwCreateProcess(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ParentProcess,
IN BOOLEAN InheritObjectTable,
IN HANDLE SectionHandle OPTIONAL,
IN HANDLE DebugPort OPTIONAL,
IN HANDLE ExceptionPort OPTIONAL
);

error LNK2001: unresolved external symbol \"__declspec(dllimport) int __stdcall ZwCreateProcess(void * *,unsigned long,void *,void *,unsigned char,void *,void *,void *)\" (__imp_?ZwCreateProcess@@YGHPAPAXKPAX1E111@Z)
???
生死有命,富贵由天
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-21 10:21
因为Ntoskrnl.exe 并没有引出这个函数。

不过你可以按照标准的实现自己写一个
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-10-21 10:33
没有记错的话,应该要是加入ntdll.lib

是函数的声明自己写。
freducn2002
驱动小牛
驱动小牛
  • 注册日期2002-06-26
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望29点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-10-21 11:02
程序开始处声明一下函数即可。
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-21 11:18
如果是在内核态可不要用Ntdll
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-01 20:50
最后是如何解决的?能否贴出相关的代码啊?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-09-01 22:59
 (__imp_?ZwCreateProcess@@YGHPAPAXKPAX1E111@Z)
明显是C++的函数方式,你要用系统的函数请一律加EXTERN “C”
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-02 07:34
加extern “C”没有用啊。我就是试验UndocumentNT一书中hook API的例子。Hook ZwCreateFile编译通过,执行正常,将下面代码中ZwCreateFile该成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;
}
游客

返回顶部