无忧启动论坛

标题: native版的mini pecmd测试,添加mount命令--2011-4-4 [打印本页]

作者: 2011足迹    时间: 2011-3-9 16:58
标题: native版的mini pecmd测试,添加mount命令--2011-4-4
本帖最后由 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 编辑 ]

native.zip

30.36 KB, 下载次数: 559, 下载积分: 无忧币 -2


作者: chiannet    时间: 2011-3-9 20:22
楼主一看仿佛就是高人,应该也就是高人。我等虾米只能默默回帖支持。坐等楼主好消息。
作者: uiojkmm    时间: 2011-3-10 00:38
貌似在那个模式下所有文件都没有被锁定,且加载了usb2.0驱动.如果这时候载入外置的话肯定会很快...我是c语言小白,只能帮顶了...
作者: 2011足迹    时间: 2011-3-11 13:29
看来关系的人不多...
自己顶起来..呵呵..
这两天找到一个叫native shell的开源项目就以他为基础了...
作者: 2011足迹    时间: 2011-3-22 10:58
有点成果了...
现在已经支持一些基本的cmd命令另外还有个expand命令可以解压cab包不过还不完善..
下一步准备继续完善expand命令尽量兼容ms的expand命令
目前还不支持批处理
也不支持外部参数
一步一步改进吧
分享一下代码
google code项目空间http://code.google.com/p/nativeshell/
svn checkout http://nativeshell.googlecode.com/svn/trunk/ nativeshell-read-only
作者: freesoft00    时间: 2011-3-22 13:52
支持一下,等待成果。外行只能支持一下了。
作者: 2011足迹    时间: 2011-3-22 17:07
标题: 回复 #8 friend8179 的帖子
对驱动不太了解...不知道应该怎么操作..囧...希望有人能帮忙...当初只是想挂wim的...只是不知道怎么弄..才先弄个cab
作者: 3557111    时间: 2011-3-22 17:21
期待成果`先留名.别让帖沉了。这样才有高手注意到
作者: sunkiss    时间: 2011-3-22 18:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: tianjingji    时间: 2011-3-22 19:24
期待高手能够帮忙,我们才能成功。
作者: b23526    时间: 2011-3-22 21:35
10M到5M改变有很多吗?意义大吗?
作者: uiojkmm    时间: 2011-3-23 00:21
原帖由 b23526 于 2011-3-22 21:35 发表
10M到5M改变有很多吗?意义大吗?

Usb1.0起动快不少
作者: chenall    时间: 2011-3-23 13:00
支持楼主...

应该很有前途的说...
作者: 2011足迹    时间: 2011-3-23 13:14
标题: 回复 #15 chenall 的帖子
呵呵..终于见到你了...关于wim能不能指点一下...
作者: chenall    时间: 2011-3-23 18:14
对这个我也不太懂的说...
作者: 2011足迹    时间: 2011-3-26 00:53
发一个测试版
现在支持的命令主要有:
        cd,md,copy,poweroff,dir,del,reboot,devtree,shutdown,exit,sysinfo,lm,vid,lp,move,if,load,expand
其中
if支持if [not] exist [file|dir] command .command还可以是if
load加载一个文本文件作为批处理
expand x y 解压一个cab包
expand -d x显示cab包中的文件

目前相对路径中出现.或..或\可能会无法识别..
每条命令最长1024字节(包含null)

native.zip

30.2 KB, 下载次数: 969, 下载积分: 无忧币 -2


作者: 2011足迹    时间: 2011-3-29 17:02
再顶起来...
好像没大有人关心了...
今天逆了一下WIMGAPI..dll和FLTLIB.DLL找到了一些思路
谢谢liulaotou2的帖子
作者: junyee    时间: 2011-3-29 19:00
LZ是高人,友情支持。

我要是想把他弄到正常的XP下会怎么样呢?
作者: thttht    时间: 2011-3-29 20:02
原帖由 2011足迹 于 2011-3-26 00:53 发表
发一个测试版
现在支持的命令主要有:
        cd,md,copy,poweroff,dir,del,reboot,devtree,shutdown,exit,sysinfo,lm,vid,lp,move,if,load,expand
其中
if支持if [not] exist [file|dir] command .comman ...



请问这个要如何应用啊?这个能在正常的系统上应用吗?如何在系统运行初期加载运行它啊?
作者: freesoft00    时间: 2011-3-30 08:09
这段时间论坛的人确实不多。
懂这方面的人毕竟是少数。
你的标题可以改一下,mini pecmd 测试版
一楼的帖子也编辑一下,把测试版和网址放上去。
这样其他人一看就可以看到。否则不翻帖子的看不到你发布测试版。
成熟的时候也可以发布一个用这个软件做的pe成品,这样大家好测试。
作者: lxl1638    时间: 2011-3-30 12:11
要有个成品WinPE,或至少要有个演示WinPE,否则别人不知如何用。
作者: 2011足迹    时间: 2011-3-30 12:37
标题: 回复 #24 lxl1638 的帖子
谢谢提示...
有空就用现有命令弄个演示pe..
应该没有什么问题..
作者: pseudo    时间: 2011-3-30 12:37
支持楼主。并期待早日支持wim。

我签名处的PE,正需要楼主的成果。

这个PE由grldr+0PE.GZ+cmdpe.gz+(0pedskt.wim+desktop.wim) 组成多级可剪裁结构。
可剪裁的意思是分解出的低层组件是有面向用户意义的可独立使用的组件。

目前cmdpe.gz精简到不能运行pecmd。
希望能进一步缩小cmdpe.gz,把东西移入desktop.wim。只要能挂接wim就行。
退一步,如果不能挂接wim,那么缩小cmdpe.gz,把东西移出到一个cab文件里也行。

cmdpe.gz里的exe系16位dos版rar压缩。
进入windows后,流程由0PE.GZ\kernel\wxpe\system32\autorun_.cmd控制。
作者: 2011足迹    时间: 2011-3-30 13:02
标题: 回复 #26 pseudo 的帖子
现有的命令把win32子系统移出到cab已经基本上成为可能..尚缺的命令就是这个cab文件如何搜索到..其他的都可以了.
回头弄个演示版的pe你参照一下
其实一楼的说明感觉应该挺详细了.
无论如何眼见为实..还是出个演示吧.
作者: pseudo    时间: 2011-3-30 13:17
标题: 回复 #27 2011足迹 的帖子
目前cmdpe.gz是9MB,按楼主说法,有缩减到5MB的可能。
期待。
作者: yichya    时间: 2011-3-30 16:04
记得以前有一个ncli iso,好像只有4m大,可以直接替换里面的smss吗?

顺便求实例iso下载。。。

[ 本帖最后由 yichya 于 2011-3-30 16:39 编辑 ]
作者: yichya    时间: 2011-3-30 16:29
现在能不能做到从native直接跳到Win32 GUI呢?

退一步讲,有没有可能,在native下直接挂载/解开wim文件,这样还原系统就省事了。
作者: chenall    时间: 2011-3-30 16:34
再来支持一下。。。期待更多的功能。。
作者: yichya    时间: 2011-3-30 16:43
liulaotou2的驱动不能直接拽来用吗?

当然不能接受参数,不过至少比没有强。那个应该带可写吧?这样整个win32 gui子系统可以直接放进wim,然后只要能进入到win32 gui...

微机课发帖。哈哈
作者: uiojkmm    时间: 2011-3-30 18:08
能支持7z压缩包么?7zip官网有现成代码.弄成native下的代码应该不难.而且7z压缩率比cab高多了.
作者: uiojkmm    时间: 2011-3-30 18:08
能支持7z压缩包么?7zip官网有现成代码.弄成native下的代码应该不难.而且7z压缩率比cab高多了.
作者: uiojkmm    时间: 2011-3-30 18:15
对了,最重要一点是支持在ud驱中读文件,否则对我等u盘党来说跟用pecmd没啥区别
作者: 2011足迹    时间: 2011-3-30 18:59
标题: 回复 #30 yichya 的帖子
可以直接替换...但是不能接收参数...这样意义就不大了...在bootexecute里面可以写成native load file来执行批处理..
作者: 2011足迹    时间: 2011-3-30 19:01
标题: 回复 #31 yichya 的帖子
native加载win32子系统好像还有很多步骤...目前貌似难度比较大..
作者: 2011足迹    时间: 2011-3-30 19:03
标题: 回复 #34 friend8179 的帖子
cab压缩是不支持文件夹的...如果支持的话..请发个有文件夹的cab包..或者告知制作方法..
作者: 2011足迹    时间: 2011-3-30 19:07
标题: 回复 #37 uiojkmm 的帖子
如果是驱动的话应该是可以支持的..其他的就没办法了
作者: 2011足迹    时间: 2011-3-30 20:44
标题: 回复 #42 friend8179 的帖子
呵呵..确实可以创建带文件夹的..回头研究一下..
根据你的截图来看只需要判断是不是需要创建文件夹然后创建一下就可以了...
你也可以用if exist判断然后创建一下...
作者: pseudo    时间: 2011-3-30 21:30
原帖由 2011足迹 于 2011-3-30 19:01 发表
native加载win32子系统好像还有很多步骤...目前貌似难度比较大..

期待先提供能进入native.EXE的5MB环境。

后面的加载似乎比较现成。

[ 本帖最后由 pseudo 于 2011-3-30 21:36 编辑 ]
作者: 2011足迹    时间: 2011-3-30 21:41
标题: 回复 #44 friend8179 的帖子
我的意思是cab文件中有什么文件夹应该是知道的..
那么就可以在解压之前用if exist判断...先把这些文件夹创建..然后再解压..
这个办法似乎比较傻..暂且只能这样了...下一个测试版加上这个功能.
主要是以前不知道能用cab打出来有文件夹的包...就没考虑这一块..
作者: yjstone    时间: 2011-3-30 21:55
好东西,支持一下,期待楼主的成果,我主要是想把它应用在桌面系统在启动时提早执行一些命令。
作者: yichya    时间: 2011-3-30 22:42
reactos楼主一定有所了解,也许看看它和native有关的代码能帮到你。

我只是菜鸟。。。
作者: 2011足迹    时间: 2011-3-31 12:48
在C中
RtlCreateHeap( HEAP_GROWABLE, NULL, 0x100000, 0x1000, NULL, &sHeapDef );
创建一个堆
然后在一个循环中调用了若干次
RtlAllocateHeap
而且用完后都
RtlFreeHeap
为什么最后就堆溢出了呢?
作者: 2011足迹    时间: 2011-4-1 00:23
再发布一个测试版,下载请到一楼.
演示pe差不多快完成了...
敬请期待
作者: uiojkmm    时间: 2011-4-1 06:55
标题: 标题.
原帖由 2011足迹 于 2011-4-1 00:23 发表
再发布一个测试版,下载请到一楼.
演示pe差不多快完成了...
敬请期待

期待......
作者: andos    时间: 2011-4-1 08:23
原帖由 2011足迹 于 2011-4-1 00:23 发表
再发布一个测试版,下载请到一楼.
演示pe差不多快完成了...
敬请期待

非常期待呢~~~
作者: jianliulin    时间: 2011-4-1 16:53
原帖由 2011足迹 于 2011-4-1 00:23 发表
再发布一个测试版,下载请到一楼.
演示pe差不多快完成了...
敬请期待



一直期待!!!
作者: zxw    时间: 2011-4-1 16:57
跑来支持一个,静候佳音。
作者: zxyy    时间: 2011-4-1 17:15
期待你的最终成果尽快给大家分享啊
作者: 988668    时间: 2011-4-1 17:22
楼主,这个帖子你可以看看
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
基于你的这个命令器,使用5MB的核心,应该是可能的,上面的帖子,对于在cmd下处理WIM的问题,可能对你有用
作者: lmle    时间: 2011-4-2 08:52
请问,在win32子系统加载前,也就是native运行时,能不能访问U盘?
作者: 2011足迹    时间: 2011-4-2 08:59
标题: 回复 #57 lmle 的帖子
可以访问U盘,只要是被驱动好的设备都可以访问...这个只和驱动有关...
native程序运行时所有启动级的驱动都已经加载完成..因此只要是驱动安装正确..并设置为启动级别就可以了..
作者: haijie1223    时间: 2011-4-2 09:04
站上个位置吧。。。。
作者: jianliulin    时间: 2011-4-2 10:11
原帖由 2011足迹 于 2011-4-2 08:59 发表
可以访问U盘,只要是被驱动好的设备都可以访问...这个只和驱动有关...
native程序运行时所有启动级的驱动都已经加载完成..因此只要是驱动安装正确..并设置为启动级别就可以了..


能否让native直接解压ud里的文件?
作者: 2011足迹    时间: 2011-4-2 10:24
原帖由 jianliulin 于 2011-4-2 10:11 发表


能否让native直接解压ud里的文件?

这个不是不可以..如果有ud的驱动并且可以把ud mount到盘符的话现在native就可以读取..
如果没有类似的驱动那就需要在native中增加读取ud的代码..这个ud的格式没大研究过.据我所知的信息..这个ud算是一个新的文件系统..用windows 的native api去读取应该是不现实的..工作量应该不小..
作者: jianliulin    时间: 2011-4-2 10:25
工作量应该不大的,只要当ud是一个文件来读可以了,ud的文件结构很简单
作者: 2011足迹    时间: 2011-4-2 10:33
原帖由 jianliulin 于 2011-4-2 10:25 发表
工作量应该不大的,只要当ud是一个文件来读可以了,ud的文件结构很简单

有空参考一下别人的代码..试试看...最近可能要休息一下..抽空还要研究一下wim的挂在...还是希望有人能写个驱动..这样比较方便..
如果你会C语言的话..倒是可以考虑自己增加这个功能,6#楼的svn上有代码...每个发布的测试版都有更新..
还是希望有更多人能加入开发..毕竟native api开发还是有点难度的..
作者: jianliulin    时间: 2011-4-2 10:39
原帖由 2011足迹 于 2011-4-2 10:33 发表

有空参考一下别人的代码..试试看...最近可能要休息一下..抽空还要研究一下wim的挂在...还是希望有人能写个驱动..这样比较方便..
如果你会C语言的话..倒是可以考虑自己增加这个功能,6#楼的svn上有代码...每个 ...


我不会C,只能猜懂一些,百草最近在研究C,加上他对ud结构也很了解,估计他可能帮上忙。

已解决,是操作上的问题


另外我在虚拟机做了以下步骤的测试

1.U盘用做了个UD,把“小马PE2011超级精简版.iso” 里MINIPE下的文件删除,只留下WINPE.IM_ ,其他不变,然后放到ud里
2. 把WXPE.CAB 解压到U盘 ,应该放在 MINIPE目录下
3.用grldr启动
   title [01] 小马PE2011超级精简版
   map (ud)/小马PE2011超级精简版.iso (0xFF)
   map --hook
   chainloader (0xFF)

[ 本帖最后由 jianliulin 于 2011-4-2 11:00 编辑 ]
作者: thttht    时间: 2011-4-2 10:43
原帖由 2011足迹 于 2011-4-2 10:33 发表

有空参考一下别人的代码..试试看...最近可能要休息一下..抽空还要研究一下wim的挂在...还是希望有人能写个驱动..这样比较方便..
如果你会C语言的话..倒是可以考虑自己增加这个功能,6#楼的svn上有代码...每个 ...


希望能早日实现wim的挂在那可就太好了!wim的挂在是不是可以联系liulaotou2  探讨一下 。

这个成功了对PE已及RAMOS都会有极大的帮助吧!十分期待!!!
作者: jianliulin    时间: 2011-4-2 10:47
原帖由 2011足迹 于 2011-4-2 10:33 发表

有空参考一下别人的代码..试试看...最近可能要休息一下..抽空还要研究一下wim的挂在...还是希望有人能写个驱动..这样比较方便..
如果你会C语言的话..倒是可以考虑自己增加这个功能,6#楼的svn上有代码...每个 ...



你用什么编译环境的,能否提供你的编译环境???
作者: 2011足迹    时间: 2011-4-2 11:25
原帖由 jianliulin 于 2011-4-2 10:47 发表



你用什么编译环境的,能否提供你的编译环境???

编译是使用的windows ddk(最新版是7600).
发布的版本都是使用server 2003 check 环境编译的,不知道在win7和xp上会不会有问题
ddk中编译只需要执行b.cmd脚本就可以.
用visual studio也可以编译..不过设置比较麻烦...百度上有相关的文章.
作者: 2011足迹    时间: 2011-4-2 11:31
原帖由 thttht 于 2011-4-2 10:43 发表


希望能早日实现wim的挂在那可就太好了!wim的挂在是不是可以联系liulaotou2  探讨一下 。

这个成功了对PE已及RAMOS都会有极大的帮助吧!十分期待!!!

本人倒是很想向liulaotou2学习.但是据说最近他一直没有在线.
曾经有人希望liulaotou2公开liulao.sys的源码.他给的回复至自己反汇编就可以.于是我也反汇编了一下..没有得到需要的代码(主要是看不懂驱动的逻辑).倒是反汇编wimgapi.dll却得到了一些有用的代码.

[ 本帖最后由 2011足迹 于 2011-4-2 11:37 编辑 ]
作者: jianliulin    时间: 2011-4-2 11:49
楼主顺便把演示PE的驱动也掏空吧

楼主能整理一下如何在vs2008 下编译的步骤可以吗,这样参与的人会慢慢多起来!!

[ 本帖最后由 jianliulin 于 2011-4-2 11:51 编辑 ]
作者: 2011足迹    时间: 2011-4-2 12:04
原帖由 jianliulin 于 2011-4-2 11:49 发表
楼主顺便把演示PE的驱动也掏空吧

楼主能整理一下如何在vs2008 下编译的步骤可以吗,这样参与的人会慢慢多起来!!

本人对驱动的精简没有研究..也曾经试过...经常蓝屏.这方面0pe已经相当成熟了.其他也有发布的精简驱动的pe.我就不班门弄斧了..
记得cmdpe中驱动的大小好像是2M左右..现在去掉驱动的大小也是2M多..看来精简到5M不是什么问题了..

vs2008编译回头研究研究.直接弄个工程文件.不过还是推荐使用ddk编译.
作者: chenall    时间: 2011-4-2 12:05
原帖由 jianliulin 于 2011-4-2 11:49 发表
楼主顺便把演示PE的驱动也掏空吧

楼主能整理一下如何在vs2008 下编译的步骤可以吗,这样参与的人会慢慢多起来!!


我倒是觉得直接使用WINDDK编译更简单,基本上不需要什么配置。。

直接装好WINDDK就可以编译了。像FIRADISK等都可以直接编译。不需要其它东西。
作者: jianliulin    时间: 2011-4-2 12:09
原帖由 chenall 于 2011-4-2 12:05 发表


我倒是觉得直接使用WINDDK编译更简单,基本上不需要什么配置。。

直接装好WINDDK就可以编译了。像FIRADISK等都可以直接编译。不需要其它东西。




WINDDK 可以单步调试吗??
作者: 2011足迹    时间: 2011-4-2 12:13
原帖由 jianliulin 于 2011-4-2 12:09 发表




WINDDK 可以单步调试吗??

native的调试比较麻烦..用vs2008也不能单步调试(因为native程序无法在win32子系统中运行)..
调试native程序需要双机调试(或者使用虚拟机).
本人现在使用的是windb.
调试方法百度上也有..
作者: chenall    时间: 2011-4-2 12:54
这个东西完善以后,PE在U盘中启动速度可以很快。
嘿嘿。
太约5M的通用核心启动到native。

然后挂载不同的二级核心WIM文件直接启动,超赞的。
作者: andos    时间: 2011-4-2 13:01
原帖由 2011足迹 于 2011-4-2 11:25 发表

编译是使用的windows ddk(最新版是7600).
发布的版本都是使用server 2003 check 环境编译的,不知道在win7和xp上会不会有问题
ddk中编译只需要执行b.cmd脚本就可以.
用visual studio也可以编译..不过设置比 ...

这个native.exe 应该都支持PE3.0的吧?

比较想看看PE3.0用了这个native.exe 内核可以变得有多少,哈哈~~

另外,如果native.exe支持PE3.0的话,那么PE3.0的内核又需要些什么文件呢?

期待有人能弄个pe3.0的模板出来,呵呵~~

[ 本帖最后由 andos 于 2011-4-2 14:02 编辑 ]
作者: Plantsoot    时间: 2011-4-2 15:36
又有的玩了,支持一下。

强大的C,强大的高手。
作者: 135956    时间: 2011-4-2 15:45
特跑来支持一下。。。相当给力的东西。
作者: hlstudio    时间: 2011-4-2 18:52
期待楼主弄个5M的XP核心的ISO格式模板。

[ 本帖最后由 hlstudio 于 2011-4-2 19:00 编辑 ]
作者: liulaotou2    时间: 2011-4-2 18:58
标题: 回复 #18 friend8179 的帖子
回来了,我看看。
近期生活压力大,上网次数少,竟然没看到这个帖子。
有问题可以找我问,我虽然没空写代码,但是回答问题还是可以的。
作者: liulaotou2    时间: 2011-4-2 18:59
标题: 回复 #63 2011足迹 的帖子
WIM的问题,我负责搞掂。
我早就有不用DLL挂载WIM的代码了。
但是那是WIN32下面的,NATIVE的编程环境我先熟悉一下。

反汇编是很耗时间的,前前后后我花了差不多6个月的时间,写了很多测试代码,弯路很多。
放弃无数次,最后才想到一个比较好的方式。

[ 本帖最后由 liulaotou2 于 2011-4-2 19:13 编辑 ]
作者: thttht    时间: 2011-4-2 19:48
原帖由 liulaotou2 于 2011-4-2 18:59 发表
WIM的问题,我负责搞掂。
我早就有不用DLL挂载WIM的代码了。
但是那是WIN32下面的,NATIVE的编程环境我先熟悉一下。

反汇编是很耗时间的,前前后后我花了差不多6个月的时间,写了很多测试代码,弯路很多。 ...


太好了!liulaotou2 参加进来,看来WIM会很快有进展了!这真是大家都期待的!!!
作者: 2011足迹    时间: 2011-4-2 19:49
原帖由 liulaotou2 于 2011-4-2 18:59 发表
WIM的问题,我负责搞掂。
我早就有不用DLL挂载WIM的代码了。
但是那是WIN32下面的,NATIVE的编程环境我先熟悉一下。

反汇编是很耗时间的,前前后后我花了差不多6个月的时间,写了很多测试代码,弯路很多。 ...

见到君真高兴..呵呵.
把微软的wimgapi.dll逆到C看了一下..
了解了wim挂载的大体流程..
用 native api挂载应该不复杂.
我大体上说一下..不知道对不对.请指正
1.创建一个message结构.
2.连接wimfltr驱动
3.向wimfltr发送这个结构.
今天正准备要研究这个结构呢..看到了君的回复.是在是太高兴了..
不知道君愿不愿意分享你的代码..
需要的话我把你加入到google code项目.

关于native app编程

和驱动差不多..只能使用ntdll.dll的导出函数..头文件使用ndk.对君来说应该不难.

[ 本帖最后由 2011足迹 于 2011-4-2 19:54 编辑 ]
作者: liulaotou2    时间: 2011-4-2 20:08
标题: 回复 #82 2011足迹 的帖子
过程就是这样的,由于电脑已经重装了,所以麻烦一点。
能使用NTDLL.DLL的函数就没有问题了。
你把最新的代码发1份给我,清明节期间我抽时间合进去。
SVN我还没有装。

我尝试了很多次,无法在驱动中实现,但是NTDLL.DLL能用就没问题,
我的代码就是只使用了NTDLL.DLL的函数。
作者: 2011足迹    时间: 2011-4-2 20:27
原帖由 liulaotou2 于 2011-4-2 20:08 发表
过程就是这样的,由于电脑已经重装了,所以麻烦一点。
能使用NTDLL.DLL的函数就没有问题了。
你把最新的代码发1份给我,清明节期间我抽时间合进去。
SVN我还没有装。

我尝试了很多次,无法在驱动中实现, ...

nativeshell.part01.rar (97.66 KB, 下载次数: 133)
nativeshell.part02.rar (97.66 KB, 下载次数: 119)
nativeshell.part03.rar (97.66 KB, 下载次数: 118)
nativeshell.part04.rar (97.66 KB, 下载次数: 118)
nativeshell.part05.rar (32.57 KB, 下载次数: 103)
作者: pseudo    时间: 2011-4-2 21:08
谢谢楼主提供资源。

cmdpe.gz从9MB减为3.5MB。读盘总数据量(含grldr、SRS驱动)不到5MB即可启动到开始执行native.exe。
作者: liulaotou2    时间: 2011-4-2 21:25
标题: 回复 #84 2011足迹 的帖子
你的代码我编译不过。

Compiling - f:\nativeshell\nativeshell\lzxd.c
errors in directory f:\nativeshell\nativeshell
f:\nativeshell\nativeshell\readhuff.h(118) : error C2220: warning treated as err
or - no 'object' file generated
warnings in directory f:\nativeshell\nativeshell
f:\nativeshell\nativeshell\readhuff.h(118) : warning C4242: '=' : conversion fro
m 'unsigned int' to 'unsigned short', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(135) : warning C4242: '=' : conversion from 'u
nsigned int' to 'unsigned char', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(156) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(161) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(378) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(434) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
f:\nativeshell\nativeshell\lzxd.c(502) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
Compiling - f:\nativeshell\nativeshell\mszipd.c
f:\nativeshell\nativeshell\readhuff.h(118) : error C2220: warning treated as err
or - no 'object' file generated
f:\nativeshell\nativeshell\readhuff.h(118) : warning C4242: '=' : conversion fro
m 'unsigned int' to 'unsigned short', possible loss of data
f:\nativeshell\nativeshell\mszipd.c(138) : warning C4242: '=' : conversion from
'unsigned int' to 'unsigned char', possible loss of data
Compiling - f:\nativeshell\nativeshell\qtmd.c
f:\nativeshell\nativeshell\qtmd.c(316) : error C2220: warning treated as error -
no 'object' file generated
f:\nativeshell\nativeshell\qtmd.c(316) : warning C4242: '=' : conversion from 'i
nt' to 'unsigned char', possible loss of data
Compiling - f:\nativeshell\nativeshell\Generating Code...
Linking Executable - f:\nativeshell\nativeshell\objfre_wxp_x86\i386\native.exe
link : error LNK1181: cannot open input file 'f:\nativeshell\nativeshell\objfre_
wxp_x86\i386\lzxd.obj'
BUILD: Finish time: Sat Apr 02 21:22:15 2011
BUILD: Done

    18 files compiled - 10 Warnings - 3 Errors - 7,070 LPS
    1 executable built - 1 Error

F:\nativeshell\nativeshell>
作者: 2011足迹    时间: 2011-4-2 21:42
标题: 回复 #86 liulaotou2 的帖子
你的编译参数好像有问题..
f:\nativeshell\nativeshell\readhuff.h(118) : error C2220: warning treated as err
or - no 'object' file generated
f:\nativeshell\nativeshell\readhuff.h(118) : error C2220: warning treated as err
or - no 'object' file generated
f:\nativeshell\nativeshell\qtmd.c(316) : error C2220: warning treated as error -
no 'object' file generated
这三处错误本来应该是警告..
这些警告是因为使用的一个cab库造成...有几处类型不匹配..
不知道应该怎么修正..而且没有造成运行错误就没有修正..
以备以后发现问题的时候可以按图索骥.
使用b.bat编译应该是可以通过的..
如果b.bat也不通过的话可以按照提示在那些位置加上类型强制转换..
作者: 2011足迹    时间: 2011-4-2 21:44
原帖由 pseudo 于 2011-4-2 21:08 发表
谢谢楼主提供资源。

cmdpe.gz从9MB减为3.5MB。读盘总数据量(含grldr、SRS驱动)不到5MB即可启动到开始执行native.exe。

呵呵..很欣慰..看来一楼的承诺可以兑现了..
以后pe可以彻底替代dos了
作者: andos    时间: 2011-4-2 21:46
原帖由 pseudo 于 2011-4-2 21:08 发表
谢谢楼主提供资源。

cmdpe.gz从9MB减为3.5MB。读盘总数据量(含grldr、SRS驱动)不到5MB即可启动到开始执行native.exe。

呵呵~~P大已经弄到不到5M了...
这个大小非常不错呢


继续期待7PE的模板(所需的文件).....
作者: andos    时间: 2011-4-2 21:49
原帖由 2011足迹 于 2011-4-2 21:44 发表

呵呵..很欣慰..看来一楼的承诺可以兑现了..
以后pe可以彻底替代dos了

嗯,p大弄得比5m更少呢...呵呵

我本来想弄到7PE中...

可是出蓝屏,蓝屏是在进度条之后出的
应该是少了些文件吧? 不过少了什么我就不知道了

还是等其他高手出的7PE native模板,看看需要什么文件呢....

2011-04-02_211844.png (10.11 KB, 下载次数: 189)

2011-04-02_211844.png

作者: 2011足迹    时间: 2011-4-2 22:04
原帖由 andos 于 2011-4-2 21:49 发表

嗯,p大弄得比5m更少呢...呵呵

我本来想弄到7PE中...

可是出蓝屏,蓝屏是在进度条之后出的
应该是少了些文件吧? 不过少了什么我就不知道了

还是等其他高手出的7PE native模板,看看需要什么文件呢....

上面说过以前发布的版本是用server 2003环境编译的..xp上应该可以运行.
win7蓝屏属于正常.
win7版本已上传至一楼..欢迎测试.
顺便说句...蓝屏愿意是进程创建失败.
作者: 2011足迹    时间: 2011-4-2 22:09
原帖由 pseudo 于 2011-4-2 21:08 发表
谢谢楼主提供资源。

cmdpe.gz从9MB减为3.5MB。读盘总数据量(含grldr、SRS驱动)不到5MB即可启动到开始执行native.exe。

还有个事要说下..
现在system32下应该还有nls文件可以删除..
根据经验..内核中的文件不压缩..最后得到的压缩内核会更小..不知道这个对gz压缩内核是不是有效.cab是这样的.
作者: andos    时间: 2011-4-2 22:12
原帖由 2011足迹 于 2011-4-2 22:04 发表

上面说过以前发布的版本是用server 2003环境编译的..xp上应该可以运行.
win7蓝屏属于正常.
win7版本已上传至一楼..欢迎测试.
顺便说句...蓝屏愿意是进程创建失败.


还是一样情况,应该是缺文件了吧

看来我还是得等7PE高手的了.....

[ 本帖最后由 andos 于 2011-4-2 22:17 编辑 ]
作者: sp_star    时间: 2011-4-2 22:21
原帖由 andos 于 2011-4-2 22:12 发表


还是一样情况,应该是缺文件了吧

看来我还是得等7PE高手的了.....


apisetschema.dll
作者: 2011足迹    时间: 2011-4-2 22:23
原帖由 andos 于 2011-4-2 22:12 发表


还是一样情况,应该是缺文件了吧

看来我还是得等7PE高手的了.....

那应该是..
smss.exe没有删除吧?..那个是必须的..
最好使用能正常启动的pe加载..然后慢慢删..
使用DEPENDS查看dll和exe的子系统..如果是native就保留下来..应该不会蓝屏..ntdll.dll可能会显示win32子系统但是要保留.
作者: andos    时间: 2011-4-2 22:25
原帖由 2011足迹 于 2011-4-2 22:23 发表

那应该是..
smss.exe没有删除吧?..那个是必须的..
最好使用能正常启动的pe加载..然后慢慢删..
使用DEPENDS查看dll和exe的子系统..如果是native就保留下来..应该不会蓝屏..ntdll.dll可能会显示win32子系统但 ...

smss.exe没有删除
基本上是依照你上传那个NT5的PE模板来提取文件的(当然我知道7PE和NT5 PE有差别,所以出问题也算正常,哈哈)

至于慢慢删这个方式比较吃力点呢......

目前的文件如下:
  1. [Path][File name]
  2. Windows\Fonts\app950.fon
  3. Windows\Fonts\c8514fix.fon
  4. Windows\Fonts\c8514oem.fon
  5. Windows\Fonts\c8514sys.fon
  6. Windows\Fonts\cvgafix.fon
  7. Windows\Fonts\cvgasys.fon
  8. Windows\Fonts\vga932.fon
  9. Windows\Fonts\vga936.fon
  10. Windows\Fonts\vga949.fon
  11. Windows\Fonts\vga950.fon
  12. Windows\Fonts\vgafix.fon
  13. Windows\Fonts\vgaoem.fon
  14. Windows\Fonts\vgasys.fon
  15. Windows\System32\apisetschema.dll
  16. Windows\System32\BOOTVID.dll
  17. Windows\System32\C_10002.NLS
  18. Windows\System32\C_1251.NLS
  19. Windows\System32\C_1252.NLS
  20. Windows\System32\C_20000.NLS
  21. Windows\System32\C_20932.NLS
  22. Windows\System32\C_20936.NLS
  23. Windows\System32\C_20949.NLS
  24. Windows\System32\C_437.NLS
  25. Windows\System32\C_850.NLS
  26. Windows\System32\C_950.NLS
  27. Windows\System32\ci.dll
  28. Windows\System32\clfs.sys
  29. Windows\System32\hal.dll
  30. Windows\System32\halacpi.dll
  31. Windows\System32\halmacpi.dll
  32. Windows\System32\kdcom.dll
  33. Windows\System32\l_intl.nls
  34. Windows\System32\locale.nls
  35. Windows\System32\native.cfg
  36. Windows\System32\native.exe
  37. Windows\System32\ntdll.dll
  38. Windows\System32\ntkrnlpa.exe
  39. Windows\System32\ntoskrnl.exe
  40. Windows\System32\PSHED.dll
  41. Windows\System32\smss.exe
  42. Windows\System32\winload.exe
  43. Windows\System32\config\SYSTEM
  44. Windows\System32\Drivers\ 下全部驱动保留
复制代码

[ 本帖最后由 andos 于 2011-4-2 22:40 编辑 ]
作者: andos    时间: 2011-4-2 22:39
原帖由 sp_star 于 2011-4-2 22:21 发表


apisetschema.dll

这次换这个蓝屏码

2011-04-02_223815.png (10.82 KB, 下载次数: 156)

2011-04-02_223815.png

作者: sp_star    时间: 2011-4-2 22:47
原帖由 andos 于 2011-4-2 22:39 发表

这次换这个蓝屏码


试试这个,我用这个可以运行到native.exe
Windows\Fonts
Windows\Globalization
Windows\inf
Windows\system32
Windows\winsxs
Windows\Fonts\vga936.fon
Windows\Fonts\vgafix.fon
Windows\Fonts\vgaoem.fon
Windows\Fonts\vgasys.fon
Windows\Globalization\Sorting
Windows\inf\disk.inf
Windows\inf\errata.inf
Windows\inf\ramdisk.inf
Windows\inf\usbstor.inf
Windows\inf\volume.inf
Windows\system32\apisetschema.dll
Windows\system32\Boot
Windows\system32\BOOTVID.DLL
Windows\system32\ci.dll
Windows\system32\clfs.sys
Windows\system32\config
Windows\system32\c_936.nls
Windows\system32\drivers
Windows\system32\hal.dll
Windows\system32\halacpi.dll
Windows\system32\halmacpi.dll
Windows\system32\kdcom.dll
Windows\system32\l_intl.nls
Windows\system32\native.cfg
Windows\system32\native.exe
Windows\system32\ntdll.dll
Windows\system32\ntkrnlpa.exe
Windows\system32\ntoskrnl.exe
Windows\system32\PSHED.DLL
Windows\system32\smss.exe
Windows\system32\zh-CN
Windows\system32\Boot\winload.exe
Windows\system32\Boot\zh-CN
Windows\system32\Boot\zh-CN\winload.exe.mui
Windows\system32\config\COMPONENTS
Windows\system32\config\DEFAULT
Windows\system32\config\SAM
Windows\system32\config\SECURITY
Windows\system32\config\SOFTWARE
Windows\system32\config\SYSTEM
Windows\system32\drivers\acpi.sys
Windows\system32\drivers\adp94xx.sys
Windows\system32\drivers\adpahci.sys
Windows\system32\drivers\adpu320.sys
Windows\system32\drivers\aliide.sys
Windows\system32\drivers\amdide.sys
Windows\system32\drivers\amdsata.sys
Windows\system32\drivers\amdsbs.sys
Windows\system32\drivers\amdxata.sys
Windows\system32\drivers\arc.sys
Windows\system32\drivers\arcsas.sys
Windows\system32\drivers\atapi.sys
Windows\system32\drivers\ataport.sys
Windows\system32\drivers\battc.sys
Windows\system32\drivers\blbdrive.sys
Windows\system32\drivers\cdfs.sys
Windows\system32\drivers\cdrom.sys
Windows\system32\drivers\Classpnp.sys
Windows\system32\drivers\cmdide.sys
Windows\system32\drivers\cng.sys
Windows\system32\drivers\compbatt.sys
Windows\system32\drivers\dfsc.sys
Windows\system32\drivers\disk.sys
Windows\system32\drivers\djsvs.sys
Windows\system32\drivers\elxstor.sys
Windows\system32\drivers\fbwf.sys
Windows\system32\drivers\fileinfo.sys
Windows\system32\drivers\fltMgr.sys
Windows\system32\drivers\fs_rec.sys
Windows\system32\drivers\fvevol.sys
Windows\system32\drivers\hidclass.sys
Windows\system32\drivers\hidparse.sys
Windows\system32\drivers\hidusb.sys
Windows\system32\drivers\HpSAMD.sys
Windows\system32\drivers\i8042prt.sys
Windows\system32\drivers\iaStorV.sys
Windows\system32\drivers\iirsp.sys
Windows\system32\drivers\intelide.sys
Windows\system32\drivers\intelppm.sys
Windows\system32\drivers\isapnp.sys
Windows\system32\drivers\kbdclass.sys
Windows\system32\drivers\ksecdd.sys
Windows\system32\drivers\ksecpkg.sys
Windows\system32\drivers\lsi_fc.sys
Windows\system32\drivers\lsi_sas.sys
Windows\system32\drivers\lsi_sas2.sys
Windows\system32\drivers\lsi_scsi.sys
Windows\system32\drivers\megasas.sys
Windows\system32\drivers\MegaSR.sys
Windows\system32\drivers\mouclass.sys
Windows\system32\drivers\mouhid.sys
Windows\system32\drivers\mountmgr.sys
Windows\system32\drivers\msahci.sys
Windows\system32\drivers\msfs.sys
Windows\system32\drivers\msisadrv.sys
Windows\system32\drivers\msrpc.sys
Windows\system32\drivers\mssmbios.sys
Windows\system32\drivers\mup.sys
Windows\system32\drivers\ndis.sys
Windows\system32\drivers\netio.sys
Windows\system32\drivers\nfrd960.sys
Windows\system32\drivers\npfs.sys
Windows\system32\drivers\nsiproxy.sys
Windows\system32\drivers\ntfs.sys
Windows\system32\drivers\null.sys
Windows\system32\drivers\nvraid.sys
Windows\system32\drivers\nvstor.sys
Windows\system32\drivers\partmgr.sys
Windows\system32\drivers\pci.sys
Windows\system32\drivers\pciide.sys
Windows\system32\drivers\pciidex.sys
Windows\system32\drivers\pcw.sys
Windows\system32\drivers\ql40xx.sys
Windows\system32\drivers\ramdisk.sys
Windows\system32\drivers\rdbss.sys
Windows\system32\drivers\sbp2port.sys
Windows\system32\drivers\scsiport.sys
Windows\system32\drivers\serenum.sys
Windows\system32\drivers\serial.sys
Windows\system32\drivers\sisraid2.sys
Windows\system32\drivers\sisraid4.sys
Windows\system32\drivers\stexstor.sys
Windows\system32\drivers\storport.sys
Windows\system32\drivers\storvsc.sys
Windows\system32\drivers\tdi.sys
Windows\system32\drivers\termdd.sys
Windows\system32\drivers\usbccgp.sys
Windows\system32\drivers\usbd.sys
Windows\system32\drivers\usbehci.sys
Windows\system32\drivers\usbhub.sys
Windows\system32\drivers\usbohci.sys
Windows\system32\drivers\usbport.sys
Windows\system32\drivers\USBSTOR.SYS
Windows\system32\drivers\usbuhci.sys
Windows\system32\drivers\vdrvroot.sys
Windows\system32\drivers\vga.sys
Windows\system32\drivers\viaide.sys
Windows\system32\drivers\videoprt.sys
Windows\system32\drivers\vmstorfl.sys
Windows\system32\drivers\volmgr.sys
Windows\system32\drivers\volmgrx.sys
Windows\system32\drivers\volsnap.sys
Windows\system32\drivers\vsmraid.sys
Windows\system32\drivers\watchdog.sys
Windows\system32\drivers\wd.sys
Windows\system32\drivers\Wdf01000.sys
Windows\system32\drivers\WdfLdr.sys
Windows\system32\drivers\wimfsf.sys
Windows\system32\drivers\wmilib.sys
Windows\winsxs\ManifestCache
Windows\winsxs\Manifests
Windows\winsxs\x86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_5.82.7600.16385_zh-cn_6189e316803d96d4
Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7600.16385_none_ebf82fc36c758ad5
作者: songnic    时间: 2011-4-2 22:49
来晚了, 强烈支持下
作者: 2011足迹    时间: 2011-4-2 22:55
原帖由 andos 于 2011-4-2 22:49 发表


CONFIG补回
DEFAULT
SAM
SECURITY
SOFTWARE

又出以下

先看到
117097

之后闪去
117096

看来我要弄个win7pe来研究了...
问题出在native.exe.得用windb调试了.
作者: sp_star    时间: 2011-4-2 22:55
原帖由 andos 于 2011-4-2 22:49 发表


CONFIG补回
DEFAULT
SAM
SECURITY
SOFTWARE

又出以下

先看到
117095

之后闪去
117096


呵呵,这说明已经运行到native.exe了。不过native.exe似乎还不是特别稳定。
可以试试把native.cfg里的exit先去掉,看看文件解压是不是正确。
作者: andos    时间: 2011-4-2 23:01
原帖由 sp_star 于 2011-4-2 22:47 发表


试试这个,我用这个可以运行到native.exe
Windows\Fonts
Windows\Globalization
Windows\inf
Windows\system32
Windows\winsxs
Windows\Fonts\vga936.fon
Windows\Fonts\vgafix.fon
Windows ...

这个我明天试试看,今晚夜了得去睡
你这个可以发上来吗? 当作是一个测试模板也不错呢

你这个列表能进桌面吗? 也就是说把其他的打包成比如7PE.CAB

[ 本帖最后由 andos 于 2011-4-2 23:09 编辑 ]
作者: n225    时间: 2011-4-2 23:11
好的技术一定要支持,可惜我不懂语言除了汉语,呵呵呵
作者: sp_star    时间: 2011-4-2 23:44
原帖由 andos 于 2011-4-2 23:01 发表

这个我明天试试看,今晚夜了得去睡
你这个可以发上来吗? 当作是一个测试模板也不错呢

你这个列表能进桌面吗? 也就是说把其他的打包成比如7PE.CAB


我只做了一个进命令行的,能进到cmd窗口。不过我想进桌面也是一样的,只要找到一个合适的PE就可以了。
下载地址:http://u.115.com/file/f18a19d82d#
只在VMWare里试过一下。
作者: hlstudio    时间: 2011-4-3 00:25
XP的模板也还要再试下,反正就是XP、2003、7这三个。
XP的仿2003清单我试了也是蓝屏,记得是个unkown error。
作者: tzxy    时间: 2011-4-3 00:40
凌晨来支持一下技术潜力帖
作者: weijun189    时间: 2011-4-3 06:55
期待楼主早出成果,支持一下




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3