(这是我在中学时写的论文的一部分)
=============================================
所有80x86微机( *** 作系统不限)在启动时,开关按钮先向主板发出一个”Power Good!”信号CPU收到信号后复位使SS=DS=ES=IP=0000h,而CS=FFFFh使CPU从FFFF:0000h执行指令,这部分内存区域是BIOS的ROM空间这里固化一条跳转指令使CPU转到POST自检部分执行程序用户在屏幕上可以看到BIOS的厂商,版本等信息,还可以看见内存,驱动器等设备的检测过程检测完毕后,会显示自检结果,如果发现硬件被更换,则屏幕下方会显示”Update ESCD…”之后,执行INT 19h指令,进入初始引导程序初始引导程序按在CMOS设置芯片中的顺序,在各驱动器中查找主引导记录,若找到,则将它读到0000:7C00h单元开始的区域至此, *** 作系统启动第一步完成,用时约10秒我要研究第二步:Windows9x,MS-DOS *** 作系统的装载
1装入IOSYS文件
我的依据是在用UltraEdit打开IOsys时,找到了”Starting MSDOS…”字符串,以及七项启动菜单的字符串
此时,屏幕显示Starting MSDOS71…或Starting Windows95…
IOsys是MSDOS710的内核,其中包括一组设备驱动程序,还有一段程序,用来装配中断向量它是一个很重要的系统文件,不可删除
2解释MSDOSsys
我的依据是在MSDOSsys文件中,找到了控制启动的设置如图2:
此时,屏幕显示漂亮的启动画面
3解释configsys
Configsys是MSDOS中的配置文件,用于初始化DOS,创建DOS的工作环境 它是一个文本文件,可以让用户编辑修改通常用来安装设备驱动程序,例如光驱,鼠标的驱动程序它可以删除,但删除之后,一些硬件无法使用
我的依据是在启动时显示在Configsys中驱动程序的信息,说明正在安装驱动程序到内存
4装入Commandcom
Commandcom是DOS的默认外壳它是一个命令解释程序,它用来解释用户输入的命令,以及解释以扩展名为BAT的可执行文件我的依据是在没有Autoexecbat的时候,显示版本信息 而版本信息在Commandcom中可以找到
5装入Autoexecbat
Autoexecbat是DOS中的自动批处理文件,在启动时自动运行,使用户使用时,不必每次在开机时进行相同 *** 作,只要将每次在启动时输入的命令添加在Autoexecbat中,在开机时就会自动执行,大大提高工作效率
我的依据是在启动时,显示Autoexecbat的执行结果
至此,MSDOS710启动结束,显示类似C:\>的提示符,Windows9x启动第二步完成
6装入Wincom
Wincom是Windows9x的装载器,用来装入Windows的所有设备驱动程序
7装入Wininitexe
Wininitexe是Windows的一个设备驱动程序,使Windows支持PNP技术
8装入Vmm32vxd
Vmm32vxd是一个重要文件vmm32vxd将CPU的工作模式从实模式改变成保护模式,使计算机可以使用大于1MB的内存并按Systemini和注册表配置GUI系统,读取其他驱动程序
9装入Win16 API
Win16API由3个文件构成:Userexe,GDIexe,KRNL386exe它们提供了一组系统功能调用,使Windows能运行16位的应用程序
至此,Windows启动第3步结束
10装入Win32API
Win32API由Vwin323386程序装入,有3个文件:User32dll,Kernel32dll,Gdi32dll组成,形成系统内核,使Windows能运行32位应用程序
11装入Explorerexe
Explorerexe是Windows的默认外壳 装入之后, 显示任务栏和开始菜单
至此,Windows9x启动过程结束
在写论文的过程中,我感到计算机的知识复杂,但具有挑战性,需要我们学习
SS DS ES IP CS:它们是CPU中的寄存器,SS寄存器的值为堆栈段的段基址,DS为数据段的段基址,ES为附加段的段基址,IP为指令指针,CS为代码段的段基址
PNP技术:PNP为Plug And Play的缩写,意为”即插即用”使硬件的安装大为简化
实模式,保护模式:它们是80386及以上的80x86系列CPU的工作模式在实模式下,超过1088K的内存不能直接使
解决办法:
在开始菜单中依次运行以下几个命令:
Regsvr32 urlmondll
Regsvr32 actxprxydll
Regsvr32 shdocvwdll
Regsvr32 oleaut32dll
基本原理:
Regsvr32命令是用来对未注册的"ActiveX控件"进行注册的。外来ActiveX控件要应用到自己的程序中也必须使用它注册。ActiveX控件技术是微软于1996年推出的,得到了许多软件公司的支持,虽然现在安装软件时都是自动进行注册,但有时手工注册还是有必要的。
Regsvr32命令格式
Regsvr32 [/u][/s][/n][/l[:cmdline]] dliname(或OCX控件)
说明:
/u:卸载ActiveX控件
/s:注册成功后不显示作成功信息框
/c:控制台输出
/l:调用Dlllnstall安装函数并将可选参数[cmdline]传给它,当使用/u时调用卸 载函数
/n:不调用DllRegisterServer,该参数必须和/l一起使用
我们平时最常用的有两种方法,即"Regsvr32 ActiveXdll"(注册ActiveX控件)和"Regsvr32 /u ActiveXdll"(卸载ActiveX控件)下面举两个例子说明
在C盘根目录下有个"Rtjdll"控件需要我们手工注册我们只要单击"开始"——“运行”,在运行对话框中输入“Regsvr32 C:\Rtjdll”,这时d出“DllRegisterServer in rtjdll succeeded”对话框,说明注册成功;如果要卸载,在运行对话框中输入“Regsvr32 /u C:\Rtjdll”即可。
另外,使用Regsvr32命令可以用达到下面一些效果。
一、修复不能在新窗口中打开的IE
很多朋友在上网时,发现IE不能打开新的窗口,用鼠标左键点击超链接没有任何反应,用鼠标右键点击超键接,在d出的快捷菜单中选择“在新窗口中打开”也没有任何反应,重装太麻烦, 我们可以使用Regsvr32命令来修复!
1、单击"开始"——“运行”,在运行对话框中输入“Regsvr32 actxprxydll”,并回车,接着会出现一个信息框,“DllRegisterServer in actxprxydll succeeded”对话框,表示作成功。
2、按照同样的方法输入“Regsvr32 shdocvwdll”,单击确定。
3、重新启动WIN系统,运行IE,此时应该问题解决。
如果还不行, 那么把shdocvwdll, Oleaut32dll,Actxprxydll,Mshtmldll,Msjavadll,Browseuidll 和Urlmondll这几个控年全部重新注册一遍应该可以解决问题。
二、卸载winXP自带的ZIP功能
输入Regsvr32 /u zipfldrdll,则卸载winXP自带的ZIP功能。如果输入Regsvr32 zipfldrdll,则恢复ZIP功能。
三、防范脚本病毒
现在的脚本病毒很是厉害,通过网页传播,上网时,不知不觉你的机器就会感染上病毒了。不过只要你了解病毒传播的机制,还是有办法把它的危害降到最低的。很多脚本病毒的复制,传播都离不开“FSO对象(FileSystemObject)”,因此禁用“FileSystemObject”就能有效地控制脚本病毒的传播。
输入“Regsvr32 /u scrrundll”,即可禁用FSO对像。。。恢复则输入“Regsvr32 scrrundll”
goole上搜到的另一篇帖子内容如下:
方法一:重新注册以下DLL文件:
regsvr32 Shdocvwdll
regsvr32 Shell32dll (注意这个命令,先不用输)
regsvr32 Oleaut32dll
regsvr32 Actxprxydll
regsvr32 Mshtmldll
regsvr32 Urlmondll
第二个命令可以先不用输,输完这些命令后重新启动windows,如果发现无效,再重新输入一遍,这次输入第二个命令。
方法二:COMCTL32DLL文件产生的问题:
在升级IE或windows时这个文件可能被替换了,也许新版本的COMCTL32DLL文件有BUG。
找一张windows安装光盘,搜索它,找到一个名为COMCTL32DL_的文件,把它拷贝出来,用winrar提取 这个文件为COMCTL32DLL文件,并覆盖现有文件。
方法三:用方法一重新注册regsvr32 Oleaut32dll时出错或重新注册后也无效。
在windows光盘里提取Oleaut32dll文件,在MDAC_IE5CAB文件包里,也是用winrar提取并覆盖现有。
方法四:DCOM属性设置错误:
详细参见:>
使用SystemDiagnosticsProcess类可以启动和停止程序,这个类的Start函数可用于启动一个exe文件。
比如,如果想在浏览器中打开一个URL,就可以将URL作为参数传递给Start函数:
SystemDiagnosticsProcessStart(">
人们一般都有这样的经历:当用户在资源管理器中用右键菜单时,会显示一个“属性”菜单,点击属性菜单项会显示一个属性页,系统对不同的文件会有不同的属性页扩展。如:在windows98中对文本文件系统有“常规”属性页,对于word文档系统就有:“常规”、“载要”、“统计”三个属性页。而对于DLL文件系统只有“常规”、“版本”两个属性页。
那么,作为一个程序员如何也在自己开发的程序中实现类似系统上述的功能呢?其实,属性页扩展程序主要是一个以动态链接库DLL实现的in-process服务器,他除了实现基本的COM的iunknown接口外,还实现它的IShellExtInit和IShellpropsheetext接口。其中IShellExtInit的Initialize方法用于实现初始化快捷菜单处理器,IShellpropsheetext接口用于向属性页添加页面,如果属性页和特定的文件相关则系统会调用IShellpropsheetext的addpages方法给属性页添加一个页面。
加壳理论
所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。
当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序,这就是我们找OEP的原因了。一切 *** 作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
(PS:壳是指在一个程序的外面加上另外一段代码,保护里面的代码不被非法修改或者反编译。)
脱壳理论
脱壳主要有两种方法:硬脱壳和动态脱壳。
第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于现在的壳有加密、变形、虚拟环境等等特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,
第二种,是动态脱壳。加壳的程序运行时必须还原成原始形态,就是加壳程序运行后必须进行解压到程序的文件头。所以我们可以用OD跟踪到OEP的原因。这个时候我们就可以抓取(Dump)内存中的镜像,再重构成标准的执行文件。这样我们就脱壳了。
(PS:现在的加密壳更复杂一点,需要我们考虑的东西就更多了。)
以上说明的就是针对压缩壳的简单说明,
现在壳已经由压缩壳到加密壳到VM壳。
以上就是关于请问什么是Windows外壳程序请哪位高手帮帮忙全部的内容,包括:请问什么是Windows外壳程序请哪位高手帮帮忙、外壳程序意外停止,Explorer.exe 被重新启动。、C#的里面怎么打开外部程序(好像叫外壳)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)