例:奋斗GHOST XP SP3快速装机版V1.1.iso之PECMD注解
本贴只为学习PE技术而努力的同志们创作,由于网上关于PECMD教程帖子非常少,对于想学习PE技术的同志们来说不是个好消息。有人会说不是有PECDM帮助文档吗?PECMD文档很多命令注解,例子不多,看一会就会让人头痛。今天我以自己封装[奋斗GHOST XP SP3快速装机版V1.1.iso](此版本未放出)系统盘当中的PECMD配置文件(PECMD.INI)来做教程。
注解目的是为想学习PECMD,而又没有资料的人们!提供参考!
PECMD.INI配置文件内容详解:
`开始日志记录
_SUB Open_LOGS
//定义一个子过程名为:Open_LOGS
LOGS %SystemRoot%\PECMD.LOG
//启用日志记录
_END
//结束子过程
`判断外置程序
_SUB Set_SOFTLOAD
//定义一个子过程名为:Set_SOFTLOAD
EXEC =!%SystemRoot%\SYSTEM32\ShowDrive.EXE
//EXEC命令可以执行(BAT、EXE、CMD)程序、加(!)感叹号表示心隐藏方式运行、本例中执行ShowDrive.EXE
FORX !\PESOFT\PESOFT.INI,MyInI2,1,TEAM LOAD %MyInI2%|ENVI LOADINI2=YES
//FORX:对匹配的文件进行相应的命令操作。!:表示对所有分区进行逆序搜索;\:表示搜索所有分区;两个前导符不能单独存在。
FIND $%LOADINI2%=YES,!LINK %Desktop%\启用外部软件,PECMD.EXE,LOAD \PESOFT\PESOFT.INI,shell32.dll#180
//FIND:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2; $%LOADINI2%=YES:环境变量LOADINI2设为YES;
LINK:创建快捷方式;!LINK %Desktop%\启用外部软件:隐藏执行在桌面上创建启用外部软件快捷方式;PECMD.EXE,LOAD
\PESOFT\PESOFT.INI:用PECMD.EXE加载PESOFT.INI配置文件;shell32.dll#180:调用shell32.dll动态链接库文件
_END
//结束子过程
`设定系统
_SUB Fix_System
//_SUB:定义一个子过程名为:Fix_System
TEXT 正在设定系统……#0xFFFFFF
//TEXT:在登录画面中或桌面窗口显示文字.#后加颜色值,本例中文字色彩为:白色
ENVI V0=HKLM\Software\Microsoft\Windows\CurrentVersion
//ENVI:设置或清除环境变量,本例中是设置环境变量。V0:环境变量名
ENVI V1=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace
//ENVI:设置或清除环境变量,本例中是设置环境变量。V1:环境变量名
REGI %V0%\ShellServiceObjectDelayLoad\PostBootReminder=
//REGI:设置或删除注册表数据。本例中是删除注册表键值:PostBootReminder。
操作符"!"为删除整个子项;操作符"="且没有数据为删除;操作符"="且有数据为设置数据。
数据类型。省略为字符串;"#"为REG_DWORD类型数据,如"#0x20";"@"为REG_BINARY类数据,
如"@23 34 90 255"
数据值 字符串空值用""表示、REG_DWORD类型数据、REG_BINARY类型数据支持16进制数值。
REGI %V1%\{7007ACC7-3202-11D1-AAD2-00805FC1270E}\!
//删除子项:{7007ACC7-3202-11D1-AAD2-00805FC1270E}
REGI %V1%\{D20EA4E1-3957-11d2-A40B-0C5020524153}\!
//删除子项:{D20EA4E1-3957-11d2-A40B-0C5020524153}
TEAM REGI HKCR\lnkfile\IsShortcut|ENVI V0=|ENVI V1=
//TEAM:按顺序执行多条命令;REGI:设置或删除注册表数据;|:管道符命令;ENVI:设置或清除环境变量;HKCR\lnkfile\IsShortcut:删除子键;V0、V1:删除这两个子键
REGI HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\!
//删除子键:{20D04FE0-3AEA-1069-A2D8-08002B30309D}
REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoNetConnectDisconnect=#0x1
//不显示我的文档。
REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\{450D8FBA-AD25-11D0-98A8-0800361B1103}=#1
//添加ImDisk的快捷方式
REGI HKCR\Drive\shell\ImDiskSaveImage\=保存ImDisk虚拟磁盘
//创建子键名:ImDiskSaveImage;值为:保存ImDisk虚拟磁盘
REGI HKCR\Drive\shell\ImDiskSaveImage\command\=rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %L
//创建子键名:command;键值:rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %L
REGI HKCR\Drive\shell\ImDiskUnmount\=卸载ImDisk虚拟磁盘
//与上同
REGI HKCR\Drive\shell\ImDiskUnmount\command\=rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %L
//与上同
REGI HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\=加载ImDisk虚拟磁盘
//与上同
REGI HKLM\SOFTWARE\Classes\Ultraiso\shell\ImDiskMountFile\command\=rundll32.exe imdisk.cpl,RunDLL_MountFile %L
//与上同
REGI HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\=加载ImDisk虚拟磁盘
//与上同
REGI HKLM\SOFTWARE\Classes\Winimage\shell\ImDiskMountFile\command\=rundll32.exe imdisk.cpl,RunDLL_MountFile %L
//与上同
`在设备管理器中显示中文
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}\=DVD/CD-ROM 驱动器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}\=磁盘驱动器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\=显示卡
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E969-E325-11CE-BFC1-08002BE10318}\=软盘控制器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\=IDE ATA/ATAPI 控制器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}\=键盘
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\=声音、视频和游戏控制器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}\=鼠标和其它指针设备
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\=网络适配器
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E97D-E325-11CE-BFC1-08002BE10318}\=系统设备
//与上同
REGI HKLM\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}\=存储卷
//与上同
`修改注册表和相关文件名以支持 Vista 安装
REGI HKLM\SYSTEM\CurrentControlSet\Control\MiniNT\!
//REGI:设置或删除注册表数据;删除子键:HKLM\SYSTEM\CurrentControlSet\Control\MiniNT\
EXEC !CMD.EXE /C "REN %SystemRoot%\SYSTEM32\HALACPI.DLL HAL.DLL"
//EXEC:执行 EXE 、BAT、CMD 程序;!CMD.EXE /C:执行字符串指定的命令然后中断;"REN %SystemRoot%\SYSTEM32\HALACPI.DLL HAL.DLL":这是前文提到的字符串;REN:重命名文件
_END
//结束子过程
`列表框选择结果检测
_SUB CheckMod
//定义子过程名为:CheckMod
KILL \%Windows1%
//KILL:关闭指定标题的窗口或强制终止指定的进程。本例中是关闭Windows1窗口
TEXT 正在设定虚拟内存……#0xFFFFFF
//TEXT:在登录画面中或桌面窗口显示文字。本例中是登录画面;正在设定虚拟内存……:显示文字内容;#0xFFFFFF:显示文字颜色为白色
FIND $%List1%=%P1%,TEAM FILE C:\PAGEFILE.SYS|PAGE C:\PAGEFILE.SYS 256 384
//FIND:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2。$%List1%=%P1%:List1,P1是环境变量名;TEAM:按顺序执行各条命令。FILE:操作文件或目录。本例中是操作文件。先执行C:\PAGEFILE.SYS;|:管道符命令;PAGE:设置页面文件(虚拟内存)。 C:\PAGEFILE.SYS 256 384:设置虚拟内存中的虚拟内存最小为256M、最大为384M。
FIND $%List1%=%P2%,TEAM FILE D:\PAGEFILE.SYS|PAGE D:\PAGEFILE.SYS 256 384
//与上同
FIND $%List1%=%P3%,TEAM FILE E:\PAGEFILE.SYS|PAGE E:\PAGEFILE.SYS 256 384
//与上同
FIND $%List1%=%P4%,TEAM FILE F:\PAGEFILE.SYS|PAGE F:\PAGEFILE.SYS 256 384
//与上同
FIND $%List1%=%P5%,TEAM FILE G:\PAGEFILE.SYS|PAGE G:\PAGEFILE.SYS 256 384
//与上同
FIND $%List1%=%P6%,TEAM FILE H:\PAGEFILE.SYS|PAGE H:\PAGEFILE.SYS 256 384
//与上同
FIND $%List1%=%P7%
//FIND:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2。List1,P7是环境变量名,没有设置虚拟内存。
_END
//结束子过程
`配置选择窗口
_SUB Windows1,W305H185,设置虚拟内存,,,1
//_SUB:定义窗口(Windows1:窗口名称);W305H185:窗口形状(宽305;高185);设置虚拟内存,,,1:窗口标题
ENVI P1=C 盘 (C:\PAGEFILE.SYS)
//ENVI P1=C 盘:设置P1为C盘 ;PAGEFILE.SYS:安装过程中创建的虚拟内存页面文件
ENVI P2=D 盘 (D:\PAGEFILE.SYS)
//与上同
ENVI P3=E 盘 (E:\PAGEFILE.SYS)
//与上同
ENVI P4=F 盘 (F:\PAGEFILE.SYS)
//与上同
ENVI P5=G 盘 (G:\PAGEFILE.SYS)
//与上同
ENVI P6=H 盘 (H:\PAGEFILE.SYS)
//与上同
ENVI P7=不设置虚拟内存(不推荐)
//与上同
LABE Label1,L48T10W282H20,温馨提示:检测到系统的物理内存较小
//LABE:在本子窗口中建立一条静态文字标签。Label1:文本标签名称;L48T10W282H20:文本标签形状;温馨提示:检测到系统的物理内存较小:文本标签内容
LABE Label2,L48T30W282H20,强烈建议设置虚拟内存提高系统稳定性
//与上同
GROU Group1,L8T50W282H115,请选择虚拟内存位置
//GROU:在本子窗口中建立组合面板。Group1:组合面板名称;L8T50W282H115:组合面板形状;请选择虚拟内存位置:组合面板标题
LIST List1,L28T80W172H20,%P1%|%P2%|%P3%|%P4%|%P5%|%P6%|%P7%,,%P2%
//LIST:在本子窗口中建立一个下拉列表框。List1:下拉列表框名称;L28T80W172H20:下拉列表框形状;%P1%|%P2%|%P3%|%P4%|%P5%|%P6%|%P7%,,%P2%:下拉列表框内容
ITEM Button1,L213T79W56H24,确定,CALL CheckMod
//ITEM:在本子窗口中建立一个按钮。Button1:按钮名称;L213T79W56H24:按钮形状;确定:按钮标题;CALL CheckMod:按钮事件
LABE Label3,L20T118W258H20,注意:设置虚拟内存所在的驱动器不能被格式化!
//与上同
LABE Label4,L18T138W258H20,设置虚拟内存所在的驱动器也不能用于数据恢复!
//与上同
_END
//结束本窗口
`用户登录界面设置子过程
_SUB Start_LOGO
//定义一个名为:Start_LOGO的子过程
FIND MEM>159,TEAM LOGO %SystemRoot%\SYSTEM32\WINLOGON.JPG|TEXT 初始化系统……#0xFFFFFF L438 T250 R680 B272!TEXT 初始化系统……#0xFFFFFF L438 T250 R680 B272
//FIND:根据条件表达式是否成立,如果成立则执行命令1,否则执行命令2。MEM>159:如果内存大于159,那么条件表达式成立,则执行命令1,TEAM:按顺序执行多条命令 LOGO:设置或关闭登录画面。本例中是设置登录界面。|:管道符命令;TEXT:在登录画面中或桌面窗口显示文字。本例中是登录画面中显示文字。#0xFFFFFF L438 T250 R680 B272:显示的文字颜色。
TEAM EXEC =!%SystemRoot%\SYSTEM32\ShowDrive.EXE|EXEC =!%SystemRoot%\SYSTEM32\regorderdrv.cmd
//TEAM:按顺序执行各条命令。EXEC:执行 EXE 、BAT、CMD 程序。"="表示等待执行完成,前导"!"表示以隐藏方式执行。先执行%SystemRoot%\SYSTEM32\ShowDrive.EXE再执行%SystemRoot%\SYSTEM32\regorderdrv.cmd。
TEAM FILE %SystemRoot%\*.??_|FILE *.??_|FILE %SystemRoot%\SYSTEM32\DRIVERS\*.SY_
//TEAM:按顺序执行各条命令。FILE:操作文件或目录。本例中是操作文件。先执行%SystemRoot%\*.??_再执行%SystemRoot%\SYSTEM32\DRIVERS\*.SY_
TEAM FILE %SystemRoot%\SYSTEM32\MbrFix.exe|FILE %SystemRoot%\SYSTEM32\mountvol.exe|FILE %SystemRoot%\SYSTEM32\regorderdrv.cmd
//与上基本相同
TEAM PATH %TEMP%|FBWF P40 H96|INIT I
//TEAM:按顺序执行各条命令。PATH:操作目录。%TEMP%:目录名;FBWF:设置缓存大小,单位为M(P40:最低 H96:最高);INIT:执行最基本初始化,注册Window外壳,初始化用户文件夹和环境变量,安装键盘钩子,并建立目录;I:参数"I"表示将PECMD的部分功能安装到托盘图标的菜单中。
FIND MEM>159,!CALL @Windows1
//FIND:根据条件表达式是否成立,如果成立则执行命令1,否则执行命令2。MEM>159:如果虚拟内存大于159M,则条件成立,就隐藏执行!CALL @Windows1
_END
//结束本子过程
`用户设置
_SUB User_Setting
//定义子过程名为:User_Setting
USER 测试版,系统用户
//USER:设置"我的电脑"右键菜单属性中的用户名和公司名。本例中用户名为:测试版;公司名为:系统用户
_END
//结束子过程
`创建系统菜单子过程
_SUB Created_SYS_Menu
//定义子过程名为:Created_SYS_Menu
TEXT 正在创建系统附件菜单……#0xFFFFFF
//TEXT:在登录画面中或桌面窗口显示文字。正在创建系统附件菜单……:显示内容;#0xFFFFFF:显示文字颜色为白色。
EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U `建立快速启动栏中的显示桌面
//EXEC:执行 EXE 、BAT、CMD 程序。@PECMD.EXE;前导"@"表示在后台桌面(WinLogon)执行,彻底隐藏;$SHELL32.DLL,DllInstall:前导"$"表示以ShellExecute函数执行,用于打开非可执行文件(如 .TXT、.BMP 等)。
LINK %Programs%\附件\记事本,NOTEPAD.EXE
//LINK:创建快捷方式。%Programs%\附件:快捷方式路径;记事本:快捷方式名称;NOTEPAD.EXE:程序起始位置
LINK %Programs%\附件\命令提示符,CMD.EXE
//与上同
LINK %Programs%\附件\注册表编辑器,REGEDIT.EXE
//与上同
LINK %Programs%\附件\资源管理器,EXPLORER.EXE,,EXPLORER.EXE,1
//LINK:创建快捷方式。%Programs%\附件:快捷方式路径; 资源管理器:快捷方式名称 ;EXPLORER.EXE: 程序起始位置
_END
//结束子过程
` 注册热键
_SUB Set_HotKey
//定义子过程名为:Set_HotKey
TEXT 注册系统热键……#0xFFFFFF
//TEXT:在登录画面中或桌面窗口显示文字。本例中是登录画面
HOTK #95,PECMD.EXE SHUT R ` 休眠键重启
//HOTK:设置系统热键,并指定该热键执行的命令(.EXE 或 .CMD 或 .BAT)。#95:#虚拟按键代码;SHUT:调用PECMD的SHUT功能重启。
HOTK #255,PECMD.EXE SHUT ` 电源键关机
//按下电源键调用PECMD的SHUT功能关机。
HOTK #112,PECMD.EXE ` F1呼出帮助
//按下F1键调用PECMD的帮助
_END
//结束子过程
`创建工具菜单子过程
_SUB Created_Tools_Menu
//定义子过程名为:Created_Tools_Menu
FORX !\PESOFT\PESOFT.INI,MyInI,1,TEAM LOAD %MyInI%|ENVI LOADINI=YES
//FORX:对匹配的文件进行对应的命令操作,本命令的功能类似CMD.EXE的for命令。!:前导"!"表示对所有分区进行逆序搜索;
\PESOFT\PESOFT.INI:文件名;MyInI:变量;1:数值;TEAM:按顺序执行各条命令;LOAD:按顺序逐条运行配置文件中的命令。%MyInI%:变量目录;|:管道符命令; ENVI:设置或清除环境变量。本例中设置环境变量; LOADINI=YES:环境变量为YES
_END
//结束子过程
`设置 Windows 启动项子过程
_SUB Set_Windiws_Run
定义子过程名为:Set_Windiws_Run
RUNS %SystemRoot%\SYSTEM32\internat.exe,输入法指示器
//RUNS:设置Windows的启动项;%SystemRoot%\SYSTEM32\internat.exe:输入法指示器程序路径;输入法指示器:启动项名称
_END
//结束子过程
`加载SHELL子过程及清理无用文件
_SUB Start_Shell
//定义子过程名为:Start_Shell
TEAM TEXT 正在载入桌面!……#0xFFFFFF|LOGO|SHEL %SystemRoot%\EXPLORER.EXE|WAIT 6000
//TEAM:按顺序执行各条命令。TEXT:在登录画面中或桌面窗口显示文字。本例中是在登录画面中显示文字;正在载入桌面!……:显示文字内容;#0xFFFFFF:显示文字颜色为白色;|:管道符命令;LOGO:设置或关闭登录画面。本例中是登录画面;SHEL:加载指定的SHELL,并将SHELL锁定。%SystemRoot%\EXPLORER.EXE:程序路径;WAIT:暂停或等待指定时间后再继续执行命令。6000:等待6000毫秒(6秒)
_END
//结束子过程
_SUB Last_Clear
//定义子过程名为:Last_Clear
TEAM KILL SMSS|KILL WINLOGON|KILL REG|WAIT 2000
//TEAM:按顺序执行各条命令。KILL:关闭指定标题的窗口或强制终止指定的进程。SMSS:结束SMSS进程;WINLOGON:结束WINLOGON进程;REG:结束REG进程;WAIT 2000:结束后等待2000毫秒(2秒)
TEAM FILE %SystemRoot%\SYSTEM32\SMSS.EXE|FILE %SystemRoot%\SYSTEM32\WINLOGON.EXE|FILE %SystemRoot%\SYSTEM32\WINLOGON.JPG|WAIT 1000
//TEAM:按顺序执行各条命令。FILE: 操作文件或目录。 %SystemRoot%\SYSTEM32\SMSS.EXE:程序路径; %SystemRoot%\SYSTEM32\SMSS.EXE:操作SMSS.EXE文件;FILE %SystemRoot%\SYSTEM32\WINLOGON.JPG:操作WINLOGON.JPG;|:管道符命令;WAIT 1000:等待1000毫秒(1秒)
FIND $%LOADINI%=YES,!CALL Set_SOFTLOAD
//FIND:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2。$%LOADINI%=YES:LOADINI是环境变量名;!CALL Set_SOFTLOAD:隐藏调用Set_SOFTLOAD函数
_END
//结束子过程
`保存日志记录
_SUB Save_LOGS
定义子过程名为:Save_LOGS
LOGS
//保存PECMD.LOG日志文件
_END
//结束子过程
`主体执行流程
/CALL Open_LOGS `开始日志记录
DISP B32 `设置显示参数为:颜色深度32位
CALL Start_LOGO `用户登录界面设置
/CALL User_Setting `用户设置
CALL Fix_System `设定系统
CALL Created_SYS_Menu `创建系统菜单
CALL Created_Tools_Menu `创建工具菜单
CALL Set_Windiws_Run `设置Windows启动项
/CALL Set_HotKey `注册热键
CALL Start_Shell `启动 SHELL
CALL Last_Clear `最后的清理及判断外置的情况
/CALL Save_LOGS `执行完毕,并保存日志
注解不当之处,请多见谅!
[ 本帖最后由 2012Teas 于 2012-6-20 16:12 编辑 ] |