为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

浅入深出话PE

2010-09-25 19页 pdf 165KB 22阅读

用户头像

is_203208

暂无简介

举报
浅入深出话PE 浅入深出话 PE 前言:本文只是以偶在研究是所看到的一个 PE 产生的简单过程,带领您进入这个神秘的 世界,偶并不打算教你如何生成像老毛桃先生这么小的 PE 光盘作品,因为其研究过程很 漫长,引用老毛桃的话来说,“老九用了一年的时间才产生得到一个近 120多MB的WinPE 系统,自己又花了近半年的时间对它进行精简优化,最后才得到解压后为 51MB 左右的 WINPE”,这里不是指压缩后的 21.XXMB 的体积,偶认为会误导某些人,认为 Windows 的内核最小是 21MB,我们要以实事求是的态度来了解这个操作系统,了解...
浅入深出话PE
浅入深出话 PE 前言:本文只是以偶在研究是所看到的一个 PE 产生的简单过程,带领您进入这个神秘的 世界,偶并不打算教你如何生成像老毛桃先生这么小的 PE 光盘作品,因为其研究过程很 漫长,引用老毛桃的话来说,“老九用了一年的时间才产生得到一个近 120多MB的WinPE 系统,自己又花了近半年的时间对它进行精简优化,最后才得到解压后为 51MB 左右的 WINPE”,这里不是指压缩后的 21.XXMB 的体积,偶认为会误导某些人,认为 Windows 的内核最小是 21MB,我们要以实事求是的态度来了解这个操作系统,了解它的产生过程, 当然,偶研究的时间很短,也许了解得不大全面或是有误,见谅了,PE 高手请略过本文。 OK,下面开始: 一、了解什么是 PE。 PE英文为Windows Preinstallation Environment的缩写,意为Windows预安装环境,用MS 帮助上的说明来说,是带有有限服务的最小 Win32 子系统,它基于以受保护模式运行的 Windows?XP Professional 内核。它包括运行 Windows 安装程序、从网络共享安装操作系 统、自动化基本过程,以及执行硬件验证所需的最基本功能。。某些人可能会对这些所谓的 名词感到疑惑,不妨换个思考的角度,PE是什么?偶说,它是一个操作系统,类似于 DOS, 只不过内核是 NT的内核,支持 NTFS文件系统,可在光盘上运行的一个操作系统。 二、PE的历史背景。 PE 最早是微软发布的一种光盘预安装系统,当时的出现让人很振奋,因为在它出现之前, DOS 只能借第三方软件的支持下才能访问 NTFS 的磁盘文件,而且还不全兼容。不过 好境不长,当人们从微软的网站上下载这个 PE 系统,并使用后,因为这个微软的 WinPE 启动后只有一个黑框框——CMD命令行窗口,什么桌面啊,开始菜单啊,任务条什么的全 都没有,我要运行任务管理器,怎么办?输入 Taskmgr 回车,这下出来了,我要运行注册 表编辑器怎么办?输入 Regedit,出来了,我要分区?输入 Diskpart,又是一大堆命令,这 下难到了一大批尝鲜者,都鼠标一统天下的时代了,但会玩命令行的只有以前的 DOS高手 了,所以 PE渐渐被人们所遗忘。还好,这个时候,总会有技术强人出来继续 PE 的研究, 沉默一段时间后,终于以 Bart(巴特)这样的技术先锋为首的人,突破性研究出为 PE 添 加各种系统文件,为 PE穿上 XP 的漂亮外衣的办法,才让 PE 从死谷里走出来,走入我们 的日常生活中。让我们记住他——Bart和他的——Bart’s PE Builder软件! 备注:用 Bart的原话来讲,用 PeB生成的 Winpe已不是 MS的那个 PE了,两者不同,请 要不要搞混了,更不要向 MS 寻求技术支持,PEB 本身是免费的。MS 的有版权,而且每 用 24小时会自动关闭系统,既所谓的资源限制。 三、当今国内、国外 PE研究发展的情况。 国内研究 PE 的前锋当属无忧论坛无疑,(有兴趣的可以去那里看看)大家熟知的深山红叶 PE 系统工具箱和老九、老毛的迷你 WinPE 系统均出自那里,当然,从一些资深人士来说, PE在国内也向这些系统制作人一样,分成了两派,一派为深山红叶那种无桌面派的简洁派, 一派为老九、老毛那种有 XP桌面的桌面派。他们都是成功的 PE系统制作者,还有无忧上 新进的一批 VC++高手等,因为有了他们,才会有今天 PE的实用价值的存在。在国外,PE 研究非常热,有很多的著名坛子,当然有 Bart’s的坛子,还有 LiveCD,911CD,以及MSFN 的坛子等,无数的老外制作了数不胜数的 PE 插件丰富资源,如 Shell 壳插件有 GeoShell, Windows Explorer(一个类拟于 98 菜单的壳,好像是俄罗斯人写的),XPE,Xbox 等著名 插件等,网络类的 PPPOE 拨号插件,硬件类的 USB 即插即用接口插件,还有各种各样的 软件类插件,大大丰富了 PE 的应用价值,很多老外都在做自己的光盘 Live 系统,人家大 多不是追求光盘有多小,而是比这个光盘用了多少外部插件,能提供什么功能,偶看到老 外做出来基本上都有 300 多 MB 之巨,当然功能更全,在上面打 DX 游戏的都有,人家完 全是在玩光盘 Live系统。 四、无桌面派 PE的制作方法。 为什么把深山红叶的那种光盘称为无桌面派,这个说法有点免强,必竞只是 Shell 壳的不 同,只是不能在桌面上或是任务栏上点右键而矣,偶觉得除了这点外,和有桌面的 PE 操 作起来差不多吧。准备好我们的工具:PE Builder 3.0.4或是 3.1.0版软件(以后简称 PEB), 母盘用WinXP SP2完整版(切记不要用精简版 XP,包括 D 大的光盘也不行,会报错的, 影响制作时查错),一些绿色的小软件,WinRAR 压缩包制作软件,同时下载偶提供的这个 从国外的坛子里下载到的 PE插件——GeoShell V2.0和偶修改过的 PE中文插件,当然,必 要的测试装备,虚拟机也要准备好,本次提供 VPC家族中最快的 5.2全版下载。另外,偶 也向国外的坛子学习,不提供 PE成品盘,只提供 PE插件和制作方法。 (1).将下载的 PEB安装或是解压到一个目录下。 (2).将偶提供的这两个插件解压放入 PEB目录下的 Plugins目录中。 (3).将 XP原光盘插入虚拟光驱,或是用 UltraIso一类的软件提取到硬盘某目录下。 (4).编辑 PEB目录下 nu2menu目录中的 nu2menu.xml 文件,将里面的部分 DD 换成中文 的,如下表类拟的样子。 ★ MiniOS WinXPE ★ ◆系统附件 ◆控制面板 ◆系统配置 常用工具软件 数据恢复软件 磁盘工具软件 Ghost 8.3 备份/恢复 简单解释一下这个 PEB中的 XML格式,所有的东西都是以为开头为结 尾的格式配对,我们修改这个文件可以在 Winpe 中添加主菜单,子菜单,以及子菜单项和 它们所对应的程序,基本格式都是固定的。如下面这行 ◆控制面板 ,这行前面指出 MITEM为弹出式菜单“POPUP”类型,子联项MenuID=” Control pan”是偶自定义添加的 ID 值,菜单中文显示名为“◆控制面板”,最后以为结尾。效果如图所示:多比较 一下里面相同部分和不同分部,你也会得到和偶一样的结果,当然自己就可以随意的添加 菜单项了。这条是显示一个分格符。 (5).编写 Ghost插件为 PE添加 Ghost功能。 ; ghost.inf ; PE Builder v3 plug-in INF file for Symantec Ghost32 ; Created by Bart Lagerweij [Version] Signature= "$Windows NT$" [PEBuilder] Name="Symantec Ghost 8.3" Enable=1 [WinntDirectories] a="Programs\ghost",2 [SourceDisksFiles] files\ghost32.exe=a,,3 files\ghostexp.exe=a,,3 [Software.AddReg] 0x0, "Classes\.gho" 0x1, "Classes\.gho", "", "Ghost" 0x0, "Classes\Ghost" 0x1, "Classes\Ghost", "", "Ghost image file" 0x0, "Classes\Ghost\DefaultIcon" 0x2, "Classes\Ghost\DefaultIcon", "", "%SystemDrive%\Programs\ghost\ghostexp.exe,0" 0x0, "Classes\Ghost\shell" 0x0, "Classes\Ghost\shell\open" 0x0, "Classes\Ghost\shell\open\command" 0x2, "Classes\Ghost\shell\open\command", "", "%SystemDrive%\Programs\ghost8\ghostexp.exe "%1"" 将上面这段码复制到一个文本文件中,并改名为 INF 为后辍。在 PEB 的 Plugins 目录下创 建 Ghost83文件夹,然后在这个文件夹下面再建立一个 Files目录,同时把你的 Ghost32.exe 和 GhostExp.exe文件放 Files目录中,并将刚才那个 INF放 Ghost83目录中。 五、有桌面派 PE的制作方法。(此过程稍有点长,也是本文的重点) 六、PE的减肥方法 PE 如果是用 PEB 或是 MS 本身的光盘,体积都有点大,MS 的有 300MB 之巨,如果你想 让 PE的体积变得小一些,那么就需要对它进行减肥,有些 PE 上面的文件并不是系统必需 的东西,或是 PE软件不会用到的 DLL相关文件。偶在阅读MS PE帮助的时候看到这么一 条相关说明,就是如何制作最小化的 PE,MS 给出了相关的说明和可删除的文件列表,并 出示了一段批处理的代码,偶觉得非常兴奋,不过有趣的是,这段代码居然有错,根本无 法执行。偶对 For 循环并不在行,好在偶耐下性子,边看 MS 的帮助,边调试这个批处理, 几改几改的,终于把这个批处理搞得正常运作了,呵呵,成功的删除了 MS 给出的列表文 件中的可删除文件,不过后来测试,这个列表中的文件也不见得真正可删,有部分文件在 测试中还需要用到,如 Diskcopy.dll 实际上是格式化驱动器的支持文件,需要用这个功能 的最好不要删,这里提供出来仅做参考。 fonts\AHRONBD.TTF fonts\ANDLSO.TTF fonts\ANGSA.TTF fonts\ANGSAB.TTF fonts\ANGSAI.TTF fonts\ANGSAU.TTF fonts\ANGSAUB.TTF fonts\ANGSAUI.TTF fonts\ANGSAUZ.TTF fonts\ANGSAZ.TTF fonts\ARIAL.TTF fonts\ARIALBD.TTF fonts\ARIALBI.TTF fonts\ARIALI.TTF fonts\ARIBLK.TTF fonts\ARTRBDO.TTF fonts\ARTRO.TTF fonts\BROWA.TTF fonts\BROWAB.TTF fonts\BROWAI.TTF fonts\BROWAU.TTF fonts\BROWAUB.TTF fonts\BROWAUI.TTF fonts\BROWAUZ.TTF fonts\BROWAZ.TTF fonts\CGA40850.FON fonts\CGA40WOA.FON fonts\CGA80850.FON fonts\CGA80WOA.FON fonts\COMIC.TTF fonts\COMICBD.TTF fonts\CORDIA.TTF fonts\CORDIAB.TTF fonts\CORDIAI.TTF fonts\CORDIAU.TTF fonts\CORDIAUB.TTF fonts\CORDIAUI.TTF fonts\CORDIAUZ.TTF fonts\CORDIAZ.TTF fonts\COUR.TTF fonts\COURBD.TTF fonts\COURBI.TTF fonts\COURE.FON fonts\COURF.FON fonts\COURI.TTF fonts\DAVID.TTF fonts\DAVIDBD.TTF fonts\DAVIDTR.TTF fonts\DOSAPP.FON fonts\EGA40850.FON fonts\EGA40WOA.FON fonts\EGA80850.FON fonts\EGA80WOA.FON fonts\ESTRE.TTF fonts\FRAMD.TTF fonts\FRAMDIT.TTF fonts\FRANK.TTF fonts\GAUTAMI.TTF fonts\GEORGIA.TTF fonts\GEORGIAB.TTF fonts\GEORGIAI.TTF fonts\GEORGIAZ.TTF fonts\IMPACT.TTF fonts\KARTIKA.TTF fonts\L_10646.TTF fonts\LATHA.TTF fonts\LSANS.TTF fonts\LSANSD.TTF fonts\LSANSDI.TTF fonts\LSANSI.TTF fonts\LUCON.TTF fonts\LVNM.TTF fonts\LVNMBD.TTF fonts\MANGAL.TTF fonts\MODERN.FON fonts\MRIAM.TTF fonts\MRIAMC.TTF fonts\MRIAMFX.TTF fonts\MRIAMTR.TTF fonts\MVBOLI.TTF fonts\NRKIS.TTF fonts\PALA.TTF fonts\PALAB.TTF fonts\PALABI.TTF fonts\PALAI.TTF fonts\RAAVI.TTF fonts\ROD.TTF fonts\RODTR.TTF fonts\ROMAN.FON fonts\SCRIPT.FON fonts\SERIFE.FON fonts\SERIFF.FON fonts\SHRUTI.TTF fonts\SIMPBDO.TTF fonts\SIMPFXO.TTF fonts\SIMPO.TTF fonts\SMALLE.FON fonts\SSERIFF.FON fonts\SYLFAEN.TTF fonts\SYMBOL.TTF fonts\TAHOMABD.TTF fonts\TIMES.TTF fonts\TIMESBD.TTF fonts\TIMESBI.TTF fonts\TIMESI.TTF fonts\TRADBDO.TTF fonts\TRADO.TTF fonts\TREBUC.TTF fonts\TREBUCBD.TTF fonts\TREBUCBI.TTF fonts\TREBUCIT.TTF fonts\TUNGA.TTF fonts\UPCDB.TTF fonts\UPCDBI.TTF fonts\UPCDI.TTF fonts\UPCDL.TTF fonts\UPCEB.TTF fonts\UPCEBI.TTF fonts\UPCEI.TTF fonts\UPCEL.TTF fonts\UPCFB.TTF fonts\UPCFBI.TTF fonts\UPCFI.TTF fonts\UPCFL.TTF fonts\UPCIB.TTF fonts\UPCIBI.TTF fonts\UPCII.TTF fonts\UPCIL.TTF fonts\UPCJB.TTF fonts\UPCJBI.TTF fonts\UPCJI.TTF fonts\UPCJL.TTF fonts\UPCKB.TTF fonts\UPCKBI.TTF fonts\UPCKI.TTF fonts\UPCKL.TTF fonts\UPCLB.TTF fonts\UPCLBI.TTF fonts\UPCLI.TTF fonts\UPCLL.TTF fonts\VERDANA.TTF fonts\VERDANAB.TTF fonts\VERDANAI.TTF fonts\VERDANAZ.TTF fonts\VGA850.FON fonts\VGA860.FON fonts\VGA861.FON fonts\VGA863.FON fonts\VGA865.FON fonts\VGAFIX.FON fonts\VGAOEM.FON fonts\VGASYS.FON fonts\VRINDA.TTF fonts\WEBDINGS.TTF fonts\WINGDING.TTF spcmdcon.sys bootfix.bin System32\Drivers\te_protu.qm System32\Drivers\gm.dls System32\Drivers\te_protu.sm System32\Drivers\*.bin System32\Drivers\*.usa System32\Drivers\*.t4 System32\Drivers\te_protm.pm2 System32\Drivers\el656ct5.sys System32\Drivers\fusbbase.sys System32\Drivers\fxusbase.sys System32\Drivers\fpcibase.sys System32\Drivers\fpcmbase.sys System32\Drivers\atmuni.sys System32\Drivers\stlnata.sys System32\Drivers\EMU10K1M.SYS System32\Drivers\cinemst2.sys System32\Drivers\el656se5.sys System32\Drivers\digirlpt.sys inf\net10.inf System32\DRIVERS\tdkcd31.sys inf\net1394.inf inf\net3c556.inf System32\DRIVERS\EL556ND5.sys inf\net3c589.inf System32\DRIVERS\el589nd5.sys inf\net3c985.inf System32\DRIVERS\el985n51.sys inf\net3sr.inf System32\DRIVERS\srwlnd5.sys inf\net5515n.inf System32\DRIVERS\ip5515.sys inf\net557.inf System32\DRIVERS\e100b325.sys inf\net559ib.inf System32\DRIVERS\D100IB5.SYS inf\net575nt.inf System32\DRIVERS\el575ND5.sys inf\net650d.inf System32\DRIVERS\dfe650d.sys inf\net656c5.inf System32\DRIVERS\el656CD5.sys inf\net656n5.inf System32\DRIVERS\el656ND5.sys inf\net713.inf System32\DRIVERS\mxnic.sys inf\net83820.inf System32\DRIVERS\DP83820.sys inf\net8511.inf System32\DRIVERS\ADM8511.SYS inf\netac300.inf System32\DRIVERS\ac300nd5.sys inf\netali.inf System32\DRIVERS\ALI5261.SYS inf\netambi.inf System32\DRIVERS\AMB8002.SYS inf\netamd.inf System32\DRIVERS\pcntn5m.sys inf\netamd2.inf System32\DRIVERS\pcntpci5.sys inf\netamdhl.inf System32\DRIVERS\pcntn5hl.sys inf\netan983.inf System32\DRIVERS\an983.sys inf\netana.inf System32\DRIVERS\adptsf50.sys inf\netasp2k.inf System32\DRIVERS\aspndis3.sys inf\netb57xp.inf System32\DRIVERS\b57xp32.sys inf\netbcm4e.inf System32\DRIVERS\BCM4E5.SYS inf\netbcm4p.inf System32\DRIVERS\bcm42xx5.sys inf\netbcm4u.inf System32\DRIVERS\bcm42u.sys inf\netbrzw.inf System32\DRIVERS\BRZWLAN.sys inf\netcb102.inf System32\DRIVERS\cb102.sys inf\netcb325.inf System32\DRIVERS\CB325.SYS inf\netcbe.inf System32\DRIVERS\cben5.sys inf\netce2.inf System32\DRIVERS\ce2n5.sys inf\netce3.inf System32\DRIVERS\CE3N5.SYS inf\netcem28.inf System32\DRIVERS\cem28n5.sys inf\netcem33.inf System32\DRIVERS\cem33n5.sys inf\netcem56.inf System32\DRIVERS\cem56n5.sys inf\netcicap.inf inf\netclass.inf inf\netcpqc.inf System32\DRIVERS\cnxt1803.sys inf\netcpqg.inf System32\DRIVERS\n1000nt5.sys inf\netcpqi.inf System32\DRIVERS\n100325.sys inf\netcpqmt.inf System32\DRIVERS\cpqtrnd5.sys System32\ctmasetp.dll System32\DRIVERS\rocket.sys inf\netdefxa.inf System32\DRIVERS\DEFPA.sys inf\netdf650.inf System32\DRIVERS\dfe650.sys inf\netdgdxb.inf System32\DRIVERS\bioprime.bin inf\netdlh5x.inf System32\DRIVERS\DLH5XND5.sys inf\netdm.inf System32\DRIVERS\DM9PCI5.SYS inf\nete1000.inf System32\DRIVERS\e1000nt5.sys inf\nete100i.inf System32\DRIVERS\E100ISA4.sys inf\netejxmp.inf System32\DRIVERS\IBMEXMP.sys inf\netel515.inf System32\DRIVERS\EL515.sys inf\netel574.inf System32\DRIVERS\el574nd4.sys inf\netel5x9.inf inf\netel90a.inf System32\DRIVERS\el90xnd5.sys inf\netel90b.inf System32\DRIVERS\el90xbc5.sys inf\netel980.inf System32\DRIVERS\el98xn5.sys inf\netel99x.inf System32\DRIVERS\EL99XN51.SYS System32\DRIVERS\EL99XRUN.OUT inf\netepicn.inf System32\DRIVERS\lanepic5.sys inf\netepro.inf System32\DRIVERS\epro4.sys inf\netex10.inf System32\DRIVERS\ex10.sys inf\netf56n5.inf inf\netfa312.inf System32\DRIVERS\FA312nd5.sys inf\netfa410.inf System32\DRIVERS\fa410nd5.sys inf\netfjvi.inf System32\DRIVERS\f3ab18xi.sys inf\netfjvj.inf System32\DRIVERS\f3ab18xj.sys inf\netfore.inf System32\DRIVERS\PCA200E.BIN System32\DRIVERS\PCA200E.SYS inf\netforeh.inf System32\DRIVERS\FOREHE.SYS inf\netibm.inf System32\DRIVERS\IBMTOK.sys inf\netibm2.inf System32\DRIVERS\IBMTRP.SYS inf\netklsi.inf System32\DRIVERS\usb101et.sys inf\netktc.inf System32\DRIVERS\KTC111.SYS inf\netlm.inf System32\DRIVERS\lmndis3.sys inf\netlm56.inf inf\netlnev2.inf System32\DRIVERS\LNE100.SYS inf\netmadge.inf System32\DRIVERS\mdgndis5.sys inf\netmhzn5.inf System32\DRIVERS\xem336n5.sys inf\netnf3.inf System32\DRIVERS\NetFlx3.sys inf\netngr.inf System32\DRIVERS\Ngrpci.sys inf\netnovel.inf System32\DRIVERS\ne2000.sys inf\netosi2c.inf System32\DRIVERS\otc06x5.sys inf\netosi5.inf System32\DRIVERS\otceth5.SYS inf\netpc100.inf System32\DRIVERS\pc100nds.sys inf\netpnic.inf System32\DRIVERS\lne100tx.sys inf\netpwr2.inf System32\DRIVERS\smcpwr2n.sys inf\netrlw2k.inf System32\DRIVERS\rlnet5.sys inf\netsis.inf System32\DRIVERS\sisnic.sys inf\netsk98.inf System32\DRIVERS\sk98xwin.SYS inf\netsk_fp.inf System32\DRIVERS\SkFpWin.SYS inf\netsla30.inf System32\DRIVERS\Sla30nd5.sys inf\netsmc.inf System32\DRIVERS\smc8000n.sys inf\netsnip.inf inf\nettb155.inf System32\DRIVERS\tbatm155.sys inf\nettdkb.inf System32\DRIVERS\tdk100b.sys inf\nettiger.inf System32\DRIVERS\tjisdn.sys inf\nettpro.inf System32\DRIVERS\tpro4.sys inf\netvt86.inf System32\DRIVERS\fetnd5.sys inf\netw840.inf System32\DRIVERS\W840ND.sys inf\netw926.inf System32\DRIVERS\w926nd.sys inf\netw940.inf System32\DRIVERS\w940nd.sys inf\netwlan.inf System32\DRIVERS\NetWlan5.img System32\DRIVERS\NetWlan5.sys inf\netwlan2.inf System32\DRIVERS\wlandrv2.sys inf\netwv48.inf System32\DRIVERS\wlluc48.sys inf\netx500.inf System32\DRIVERS\pcx500.sys inf\netx56n5.inf inf\netxcpq.inf System32\DRIVERS\cpqndis5.sys WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x- ww_8d353f13\gdiplus.dll system32\kbdbe.dll system32\kbdbr.dll system32\kbdca.dll system32\kbdda.dll system32\kbddv.dll system32\kbdes.dll system32\kbdfc.dll system32\kbdfi.dll system32\kbdfr.dll system32\kbdgae.dll system32\kbdgr.dll system32\kbdgr1.dll system32\kbdic.dll system32\kbdir.dll system32\kbdit.dll system32\kbdit142.dll system32\kbdla.dll system32\kbdmac.dll system32\kbdne.dll system32\kbdnec.dll system32\kbdno.dll system32\kbdpo.dll system32\kbdsf.dll system32\kbdsg.dll system32\kbdsp.dll system32\kbdsw.dll system32\kbduk.dll system32\kbdusl.dll system32\kbdusr.dll system32\kbdusx.dll System32\ALRSVC.DLL System32\AVMC20.DLL System32\AVMCAPI.DLL System32\AVMENUM.DLL System32\BROWSER.DLL System32\C218TNT.COD System32\C320TNT.COD System32\CERTCLI.DLL System32\CNBJMON.DLL System32\CRYPTNET.DLL System32\CSCDLL.DLL System32\CTMASETP.DLL System32\CTMRCLAS.DLL System32\DCIMAN32.DLL System32\DDRAW.DLL System32\DGCLASS.DLL System32\DGNET.DLL System32\DGRPSETU.DLL System32\DIAPI2.DLL System32\DIAPI232.DLL System32\DIAPI2NT.DLL System32\DISRVPP.DLL System32\DISRVSU.DLL System32\DITRACE.EXE System32\DIVAPROP.DLL System32\DIVASU.DLL System32\DNSRSLVR.DLL System32\DUSER.DLL System32\EQNCLASS.DLL System32\EQNDIAG.EXE System32\EQNLOGR.EXE System32\EQNLOOP.EXE System32\EXTMGR.DLL System32\FPNPBASE.SYS System32\FPNPBASE.USA System32\FUS2BASE.SYS System32\GPTEXT.DLL System32\HALSP.DLL System32\HCCOIN.DLL System32\ICMP.DLL System32\IMGUTIL.DLL System32\INITPKI.DLL System32\IO8PORTS.DLL System32\IOLOGMSG.DLL System32\KBDMAC.DLL System32\LINKINFO.DLL System32\LOADPERF.DLL System32\LOCALSPL.DLL System32\LZ32.DLL System32\MOBSYNC.DLL System32\MPRUI.DLL System32\MSAFD.DLL System32\MSCAT32.DLL System32\MSCMS.DLL System32\MSFTEDIT.DLL System32\MSGSVC.DLL System32\MSJET40.DLL System32\MSLS31.DLL System32\MSSIGN32.DLL System32\MSSIP32.DLL System32\MSVCIRT.DLL System32\MSWSTR10.DLL System32\NET.HLP System32\NETEVENT.DLL System32\NETUI2.DLL System32\NWAPI32.DLL System32\NWCFG.DLL System32\NWEVENT.DLL System32\NWPROVAU.DLL System32\NWWKS.DLL System32\OAKLEY.DLL System32\ODBC16GT.DLL System32\ODBC32GT.DLL System32\ODBCBCP.DLL System32\ODBCCONF.DLL System32\ODBCCP32.CPL System32\ODBCCP32.DLL System32\ODBCCR32.DLL System32\ODBCCU32.DLL System32\ODBCJI32.DLL System32\ODBCJT32.DLL System32\ODBCP32R.DLL System32\ODBCTRAC.DLL System32\OLECLI32.DLL System32\OLECNV32.DLL System32\OLESVR.DLL System32\OLESVR32.DLL System32\OLETHK32.DLL System32\PEER.EXE System32\PERFCTRS.DLL System32\PERFNW.DLL System32\PORTMON.EXE System32\PSTOREC.DLL System32\QUERY.DLL System32\RASDLG.DLL System32\RNR20.DLL System32\RSVP.EXE System32\RSVPMSG.DLL System32\RSVPPERF.DLL System32\RTIPXMIB.DLL System32\SCECLI.DLL System32\SECURITY.DLL System32\SNMPAPI.DLL System32\SOFTPUB.DLL System32\SPDPORTS.DLL System32\SPOOLSS.DLL System32\SPXCOINS.DLL System32\SPXPORTS.DLL System32\STLNPROP.DLL System32\SXPORTS.DLL System32\UFAT.DLL System32\UREG.DLL System32\URL.DLL System32\UTILDLL.DLL System32\W32TOPL.DLL System32\WDIGEST.DLL System32\WIN32SPL.DLL System32\WINHTTP.DLL System32\WINIPSEC.DLL System32\WINSCARD.DLL System32\WSHISN.DLL System32\WZCSAPI.DLL System32\XLOG.EXE System32\XMLPROV.DLL System32\XMLPROVI.DLL system32\lang\default.lng system32\lang\master.lng system32\lang system32\ntsd.exe system32\regedt32.exe system32\convert.exe system32\nslookup.exe system32\odbcad32.exe system32\odbcconf.exe system32\print.exe system32\replace.exe system32\sort.exe system32\wordpad.exe system32\diskcopy.dll 改好的批处理如下: for /f "usebackq delims==" %%i in ("swinpe.txt") do del /q /f %%i 存为一个 CMD文件,将上面的文件列表存为 swinpe.txt,放 PE 的 I386 目录中,然后就可 以用这个批处理直接删除 PE 多余文件了。当然,可以删除的文件不止这么少,要不老毛 的也不会减到只有 500 多个文件了,自己多研究吧,找到新的可删除的文件就添加在这个 列表文件中了。减肥第二法,就是把一些可执行文件以及 DLL用 PE压缩软件再压缩一下, 如 Explorer.exe,msvbvm60.dll,Regedit.exe,一些 CPL 控制面板程序等等,有一些系统级 的 DLL 请不要压缩,如 Shell32.dll 之类的,压缩后直接导致 PE 内存占用量猛升,另一些 如 CMD.exe 压缩后,显示字体有点怪怪的,反正多测试,发现不对就还原,不要压缩了。 减肥第三法,优化注册表,用一些清理注册表的软件,对 PE 的注册表进行无效键值的删 除,有利于注册表文件的减少,更利于 PE的快速运作。 七、PE注册表修改法 因为 PE 是在光盘上运行的系统,而 PE 本来就和我们的 XP 一样,也需要使用注册表来保 存系统重要设置和软件相关信息,光盘又是只读不能写入的东西,那么 PE 系统是如何在 只读光盘上写入注册表信息的呢?呵呵,这个问题也是偶最初在研究 PE 的时候想要知道 的事。通过查阅 PEB 插件和 MS-WinPE 光盘上的注册表信息,偶发现 PE 是这样解决注 册表写入问题的:使用的是那个 Ramdisk内存盘驱动程序或是MS自己专为 PE开发的VDM 虚拟磁盘驱动,在内存中开辟磁盘缓冲使注册表进入这个空间,当然就可以写入了,换句 话说,PE占用内存与注册表大小以及开辟的 Ramdisk大小相关,内部基本服务只要不上网, 占得并不是很多。第二、当我们需要对这个 PE 进行部分注册表优化以及添加一些软件注 册信息一类的操作时,由于 PE 独有的特性,注册表在运行时修改有效,而重启后修改项 目将会丢失,(当然,这也有好处,对某些爱往注册表里写东西的病毒天生免疫),怎么操 作呢?深山红叶作者余刘琅先生曾在一个帖子里提到了这个如何操作问题,那就是用软件 加载 PE 注册表单元进行修改的方法,使用工具即为 MS 自己的 Regedit.exe 或是 Register workshop V3 这个软件,偶推荐后者,因为比 MS 自带的要强大得多,而且搜索注册表的 速度也快得多。PE 注册表对应的文件有三个,两个位于 I386 目录下的 System32\config 中,,Default 和 Software,另一个位于 I386 目录下,名为 Setupldr.hiv,先这些文件拷到硬 盘上,各对于应于系统哪个主键呢?这个偶就不在这里多说了,自己用下面的方法打开看 看就知道了,偶都说完了,您自己连研究的机会都没有了。运行 Register wrokshop,用菜 单文件下面的“加载注册表单元”,在打开的对话框中选择偶说的这三个注册表文件,然后 给加载单元起个名字,例如取名 WinPE,软件会自动加载到当前系统注册表第三个主键 HKLM下面,然后就展开WinPE下面的子键,如同我们平时修改注册表一样对这个注册表 进行修改,修改完成后,右点刚才的单元名,选卸载注册表单元,最后替换光盘上的相同 文件,启动 PE看看是否有效。 八、研究 PE中某软件无法运行的方法 PE减肥后,我们无法确定系统是否还缺少一些文件,所以需要测试所有加入 PE中的软件, 如果加入软件太多了,这个测试量还是蛮大的。如果发现某软件不能在 PE 中运行,出现 一些运行错误,有一些情况我们还是可以自行解决的,如某软件提示磁盘为只读,不能写 入某数据文件,那么就说明这个软件需要写盘,我们可以将其用 Winrar 软件打包成 EXE 文件,将其在运行时释放到临时的 B 盘上进行运行。如果有某软件双击后,无法运行,有 些软件会提示缺少什么文件,按提示添加既可,有些软件什么提示都没有,那么这里提供 一个微软的小工具,Depend.exe,查找 DLL 之间依赖关系的,最好将其内置于 PE 中,文 件本身不大,才 14KB,使用方法是 Depend /l /f:xxx.xxx,XXX可以是可执行文件,也可 是 DLL 文件,不过只能查 32 位的,16 位的程序查不到。例如,XnView 这个看图软件, 偶放在 PE 中不能运行,经用这个小工具后,查到显示 Miss 了三个 DLL:Avifil32.dll, msacm32.dll,msvfw32.dll,于是从 XP 中拷了这三个 DLL 加入 PE 中,再运行 XnView, 成功,再如 Acdsee 3.1,运行也不成功,偶一查,得知缺少 Shlfold.dll系统文件,加入,ACDSEE 也能运行了。当然,这只是一个简单的办法,如果某软件文件也不少,还是不能运行,多 半是注册表里少什么东西,可以用 RegMon 之类的程序进行监视,看看有什么动静,总之 想办法解决,不能解决的只有换其它的绿色软件了,也许您还有更好的办法,研究出来了 告诉偶一声哈,呵呵。 九、引用老毛关于制作Winpe.IS_压缩文件的相关说明和个人认为的优缺点。 老毛的这篇相关说明很有一定的技术要点在里面,一时找不到原文在哪里了,大意是以 Ramdisk方式启动 PE,用的是修改过后的Win2003的一个启动文件,以及修改过后的光盘 引导扇区,然后用 Wincab 对做好的 PE 光盘 ISO 文件进行再压缩,格式是 CAB 格式的, 用 CABARC命令行工具也可以进行这个操作,所以光盘上那个Winpe.is_文件可以被Winrar 解压得到原光盘文件。这种 Ramdisk 引导方式利用 Win2003 这种特殊引导功能,开辟内存 空间,直接将 Winpe.is_解压到内存中,然后再从内存中引导 PE 启动,因而光盘启动会占 用更多的内存空间,所以老毛的 PE 非 128MB 内存不能启动。不过老毛也说过,也可以把 这个 Winpe.is_解压出来刻盘启动,所需的启动内存也会大大减少,偶没有时间来验证老毛 的这个说法,有兴趣的可以试试。个人认为这就是空间和体积之间的矛盾之处吧,想要占 内存少就可以启动 PE,那么只有牺牲光盘空间,想要占光盘最小,只有用大内存来换取, 鱼与熊掌。。呵呵。。 十、PE研究与精简技术之间的关系 精简技术简单的说就是在做减法,把 XP 盘文件减到最小又实用。PE 呢,正好相反,在一 个光胴胴的内核上添加壳,硬件支持,应用软件,使 PE 变得方便易用,做的是加法。两 者之间看来互为对立,其实是可以相互支持的东西,说穿了就是在研究 Windows 系统文件 的作用,这也是精简研究的最终方向,并不是某些人理解的狭义精简,认为精简得太小没 多大用处,实际上正是这些精简得过小的系统,在使用中使我们更能深入体会和研究到 Windows各系统文件的作用,可以这么说,没有系统文件的研究,也就没有 Nlite这个软件 的诞生,从 Nlite的新版本中你也可以看到,组件中添加了以前没有的组件,如 DX 之类, 表示 Nlite的作者又新找到了与 DX相关的文件,再如以前 NT备份组件没有被标红,在新 版中却被标红了,说明有人发现了这个组件的重要性。研究精简的如果错过 PE 的研究, 一般不会有多大的进展,如从本文第五点所述的 PE 制作关键插件与技术中,例如 DX 插件中的文件列表,如果你精简的系统 DX有问题的话,那么换句话来讲,是不是缺少 DX 插件中相关的文件呢?又如,你想精简 Nlite1.21 版以前不存在的 DX 组件,是不是可以用 这个 DX 插件中文件列表来做尝试呢?这就是偶所说的互补性,实际上插件的作者开发过 程中也在向 Nlite中学习,如注册表条项的缺失问题,就是通过 Nlite找到了。PE中的一些 技术,我们同样也可以拿来用在精简技术上,如偶这次在 HOME 笔记本上添加的右键功能 就是从 PE中借荐过来的,相互补充,相互学习是最好的研究办法。 PE 进行深入研究还有很大的空间,利用 PE 为我们日常生活中服好务,一切新生事物源于 对功能的需求,本文所探讨的只是 PE 制作技术中的一些牛毛,更多的是您在实际应用中 的研究发现的新东西,不要一切只为获取而获取,用网友的一句话来说:不要老是以自己 是“菜鸟”为由做小白鼠,
/
本文档为【浅入深出话PE】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索