其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
装载修改过的WINDOWS系统内核程序(WIN2000)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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




相关文章

相关软件