NT4源码编译环境

来源:互联网 发布:秃鹰配件淘宝燕尾 编辑:程序博客网 时间:2024/05/04 02:59

由此引起任何法律问题,本人概不负责。

 

NT4代码相对比较全,可以编译出绝大部分系统核心文件,2000代码基本上只能看,不能编译,因为缺失了太多的头文件。

这篇文章主要讨论代码的编译环境搭建下面就介绍XP系统下编译环境的搭建,在这你需要准备好VC6.0NT4DDK以及NT4的源代码压缩包。

 

1 安装VC6.0

2  由于在XP2003下没办法安装NT4 DDK,只好在另外一台WIN2K的机器(可以是虚拟机)上安装选自定义安装,仅安装库和头文件。假定安装到c:\ddk

3  把上一步中的c:\ddk目录整个拷到XP系统的d:\下,这样就类似于把NT4 DDK安装到XP系统下的d:\ddk中。

4  nt4源代码解压到d:\nt下,里面应包含privatepublic两个目录。

5  d:\ddk目录下创建buildchk.bat文件,其内容是:

cmd.exe /k D:\DDK\bin\setenv.bat D:\DDK checked

       d:\ddk目录下创建buildfre.bat文件,其内容是:

cmd.exe /k D:\DDK\bin\setenv.bat D:\DDK free

6.  拷贝D:\nt\public\sdk\lib\coffbase.txtD:\DDK\lib\i386\free目录。

7.   点击d:\ddk\buildfre.bat,切换到D:\nt\private\sdktools目录,尽可能多的编译其中的文件,并把编好的文件拷贝到D:\nt\public\tools。其中至少应包括chmode.exe ech.exe gensrv.exe hextract.exe hsplist.exe listmung.exe masm386.exe strcto.exe touch.exe wcshdr.exe ws2hdr.exe。如果在编译过程中碰到类似“link() : error LNK1104: cannot open file "obj\i386\free\structo.exe"”的错误,手动在其i386目录下创建free目录,再重新编译。

8.   d:\nt目录下创建ntos.bat文件,其内容是:

              set CPUTYPE=I386

set USE_PDB=1

set NTDEBUG=ntsd

set NTDEBUGTYPE=windbg

set BASEDIR=\nt

set _NTDRIVE=d:

set _NTROOT=\nt

set NT_UP=1

rem set C_DEFINES=%C_DEFINES% -D_UNICODE -DUNICODE

path d:\nt\public\tools;%PATH%

9  修改d:\ddk\inc下的MAKEFILE.DEF文件,其中原来的92-101行更改为:

#modified by David

SDK_INC_PATH = D:\nt\public\sdk\inc

CRT_INC_PATH = D:\nt\public\sdk\inc\crt

OAK_INC_PATH = D:\nt\public\oak\inc

 

#SDK_LIB_PATH = $(BASEDIR)\lib\*\$(DDKBUILDENV)

#DDK_LIB_PATH = $(BASEDIR)\lib\*\$(DDKBUILDENV)

#CRT_LIB_PATH = $(BASEDIR)\lib\*\$(DDKBUILDENV)

 

#modified by David

SDK_LIB_PATH = D:\nt\public\sdk\lib\*

DDK_LIB_PATH = D:\nt\public\sdk\lib\*

CRT_LIB_PATH = D:\nt\public\sdk\lib\*

USE_PDB=1

#BROWSER_INFO=1

BUILD_OPTIONS=fe

LINKER_FLAGS=$(LINKER_FLAGS) $(SDK_LIB_PATH)\exsup.lib

 

MASTER_VERSION_FILE = $(BASEDIR)\inc\ntverp.h

 

#modified by David

 

#COFFBASE_TXT_FILE = $(BASEDIR)\lib\*\$(DDKBUILDENV)\coffbase.txt

COFFBASE_TXT_FILE = $(BASEDIR)\public\sdk\lib\coffbase.txt

10.   如果你安装NT4DDK的WIN2K系统不是英文环境,修改D:\ddk\bin下的SETENV.BAT文件,其中原来的95行更改为:

              set LANGUAGE=USA

        原来的109行更改为:

              set LANGUAGE=USA

11  修改D:\nt\public\sdk\inc下的ntdbg.h文件,其中原来的213-221行更改为:

//modified by David

/*typedef enum _DBGUI_APINUMBER {

                  DbgUiWaitStateChangeApi,

                  DbgUiContinueApi,

                  DbgUiMaxI

}

CsrGetProcessLuid(

                  HANDLE ProcessHandle,

                  PLUID LuidProcess

                  );*/

 

//added by David

#define PCSR_API_ROUTINE ULONG

#define PCSR_1P_API_ROUTINE ULONG

#define PCSR_SERVER_CONNECT_ROUTINE ULONG

#define PCSR_SERVER_DISCONNECT_ROUTINE ULONG

#define PCSR_SERVER_ADDTHREAD_ROUTINE ULONG

#define PCSR_SERVER_DELETETHREAD_ROUTINE ULONG

#define PCSR_SERVER_INITTHREAD_ROUTINE ULONG

#define PCSR_SERVER_EXCEPTION_ROUTINE ULONG

#define PCSR_SERVER_HARDERROR_ROUTINE ULONG

#define PCSR_SERVER_ADDPROCESS_ROUTINE ULONG

#define PCSR_SERVER_SHUTDOWNPROCESS_ROUTINE ULONG

#define PCSR_API_DISPATCH_ROUTINE ULONG

   原来的262行后插入:

//added by David

#define NTCSRAPI

#define PCSR_THREAD ULONG

   原来的276行后插入:

              //added by David

#define PCSR_NT_SESSION ULONG

   原来的298行后插入:

              //added by David

#define PCSR_PROCESS ULONG

   原来的313行后插入:

              //modified by David

#define PDBGSS_DBGKM_APIMSG_FILTER ULONG

   原来的319-320行更改为:

              OUT PCSR_PROCESS *Process,

              IN ULONG NTCSoutine OPTIONAL,

   原来的337行后插入:

              //added by David

#define PDBGUI_WAIT_STATE_CHANGE ULONG 

0 0
原创粉丝点击