装载修改过的WINDOWS系统内核程序(WIN2000)

类别:编程语言 点击:0 评论:0 推荐:

您是否想修改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指令。后面您就可以随便的修改系统内核文件。
注意:在操作前,务必保留好原程序,以防万一。
             切勿乱用,后果自负。

本文地址:http://com.8s8s.com/it/it28066.htm