|
本帖最后由 2011足迹 于 2014-1-8 17:19 编辑
最近在精简小马的2003pe,精简到19M(未精简srs驱动)的时候卡壳了...系统文件只剩下必须的win内核,win32子系统,cmd.exe运行环境,wim驱动和dll还有个额外的wimx.exe即使精简掉srs驱动也有10M左右...再精简我们还是有余地的...微软为windows提供了一个可以在win32子系统加载前执行程序的途径...就是注册表bootexecute项...默认是autocheck程序....这个程序有些特别...他是一个native程序...可以用C/C++编写...但是标准C的大多数函数不能使用.开发难度大..但是我们需要的功能也不多...能解压cap包...能挂在wim包...能拷贝文件就可以...如果此想法能够实现把pe内核压缩到5M将会成为可能...不知道有没有懂相关技术的可以加入...
谢谢大家的关注.
发布一个测试版下载地址http://bbs.wuyou.net/attachment.php?aid=116420
再发布一个测试版
native.zip
(30.35 KB, 下载次数: 265)
现在expand可以自动创建文件夹了
再发一个测试
native.zip
(30.37 KB, 下载次数: 189)
修正一个读取光盘的错误的bug
发布一个win7(pe3)专用版..
native.zip
(30.58 KB, 下载次数: 268)
(上个版本用错nt.lib,现在更新,抱歉)
发布新版本
native.zip
(31.11 KB, 下载次数: 722)
现在可以支持mount wim了
现在支持的命令主要有:
cd,md,copy,poweroff,dir,del,reboot,devtree,shutdown,exit,sysinfo,lm,vid,lp,move,if,load,expand, mount
其中
if支持if [not] exist [file|dir] command .command还可以是if
load加载一个文本文件作为批处理
expand x y 解压一个cab包
expand -d x显示cab包中的文件
mount 命令用法 mount wim [index] path
index 可以省略,默认是1
目前相对路径中出现.或..或\可能会无法识别..
每条命令最长1024字节(包含null)
加载方式
该程序是native应用程序.不是win32应用程序所以不能在已登录的windows操作系统中运行.(执行后会有错误提示,不会破坏系统)
加载方式有两种(还有其他的方式,可以自己研究)
可以在注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager下面的BootExecute项中添加命令行(xp原来的内容是autocheck autochk *,pe的是空)该项可以是多行文本..每行一个命令,类似批处理
另外一个办法就是替换smss.exe(虽然能启动但是不能接收自定义参数)
现在正在研究wimgapi.dll.逆向出来的代码逻辑混乱...一时还看不大明白..但是找到了思路...
挂载wim时wimgapi.dll只是向驱动发送了一个消息.这个消息是使用fltmgr.dll中的函数发送的..消息的格式是驱动定义的...现在正在研究这个消息的格式..
希望大家多多帮助
谢谢
补充:此程序是pecmd的一个补充,开发的目的是为了使pe可以更模块化.降低一级内核的大小.解决在pecmd前需要额外处理时pecmd检查父进程是不是winlogon.exe的问题.至于其他方面或许也有用武之地.
由于运行环境不受文件锁限制所以请谨慎使用文件操作..
演示pe下载http://u.115.com/file/f34c5d489f
使用"小马PE2011超级精简版"为模板,保留所有驱动,内核压缩至13M
谢谢大家关注和支持
mount 挂载演示pe http://www.wiiki.cn/pe.iso.rar 下载后改名pe.iso即可
冗余文件可能有不少..
公开fltmgr驱动的的部分操作代码,代码来自于wimgapi.dll的逆向,数据结构结合wimgapi.h猜测,api只提供了部分,win7版api处理的相当复杂。。没有实现。
fltmgr.zip
(153.01 KB, 下载次数: 117)
[ 本帖最后由 2011足迹 于 2011-4-4 21:30 编辑 ] |
评分
-
查看全部评分
|