您是否想修改WIN2000系统内核文件呢?(如:NTOSKRNL.EXE或HAL.DLL)
如果您修改了NTOSKRNL.EXE后,再复制到SYSTEM32目录下,WIN2000系统就会恢复您所覆盖的系统内核文件。
最简单的解决方法就是用引导盘引导后再复制。但是这样就行了吗?没有。
因为在重新启动以后,选择Windows 2000 高级选项菜单里面的带命令行提示的安全模式会显示以下内容:
因以下文件的损坏或者丢失,Windows 2000 无法启动:
<windows 2000 root>/system32/ntoskrnl.exe
请重新安装以上文件的拷贝.
为什么会出现这个问题呢?答案就在NTLDR文件里面的WIN32程序osloader.exe。
OSLOADER程序功能是装载系统内核文件和驱动程序。
我为了方便分析程序,从NTLDR文件里导出了osloader.exe这程序。
里面有一个输出函数是BlLoadImage,这函数的功能是将可执行程序装载到内存中,在装载的同时判断
原文件是否修改过。
下面是BlLoadImage函数一小部分代码:
003016BD 0FB7CA movzx ecx, dx
003016C0 03C1 add eax, ecx
003016C2 3B4758 cmp eax, dword ptr [edi+58]
003016C5 7407 je 003016CE
003016C7 C7451404000000 mov [ebp+14], 00000004
003016CE FF7508 push [ebp+08]
003016D1 E83CF9FFFF call 00301012
003016D6 837D1400 cmp dword ptr [ebp+14], 00000000
003016DA 0F8597000000 jne 00301777 ;改为6个90H
003016E0 A108243300 mov eax, dword ptr [00332408]
003016E5 85C0 test eax, eax
003016E7 7436 je 0030171F
003016E9 BB0400FFFF mov ebx, FFFF0004
003016EE 6A04 push 00000004
003016F0 53 push ebx
003016F1 6A00 push 00000000
003016F3 03C6 add eax, esi
用十六进制编辑器打开NTLDR文件。
我用的系统是WIN2000 5.00.2195.1,所以经过分析就修改了635A~635F里面的数据为6个90H,
也就是NOP指令。后面您就可以随便的修改系统内核文件。
注意:在操作前,务必保留好原程序,以防万一。
切勿乱用,后果自负。