阅读:1592回复:7
ZwCreateProcess(...) 编译通不过,怎么回事?
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) ??? |
|
|
沙发#
发布于:2003-10-21 10:21
因为Ntoskrnl.exe 并没有引出这个函数。
不过你可以按照标准的实现自己写一个 |
|
板凳#
发布于:2003-10-21 10:33
没有记错的话,应该要是加入ntdll.lib
是函数的声明自己写。 |
|
地板#
发布于:2003-10-21 11:02
程序开始处声明一下函数即可。
|
|
地下室#
发布于:2003-10-21 11:18
如果是在内核态可不要用Ntdll
|
|
5楼#
发布于:2004-09-01 20:50
最后是如何解决的?能否贴出相关的代码啊?
|
|
6楼#
发布于:2004-09-01 22:59
(__imp_?ZwCreateProcess@@YGHPAPAXKPAX1E111@Z)
明显是C++的函数方式,你要用系统的函数请一律加EXTERN “C” |
|
|
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; } |
|