|  | 
 
| 本帖最后由 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, 下载次数: 725)
现在可以支持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, 下载次数: 122) 
 [ 本帖最后由 2011足迹 于 2011-4-4 21:30 编辑 ]
 | 
 评分
查看全部评分
 |