阅读:2050回复:16
NT TO RING0
我在WEBCRAZY上下了一个NT进入RING0的源程序用VC编译(我有装2KDDK 反正不是环境错误)
但编译不成功,说啥有俩东东以在前定义了!(我想可能是没定义 #define XXXX 吧) 偶一气之下把有用的头全拷过来,花了我好长时间,终于编译通过, 但LINK又出错了说啥: IN XXXXX OUT XXXXX 太烦人了,不弄了还是改为ASM版吧!但是回避不是办法希望大家帮一下为啥VC环境下通不过!? 源程序: http://cn.geocities.com/cntsu00/ntring0.zip 我很菜大家一定帮我呀!!?? |
|
最新喜欢:![]()
|
沙发#
发布于:2002-03-23 20:32
怎么无法下载?
|
|
板凳#
发布于:2002-03-23 20:57
不会吧!
你在联接上点下右键,选目标另存为。。看一下。 我试了可以的! |
|
|
地板#
发布于:2002-03-24 14:23
唉哪程序有问题呀!
我费了好大劲终于搞定了! 但运行TMD又说初始化错误! 哎! 大家快来帮个忙! |
|
|
地下室#
发布于:2002-03-24 20:12
这多人看咱没人回答呀!
|
|
|
5楼#
发布于:2002-03-25 13:08
这程序好像是用DS写的我正在努力,请大家也帮忙看看吧!
都130人了咋就没人回答,我给WEBCRAZY发信也没回。 哎!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|
|
6楼#
发布于:2002-03-25 17:56
哎!!!! :(
|
|
|
7楼#
发布于:2002-03-26 12:00
我去下载下来Look Look
如果看到有什么有用信息告诉你 |
|
8楼#
发布于:2002-03-26 12:36
终于有人回了好高兴呀!
|
|
|
9楼#
发布于:2002-03-27 12:17
1. 在Preprocessor definitions里面加上定义_X86_=1,可以使错误的数量大大减少。
2. 在剩下的错误中有一个是:e:\\ntddk\\inc\\winbase.h(278) : error C2146: syntax error : missing \';\' before identifier \'CRITICAL_SECTION\' 产生错误的是下面这句话:typedef RTL_CRITICAL_SECTION CRITICAL_SECTION; 搜索一下,发现RTL_CRITICAL_SECTION是Winnt.h里面定义的一个结构。 3. windows.h里面有如下语句: #include <windef.h> #include <winbase.h> 而在windef.h里面有: #ifndef NT_INCLUDED #include <winnt.h> #endif /* NT_INCLUDED */ 而在ntddk.h里面也有: #define NT_INCLUDED 也就是说#include <ntddk.h>造成winnt.h没有被include,从而造成以上的错误。 4.让我们在源文件中直接加上#include <winnt.h>试试。编译,出现以下错误e:\\ntddk\\inc\\winnt.h(294) : error C2146: syntax error : missing \';\' before identifier \'FCHAR\',产生错误的这一句话是typedef BYTE FCHAR;也就是说编译器不认识BYTE这个符号,它是在别的文件中定义的。这说明winnt.h这个文件不能单独include的。 5. 让我再在源文件中加上#undef NT_INCLUDED试试。结果又会产生无数的重定义问题。大概得有好几十个。这些结构和宏在ntddk.h和winnt.h中都有定义,而且没有任何的编译开关可以控制他们的定义。这就是说这两个头文件是互相冲突的,如果同时包含着两个头文件的话就必然会产生重定义问题。 从上面的分析来看,我斗胆推测如果使用DDK里面的头文件,这个例子是无论如何也编译不过的。也许MS当初设计的时候就故意要弄成这样的。 ---------------------------------------------------- 以上意见如有不对,欢迎指正。 |
|
|
10楼#
发布于:2002-03-27 13:01
在你的第一步我是通过DS确定路径搞定的!
在第二步我也有同样的结果! 谢谢你的回答! 我手工构造了头编译通过,但运行出错!说没有初始化! 你可要从新构造的CPP? |
|
|
11楼#
发布于:2002-03-27 13:56
还是我来说说吧。
ntring0.cpp编译环境: 我记得我使用的是visual studio下的vc6(sp0),还有windows 2000 比较新的平台sdk。 直接使用cl命令加相关的参数编译而成的。 还有我除了softice以外,不使用任何microsoft以外的东西编译调试device driver相关内容。 |
|
|
12楼#
发布于:2002-03-27 17:31
请说明具体的编译参数和环境好吗?谢了!
|
|
|
13楼#
发布于:2002-03-27 21:03
:D :D :D
终于搞定了! :D :D :D 经过努力把头文件修改后编译运行都通过了! 但tsu00说的不经过修改就可以编译,我至今还没搞明白! 忘tsu00帮个忙。 |
|
|
14楼#
发布于:2002-03-27 21:18
老兄,说得详细一些啊,我也想编译过去啊。
:D :D :D |
|
|
15楼#
发布于:2002-03-27 22:24
typedef LONG NTSTATUS;
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0) #define OBJ_INHERIT 0x00000002L #define OBJ_PERMANENT 0x00000010L #define OBJ_EXCLUSIVE 0x00000020L #define OBJ_CASE_INSENSITIVE 0x00000040L #define OBJ_OPENIF 0x00000080L #define OBJ_OPENLINK 0x00000100L #define OBJ_KERNEL_HANDLE 0x00000200L #define OBJ_VALID_ATTRIBUTES 0x000003F2L typedef struct _OBJECT_ATTRIBUTES { ULONG Length; HANDLE RootDirectory; PUNICODE_STRING ObjectName; ULONG Attributes; PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE } OBJECT_ATTRIBUTES; typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; #ifdef MIDL_PASS [size_is(MaximumLength / 2), length_is((Length) / 2) ] USHORT * Buffer; #else // MIDL_PASS PWSTR Buffer; #endif // MIDL_PASS } UNICODE_STRING; typedef UNICODE_STRING *PUNICODE_STRING; typedef const UNICODE_STRING *PCUNICODE_STRING; #define UNICODE_NULL ((WCHAR)0) // winnt #define InitializeObjectAttributes( p, n, a, r, s ) { \\ (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \\ (p)->RootDirectory = r; \\ (p)->Attributes = a; \\ (p)->ObjectName = n; \\ (p)->SecurityDescriptor = s; \\ (p)->SecurityQualityOfService = NULL; \\ } NTSYSAPI VOID NTAPI RtlInitUnicodeString( PUNICODE_STRING DestinationString, PCWSTR SourceString ); NTSYSAPI NTSTATUS NTAPI ZwOpenSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwClose( IN HANDLE Handle ); #pragma comment(lib,\"ntdll.lib\"); 把这上面的加进去删掉: extern \"C\" { #include \"ntddk.h\" } |
|
|
16楼#
发布于:2002-03-28 20:22
偶有了新发现编译和环境搜索路经也有关系!
|
|
|