-
-
[原创] 编译server2003源码的注意事项
-
发表于:
2025-9-29 16:14
1187
-
原帖可以参考,文件也有下载。
https://bbs.kanxue.com/thread-263458-1.htm
由于超过3年的帖子无法回复和编译,所以新开一个帖子记录一下。
原帖 编程难 已经说得十分详细了,还有step by step的视频介绍。已经非常好
以下是我碰到的问题。
第一个编译问题: 各种奇怪的编译报错。
根据 视频介绍编译的时候还是碰到了各种奇怪问题问题。就是driver.pfx 证书日期问题。后面的错误都是这个证书的影响。
所以编译机的虚拟机的时间需要设置为2020年10月3日到2021年4月3日之间(注意关闭xp的自动从网络获取时间。或者直接将虚拟机断网,避免自动更新时间)。否则会出现各种奇奇怪怪的证书相关错误。 最后image srv.iso安装的时候,bios时间也要设置为上面的时间范围。
设置BIOS时间,关闭从 网络获取时间 ,虚拟机设置 不从主机同步时间。

编译安装好以后在系统中碰到的问题。
第二个 srv镜像中.运行新编译的xp程序,无法执行,在kernel32.dll 定位不到EncodePointer DecodePointer问题
这两个函数在nt5src中还没有。这是server2003 sp1 xp sp3才添加的。
我们可以简单在kernel32的代码附近 实现 EncodePointer DecodePointer 直接返回原始指针,然后添加导出函数
ptr EncodePointer (ptr)
{
return ptr;
}
ptr DecodePointer(ptr){
return ptr;
}
编译完了看看kernel32有没有导出这两个函数。
第三个问题 就是srv镜像中,某些程序安装需要检查sp补丁。比如想要安装.net 4.0,需要安装 wic_x86_enu.exe 。 WIC又需要需要sp1 。否则无法安装。可以通过修改注册表项,假装已经安装了某些补丁。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
新建 CSDVersion 的 DWORD 值 0x100 0x200 0x300对应版本sp
| SP1 | 0x100 | 256 |
| SP2 | 0x200 | 512 |
| SP3 | 0x300 | 768 |
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!