无忧启动论坛

标题: WIN10PE连接手机(MTP支持) [打印本页]

作者: slore    时间: 2018-12-16 12:11
标题: WIN10PE连接手机(MTP支持)
本帖最后由 slore 于 2019-1-3 10:03 编辑

背景
手机能上网,下载东西传到电脑的话,不需要网络的维护PE就够了。

所以想解决WIN10PE下无法使用MTP驱动的问题。

再次感谢Noelblanc(原生显示桌面功能开启方法发现者,善于反编译调试爱骑自行车的法国退休老爷爷)

不能启动的原因是,系统启动的时候,services.exe调用InitWudfDriverManager()函数初始化UMDF服务失败。InitWudfDriverManager: Cannot initialize UMDF driver manager in WinPE(骑行旅游了3,4个月没给我消息,上个月回来给了我这条重要的线索).

当HKLM\System\Control\MiniNT存在就失败了。
不知道是PE下功能不全,还是单纯的微软限制,所以进行了验证。


我开始想着把services.exe中的MiniNT字符串改成NiniNT就可以了。结果这个进程是系统保护程序,改动1个字节就蓝屏了。

然后想着离线把MiniNT删除试试,结果发现离线的SYSTEM中不存在此项,应该是启动时初始化的。
尝试用已经不流行(补充:XPE, WIN7PE还有,WIN8之后就没有再用了)的native shell,在进系统前删除该注册表项(native下确认存在MiniNT),
然后还是蓝屏,应该是PE下的其他系统进程服务需要该项存在。

目前是写了个dll注入winlogon.exe在services.exe启动前删除该项,等几秒,再添加该项让winlogon.exe继续启动。这个秒数不固定,但是通过这种方法我们得以验证,PE下无法启动WUDF服务是微软限制。把不固定秒数问题解决,这种“曲线”方式我会发布一个MTP的WimBuilder2用的补丁。(通过进程检测代替等不确定秒数来实现,补丁见#6,如果不行源码也在自己修改等待时间编译测试。)

(2019-01-02)最终最小依赖补丁见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411399

如果使用此dll跳过限制后,要注意,没有WUDFPlatform.dll初始化失败蓝屏,没有
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF注册表,初始化失败蓝屏。
(#6的补丁在MTP_Drv_Srv补充中添加了)


正规的方法估计需要写个ring0级别驱动,可以控制只让services.exe读取不到该项目。
最近没什么空闲时间,就把原因和解除限制方法分享出来,有时间折腾的人来搞吧。

(我和Noel都是不使用PE的人。。。调查到这个地步搞清楚原理,我们就算完成。。。)




noel的手机:


我的Mate10手机:



作者: wsdyleon    时间: 2018-12-16 13:06
终于有解决方案了,类目
作者: tools241    时间: 2018-12-16 14:27
本帖最后由 tools241 于 2019-2-1 09:32 编辑
...但是通过这种方法我们得以验证,PE下无法启动WUDF服务是微软限制。
...
(我和Noel都是不使用PE的人。。。)

由于微软的限制, 利用PE与手机连线显然有难度( 代价不低 ).
所以我特制 Win7x64.VHD (大小仅1G) 来与手机连线, 有兴趣者可参考:
  珍稀资源! Win7x64.VHD(仅1G)可与手机连线/无网路,采Grub4Dos由硬盘/U盘启动/UEFI启动 ==>
  http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411643

注: 经测试在 "正常Win10系统" 与手机连线有时仍会失败, 且Win10x64.VHD不易精简,
     因此我特制 Win7x64.VHD 而不制作 Win10x64.VHD 来与手机连线.

    本人惯用的是10PE, 有兴趣者可参考:
   效率极致!   简/繁 x64/x86 10PE 17763.292, 17134.165, 15063 , x64 18323, 16299 --
                    含IE11+Firefox56+Chrome72+PotPlayer1.7.16291 PE影音上网 ==>
   http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385866


作者: sghihor    时间: 2018-12-16 20:14
我只想说


感谢Noel和slore。

等别的大大来弄吧。


作者: slore    时间: 2018-12-22 14:36
本帖最后由 slore 于 2018-12-24 13:20 编辑

秒数不固定的问题,通过检测服务进程的方式,解决了,我机器600毫秒后可以了恢复MiniNT项目,
还测试了一个4秒的环境,机器有限,不过从代码来看没有问题。
(附件的Hook.dll是会在X:\写Hook.dat进程日志,如果其他人的环境也OK的话,元旦后我更新一个不写日志的版本。)

做了一个WimBuilder2的 MTP支持 补丁。
另外x64位的话,对未签名驱动有限制,所以顺便也放一个不检查驱动签名的补丁。


MTP_Support.zip (85.73 KB, 下载次数: 376)
Patch_drvinst.zip (49.33 KB, 下载次数: 251)


解压到WimBuilder2的任意工程目录下即可。如果不使用WimBuilder2的话,自己看批处理脚本,非常简单易懂。

犯了一个低级的错误,导致昨天没有成功,System32下面补充winusb.dll就行了。
(补丁包中给INF, System32,Drivers, FileRepository添加文件,就单把System32下给漏了。。。)


作者: 红毛樱木    时间: 2018-12-22 15:07
slore 发表于 2018-12-22 14:36
秒数不固定的问题,找了个检查方法试了下,貌似可行,不过我机器600ms后可以了,
花的时间不长,我不确定 ...

收到,有的折腾了。以前一直折腾,就是服务启动不起来,再折腾一次试试
作者: fkltd-123    时间: 2018-12-22 19:27
wimboot上年提的问题楼主给解决了
otg otg
作者: slore    时间: 2018-12-23 06:25
本帖最后由 slore 于 2018-12-23 06:36 编辑
frg521 发表于 2018-12-23 01:42
...


成功的是我的hook.dll在Noel的PE下(英文截图)。他的PE源是ADK的winpe.wim而且他改造了非常多的东西,我的环境一直蓝屏,以至于我构建了无数次hook.dll的时间差。因为我用纯winre.wim从0开始构建,少了很多文件,注册表。验证到PE环境下限制解除,直到发现这2个蓝屏的补充,所以才给出 补丁。 剩下应该是补充文件和注册表的问题了。

这就是只靠对比文件差和注册表的方式无法突破的地方。

需要逆向分析,系统的处理流程。反汇编看services.exe, explorer.exe。用windbg.exe(微软出品)动态跟踪调试,在正常系统和PE比较执行顺序上有什么不同。

比程序开发难度要高。也不是一帆风顺,你们看到的只是结果,毕竟是闭源的,有时候真心靠运气发现突破口。WUDF服务相关资料断断续续3,4个月,然而没啥用,多数内容是正常系统下开发框架,使用的文档。偶然有句,该服务由services.exe初始化,然后才去调试它。
作者: 红毛樱木    时间: 2018-12-23 07:47
slore 发表于 2018-12-23 06:25
成功的是我的hook.dll在Noel的PE下(英文截图)。他的PE源是ADK的winpe.wim而且他改造了非常多的东西,我 ...

老大,能不能方便放一个直接删除MiniNT项的补丁?
作者: slore    时间: 2018-12-23 08:58
红毛樱木 发表于 2018-12-23 07:47
老大,能不能方便放一个直接删除MiniNT项的补丁?

只删除不创建?winpeshl.exe等程序会直接退出啊。

后续程序的话,你在PECMD中删除,效果一样。
作者: 红毛樱木    时间: 2018-12-23 09:23
slore 发表于 2018-12-23 08:58
只删除不创建?winpeshl.exe等程序会直接退出啊。

后续程序的话,你在PECMD中删除,效果一样。

后续再删,不是有点晚了么。
pe下很多地方限制都是这个原因,想弄个这样的环境研究一些东西。
作者: slore    时间: 2018-12-23 10:48
你先用32位测试吧。native cmd有个reg.exe。可以bootexecute下直接删除。wpeutil, winpeshl等会自动退出,用pecmd应该能到跳过。另外winlogon之后的进程没被系统保护,用IFEO劫持到别的命令也行。

dll的话,晚点有时间了再给你编译一个,补丁包也有dllmain.c,自己有VS的话也可以自己编译。
作者: 红毛樱木    时间: 2018-12-23 10:53
本帖最后由 红毛樱木 于 2018-12-23 10:54 编辑
slore 发表于 2018-12-23 10:48
你先用32位测试吧。native cmd有个reg.exe。可以bootexecute下直接删除。wpeutil, winpeshl等会自动退出, ...


wpeutil, winpeshl退出

这个好像不是难点,前面y(手机打字,不记得大神名字了,论坛反编译高手)分析过过程,可以自己用程序实现替代。

现在还没开始折腾你提供的mtp补丁,下周折腾试试,有需求再来骚扰您
作者: slore    时间: 2018-12-23 16:52
红毛樱木 发表于 2018-12-23 09:23
后续再删,不是有点晚了么。
pe下很多地方限制都是这个原因,想弄个这样的环境研究一些东西。

是的,比如 远程访问的身份认证的对话框,PE下就是控制台模式,如果识别为非PE,共享访问和远程桌面,是弹出如下界面:





wpeutil, winpeshl退出

这类程序没保护好像,把程序改成NiniNT,然后注册表添加一个NiniNT键,他们也能通过。。。确实不难。
作者: slore    时间: 2018-12-24 00:31
犯了一个低级错误,少复制winusb.dll文件到system32了。


作者: 红毛樱木    时间: 2018-12-24 08:15
slore 发表于 2018-12-24 00:31
犯了一个低级错误,少复制winusb.dll文件到system32了。

你看这样是不是更稳妥些,用你的补丁改注册表,然后补丁不改回注册表。
最后由pecmd接管的时候再改回来,这样是不是就能避免你提到的600ms延时的问题?
作者: slore    时间: 2018-12-24 09:03
红毛樱木 发表于 2018-12-24 08:15
你看这样是不是更稳妥些,用你的补丁改注册表,然后补丁不改回注册表。
最后由pecmd接管的时候再改回来 ...

最新的补丁是使用服务进程检查,延时的问题应该解决了,在4秒的环境也测试过了。

winlogon启动以后的进程,PECMD能接管的进程不会因为这个项导致蓝屏。重点是先删除让services.exe通过。后面创建只是还原现场,保证不使用PECMD的,用winpeshl启动的PE也正常。
作者: 红毛樱木    时间: 2018-12-24 11:05
slore 发表于 2018-12-24 09:03
最新的补丁是使用服务进程检查,延时的问题应该解决了,在4秒的环境也测试过了。

winlogon启动以后的 ...

这种方式是不是也可以顺带解决之前的WOW64破解的问题?

作者: 红毛樱木    时间: 2018-12-24 14:20
本帖最后由 红毛樱木 于 2018-12-24 16:03 编辑

又研究了一下之前折腾的win8pe中MTP失败的情况,今天才发现之前注册表有问题,忘记添加注册表中的mtp的class类型了。Win8pe不需要破解补丁




---------------------------------------------------------------------------------
win10pe x86和x64 16299中测试,日志这样显示,最终失败
Device class {eec5ad98-8080-425f-922a-dabf3de3f69a} is not configurable.
作者: 红毛樱木    时间: 2018-12-24 16:10
win10pe x86和x64 16299中测试,日志这样显示,最终失败
Device class {eec5ad98-8080-425f-922a-dabf3de3f69a} is not configurable.

是不是破解补丁的那个dll没有生效?
作者: 红毛樱木    时间: 2018-12-24 16:24
本帖最后由 红毛樱木 于 2018-12-24 16:27 编辑
红毛樱木 发表于 2018-12-24 16:10
win10pe x86和x64 16299中测试,日志这样显示,最终失败
Device class {eec5ad98-8080-425f-922a-dabf3de3 ...


是哪个?看不太明白。
设备管理器的错误码是19



作者: 红毛樱木    时间: 2018-12-24 17:36
红毛樱木 发表于 2018-12-24 16:24
是哪个?看不太明白。
设备管理器的错误码是19

X:\Hook.dat
没有产生这个文件。

作者: 红毛樱木    时间: 2018-12-24 19:38
红毛樱木 发表于 2018-12-24 17:36
X:\Hook.dat
没有产生这个文件。

wimbuilder下午用了一次没成功,不好意思真的是第一次用。
在win7系统下,挂载的ISO,没反应。是不是只能win10系统下用?
作者: 红毛樱木    时间: 2018-12-24 19:39
红毛樱木 发表于 2018-12-24 17:36
X:\Hook.dat
没有产生这个文件。

我测试了一次手动把winre.wim里的文件补上也是一样的情况,明天再研究下wimbuilder
作者: 红毛樱木    时间: 2018-12-24 20:44
16299就是1709
作者: 红毛樱木    时间: 2018-12-24 22:24
红毛樱木 发表于 2018-12-24 17:36
X:\Hook.dat
没有产生这个文件。


总算用wimbuilder生成了,现在的状态是10,应该是成功了,也有dat文件生成。
内容如下

作者: 红毛樱木    时间: 2018-12-24 23:19
红毛樱木 发表于 2018-12-24 22:24
总算用wimbuilder生成了,现在的状态是10,应该是成功了,也有dat文件生成。
内容如下

硬盘挂了,挂的真是时候,,,明天再试了。导数据
作者: 红毛樱木    时间: 2018-12-24 23:54
我用wimbuilder生成的注册表替换掉我的注册表,那个dll还是没加载成功,这个依赖也太奇葩了吧。
不会是需要.net3.5的支持吧?
作者: slore    时间: 2018-12-25 00:42
红毛樱木 发表于 2018-12-24 23:54
我用wimbuilder生成的注册表替换掉我的注册表,那个dll还是没加载成功,这个依赖也太奇葩了吧。
不会是需 ...


winre.wim不带.net组件,这个DLL没有依赖的。

直接在WimBuilder2准备界面选择你修改过的boot.wim,然后,补丁界面把所有的钩都去掉,只保留MTP_Support看看可以不。
作者: 红毛樱木    时间: 2018-12-25 00:47
slore 发表于 2018-12-25 00:42
winre.wim不带.net组件,这个DLL没有依赖的。

直接在WimBuilder2准备界面选择你修改过的boot.wim, ...

明天测试看看。
作者: 红毛樱木    时间: 2018-12-25 10:12
slore 发表于 2018-12-25 00:42
winre.wim不带.net组件,这个DLL没有依赖的。

直接在WimBuilder2准备界面选择你修改过的boot.wim, ...

WimBuilder2准备界面选择你修改过的boot.wim,然后,补丁界面把所有的钩都去掉,只保留MTP_Support


结果无限转圈了,不能进桌面了。。。
作者: 红毛樱木    时间: 2018-12-25 10:33
红毛樱木 发表于 2018-12-25 10:12
WimBuilder2准备界面选择你修改过的boot.wim,然后,补丁界面把所有的钩都去掉,只保留MTP_Support

我还是用笨方法吧,手动文件对比补充测试。看看能不能找出来关键点
作者: 红毛樱木    时间: 2018-12-25 11:23
本帖最后由 红毛樱木 于 2018-12-25 11:25 编辑

2018-12-25 11:16:02.616
2018-12-25 11:16:02.616
0:[System Process]
4:System
460:smss.exe
564:csrss.exe
628:wininit.exe
640:csrss.exe
692:winlogon.exe
716:services.exe
724:lsass.exe
2018-12-25 11:16:03.132
0:[System Process]
4:System
460:smss.exe
564:csrss.exe
628:wininit.exe
640:csrss.exe
692:winlogon.exe
716:services.exe
724:lsass.exe
800:fontdrvhost.exe
848:svchost.exe

dat文件有了,但是设备管理器里还是错误19


作者: slore    时间: 2018-12-25 11:30
本帖最后由 slore 于 2018-12-25 12:46 编辑

那就是你补充文件漏东西了。建议你用WimBuilder2把winusb*加上,生成一个可以用的wim,然后dir /b /s对比下,文件差分。
rootcat?其实只要一部分,我全加了。你看看你是不是看错了,只补充了client
作者: 红毛樱木    时间: 2018-12-25 11:36
slore 发表于 2018-12-25 11:30
那就是你补充文件漏东西了。建议你用WimBuilder把winusb*加上,然后,dir /b /s对比下,文件差。
rootcat? ...

搞出来这个DAT有点曲折,我昨天手动改的WIM文件其实没有问题,今天换一个ISO外壳就出来这个DAT了,很奇葩很奇葩。
作者: slore    时间: 2018-12-25 12:23
本帖最后由 slore 于 2018-12-25 12:35 编辑



稍微集中精力折腾的话,好多遗留问题迎刃而解了。。。
放假休息,年后看情況,闲点儿了再折腾。
作者: 红毛樱木    时间: 2018-12-25 12:37
slore 发表于 2018-12-25 12:23
稍微集中精力折腾的话,好多遗留问题迎刃而解了。。。
放假休息,年后看情況,闲点儿了再折腾。

厉害了,这个状态居然出来了。
作者: 红毛樱木    时间: 2018-12-25 15:02
总算搞定了,看上去还是ISO的问题。可能是我破解的BOOTMGR版本低了。

作者: 红毛樱木    时间: 2018-12-25 18:21
本帖最后由 红毛樱木 于 2018-12-25 18:28 编辑
红毛樱木 发表于 2018-12-25 15:02
总算搞定了,看上去还是ISO的问题。可能是我破解的BOOTMGR版本低了。

最终确定是BCD的原因,你试试这样操作。
用BOOTICE编辑BCD,然后删掉默认的启动项,新建一个一样的启动项,这样启动之后就不产生那个DAT文件了。
------------------------------------------------
在源BCD上修改菜单,怎么修改都没事,就是不能用BOOTICE新建的菜单引导。

作者: 红毛樱木    时间: 2018-12-25 23:10
红毛樱木 发表于 2018-12-25 18:21
最终确定是BCD的原因,你试试这样操作。
用BOOTICE编辑BCD,然后删掉默认的启动项,新建一个一样的启动 ...

用bootice高级模式里的复制菜单,没问题。
把所有bcd都重新做了一遍
作者: 2012qnmd    时间: 2018-12-27 18:21
什么时更新到那个帖子里面
作者: caocaofff    时间: 2018-12-31 15:28
楼主也来看看我这个是咋回事?
是按照附件里的批处理添加了文件和注册表,然后是现在这个样子。。

sshot-1.png (259.34 KB, 下载次数: 196)

sshot-1.png

sshot-2.png (410.29 KB, 下载次数: 198)

sshot-2.png

作者: 红毛樱木    时间: 2018-12-31 15:53
caocaofff 发表于 2018-12-31 15:28
楼主也来看看我这个是咋回事?
是按照附件里的批处理添加了文件和注册表,然后是现在这个样子。。

卸载一下,在刷新试试
作者: makimaki2    时间: 2019-1-1 00:32
本帖最后由 makimaki2 于 2019-1-1 00:36 编辑

请问slore前辈, 打印支持,MSI,.net,wmv播放 有解决了吗
作者: KevinK    时间: 2019-1-1 11:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: eastmz    时间: 2019-1-1 11:34
感谢分享经验……
作者: makimaki2    时间: 2019-1-2 01:18
本帖最后由 makimaki2 于 2019-1-2 01:39 编辑

MTP 支持 代表连接手机或是数码相机内存储 类似 U盘那样,还有通过USB线,利用手机的3G-4G-5G通讯共享来给PC上网
MTP是PE里面难攻不下的问题之一,突破MTP是很了不起的成就

另外的难问是 打印机支持,打印主控台与打印驱动支持之类,许多强者去尝试都无功而返
至于wmv则是有些加密视频如国嵌需要用海海播放器,需要系统提供wmv wma解码器

大多数PE对MSI/Windows Installer的支持都不完整,时常会遇到无法安装的MSI
是故Windows Installer封装的完整支持便是一个难问

.net framwork因版本不统一,变得很肥大,整合进PE会增加开机时间,
然而VisualStudioOffice为首许多大型软件渐渐在Win10把.net framwork当作标配
如何外置.net便是让.net实用化必要突破的关卡
作者: caocaofff    时间: 2019-1-2 16:10
这次重新添加,驱动貌似正常了,但为啥手机开了传输照片却没在资源管理器找到?

QQ截图20190102160907.jpg (124.04 KB, 下载次数: 211)

QQ截图20190102160907.jpg

作者: 红毛樱木    时间: 2019-1-2 16:46
caocaofff 发表于 2019-1-2 16:10
这次重新添加,驱动貌似正常了,但为啥手机开了传输照片却没在资源管理器找到?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders

补全下面的所有注册表试试,然后里面有几个CLSID
作者: caocaofff    时间: 2019-1-2 17:04
红毛樱木 发表于 2019-1-2 16:46
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\Delegat ...

OK,已经成功显示哈哈
多谢红毛兄
作者: liuzhaoyzz    时间: 2019-1-2 17:18
本帖最后由 liuzhaoyzz 于 2019-1-2 17:26 编辑

     问下slore大,WIN10PE开始原生开始菜单左键单击无效,还有托盘区wifi和喇叭点击无效,能否解决?是不是也和那个MININT有关呢?
    在制作RAMOS的过程中碰到类似的问题,所以想问下。  

作者: liuzhaoyzz    时间: 2019-1-2 17:21
红毛樱木 发表于 2018-12-23 10:53
wpeutil, winpeshl退出

这个好像不是难点,前面y(手机打字,不记得大神名字了,论坛反编译高手)分析 ...

    你说的是yamingw大神吧?他懂反编译。   
作者: liuzhaoyzz    时间: 2019-1-2 21:44
本帖最后由 liuzhaoyzz 于 2019-1-2 22:23 编辑
liuzhaoyzz 发表于 2019-1-2 17:18
问下slore大,WIN10PE开始原生开始菜单左键单击无效,还有托盘区wifi和喇叭点击无效,能否解决?是不 ...


   如果能够搞定原生开始菜单、托盘区的WIFI和喇叭等问题,不但是对PE很有好处,对UEFI-RAMOS作用也非常之大,因为PE的原生菜单问题可以类推到UEFI-RAMOS下面。
    敬候slore大的佳音!

   开始菜单用StartIsBack代替确实也是一个备选的方案,我刚才试了下WinXShell代替explorer.exe确实挺强大,声音、WIFI用WinXShell写了组件也是不错的替代方案。
    RAMOS制作基本上是希望用原来的系统转化成的,现有的在开始菜单创建快捷方式、程序组在现有的一键RAMOS制作方案下,不清楚是否需要改动代码才能适配WinXShell外壳,另外大家用了很多年的explorer.exe外壳,现在要抛弃也需要个习惯的过程,不知道用户能否接受,如果不增加和不改动直接转化当然是最好的了。
     

作者: bjlbjl    时间: 2019-1-7 08:34
请问,这个是否支持10586版本,谢谢
作者: 红毛樱木    时间: 2019-1-11 15:26
本帖最后由 红毛樱木 于 2019-1-11 15:31 编辑

发现一个问题,用了这个补丁之后,好像PE的默认字体变成宋体了,而不是微软雅黑了。不知道为什么。


反正就是字体不是原来的字体了,不一样了。是不是影响了Font开头的那个进程初始化字体了?
作者: slore    时间: 2019-1-13 13:54
红毛樱木 发表于 2019-1-11 15:26
发现一个问题,用了这个补丁之后,好像PE的默认字体变成宋体了,而不是微软雅黑了。不知道为什么。




WimBuilder2对winre.wim 基础上加MMC,然后带MTP支持,和不带MTP支持对比:
显示内容字体没有区别。

如果有变化,应该不是这个补丁影响的。
你看看你还有啥其他修改地方没。

作者: 红毛樱木    时间: 2019-1-13 13:57
slore 发表于 2019-1-13 13:54
WimBuilder2对winre.wim 基础上加MMC,然后带MTP支持,和不带MTP支持对比:
显示内容字体没有区别 ...

我就把这个dll删掉之后自己就正常了
作者: slore    时间: 2019-1-13 14:05
本帖最后由 slore 于 2019-1-13 14:17 编辑



选择 explorer.exe +StartIsBack + MMC + MTP 支持重新构建, 字体也没啥变化。
作者: wxgwxg    时间: 2019-1-13 14:17
为什么非要MTP模式,手机上装一个ftpserver,pe里边启动ftp 客户端直接连上不就可以了吗。MTP太麻烦了,不要说PE,就是正常的系统也经常连接不上。
作者: 红毛樱木    时间: 2019-1-13 14:23
slore 发表于 2019-1-13 14:05
选择 explorer.exe +StartIsBack + MMC + MTP 支持重新构建, 字体也没啥变化。


http://up.usbrun.com/USM1PE8F.WIM

补丁文件是\windows\wxsHook.dll

无补丁的,



有补丁的

作者: slore    时间: 2019-1-13 15:00
红毛樱木 发表于 2019-1-13 14:23
http://up.usbrun.com/USM1PE8F.WIM

补丁文件是\windows\wxsHook.dll
  1. D:\Dev\WimBuilder2\Projects\USM>tree /f
  2. 卷 软件 的文件夹 PATH 列表
  3. 卷序列号为 0009-6BF5
  4. D:.
  5.     main.bat
  6.     mtpHelper_x64.dll
  7.     mtpHelper_x86.dll
  8.     USM1PE8F.WIM
复制代码


main.bat
  1. set WB_PE_ARCH=x86
  2. set X_SYS=X:\Windows\System32

  3. rem install mtpHelper hook
  4. echo copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
  5. copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
  6. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /d mtpHelper.dll /f
  7. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
  8. reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0 /f
复制代码


用WimBuilder2生成新的BOOTPE.ISO结果如图,没有字体问题。

要么是和之前一样你的启动ISO模板的BOOT\BCD有什么区别,要么就是你的“加载外置”的脚本在外置存在的时候,
有地方对字体进行了影响。





作者: 红毛樱木    时间: 2019-1-13 17:47
slore 发表于 2019-1-13 15:00
main.bat



你开下测试模式试试
作者: 红毛樱木    时间: 2019-1-13 18:21



用原版ISO直接套上BOOT.WIM启动
一个带补丁 一个不带补丁,对比很直观。
作者: slore    时间: 2019-1-13 18:49
红毛樱木 发表于 2019-1-13 18:21
用原版ISO直接套上BOOT.WIM启动
一个带补丁 一个不带补丁,对比很直观。

17763.165.181109-1706.RS5_RELEASE_SVC_PROD3_CLIENTPRO_OEMRET_X86FRE_ZH-CN.ISO
boot.wim的第二卷[Setup],只应用MTP支持补丁,没有其他的。






启动如图所示:


可以看到 cmd的标题: [管理员: ]

[无标题 - 记事本]

都是正常的字体。

你最好把其他的添加都去掉了,只添加这个补丁来测试,避免干扰。

(X:\hook.dat存在,所以补丁生效的。)

作者: 红毛樱木    时间: 2019-1-13 20:12
slore 发表于 2019-1-13 18:49
17763.165.181109-1706.RS5_RELEASE_SVC_PROD3_CLIENTPRO_OEMRET_X86FRE_ZH-CN.ISO
boot.wim的第二卷[Se ...

实在搞不懂为什么,研究了一下还是没找到关键所在。
只有一个明显的区别,你那边没有DWM,我这里有DWM。不知道是不是这个影响
作者: slore    时间: 2019-1-13 20:46
frg521 发表于 2019-1-13 17:41
...

mtpHelper_sec.zip (79.91 KB, 下载次数: 36)

附件是把dllmain.c改成30秒的编译版本,没有进程监控,没有日志。

如果要其他秒数,UltraEdit或者其他Hex编辑器,搜索:30 75 00 00修改。

30秒=30000毫秒 = 0x00007530。

比如要改成等1分钟, => 60000毫秒 = 0x0000EA60

30 75 00 00
改为
60 EA 00 00


作者: 红毛樱木    时间: 2019-1-13 21:25
frg521 发表于 2019-1-13 20:51
...

等你结果,,,
作者: slore    时间: 2019-1-13 21:58
红毛樱木 发表于 2019-1-13 21:25
等你结果,,,

换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打包,啥也不改也正常。

估计你推测的是对的,影响services.exe启动的子程序fontdrvhost.exe。
winlogon.exe的子程序fontdrvhost.exe不会受到影响。

不过在fontdrvhost.exe中不存在MiniNT字符串,那就是services.exe做了什么其他事情?

关于 记事本 字体 是 “宋体”应该是你的注册表设置有关系,窗口标题,开始菜单都显示正常字体,
或者禁用了AppInitDLL,删除wxsHook.dll,结果 记事本 也是 "宋体"。

我先试试用30秒的,在原版boot.wim上是不是也存在相同现象。
作者: slore    时间: 2019-1-13 22:10
我先试试用30秒的,在原版boot.wim上是不是也存在相同现象。


用了30秒的,标题显示有问题了。记事本内容没有问题,是雅黑。

主要services.exe不能被修改,也不能注入。。。只影响MTP的初始化比较困难。

我的环境用进程检查的dll没出现过,估计还是跟启动速度,时机有关系。


作者: 红毛樱木    时间: 2019-1-13 22:11
slore 发表于 2019-1-13 21:58
换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打 ...


好的,那我不折腾了。等你调试代码。
我感觉这个延时的机制可能还不太好,毕竟没有抓住重点
作者: 红毛樱木    时间: 2019-1-14 18:40
slore 发表于 2019-1-13 21:58
换了30秒的,我这里出现了你的情况。开始菜单的 ,搜索栏 明显字体不对。

不过把你USM1PE8F.WIM直接打 ...

两个fontdrvhost.exe进程启动有参数和先后顺序之分吗?自己启动这两个进程不知道行不行。

作者: slore    时间: 2019-1-14 19:28
顺序的话,从进程日志可以看到是services.exe的先启动,winlogon的是,sleep之后,MiniNT恢复后才启动的。
我环境,日志也有这个进程但是字体正常,应该不单单是启动程序来解决。
作者: 红毛樱木    时间: 2019-1-14 20:09
slore 发表于 2019-1-14 19:28
顺序的话,从进程日志可以看到是services.exe的先启动,winlogon的是,sleep之后,MiniNT恢复后才启动的。
...

这样不知道行不行,mtp组件我是外置的,不知道调用外置mtp组件的时候改这个注册表键值还有没有效?
作者: 红毛樱木    时间: 2019-1-15 23:10




有研究过蓝牙吗?
搞了一下,但是还不能设置为可见设备,也不能搜索到别的可见蓝色设备。
看上去和打印组件有关,等您的打印补丁
作者: bjlbjl    时间: 2019-1-19 17:23
本帖最后由 bjlbjl 于 2019-1-19 17:43 编辑
红毛樱木 发表于 2019-1-15 23:10
有研究过蓝牙吗?
搞了一下,但是还不能设置为可见设备,也不能搜索到别的可见蓝色设备。
看上去 ...


请大神指教,不知什么地方出错了,谢谢了




hook.dat显示
2019-01-19 17:03:56.530
2019-01-19 17:03:56.530
0:[System Process]
4:System
268:smss.exe
352:csrss.exe
416:wininit.exe
424:csrss.exe
484:services.exe
496:lsass.exe
588:winlogon.exe
2019-01-19 17:03:57.044
0:[System Process]
4:System
268:smss.exe
352:csrss.exe
416:wininit.exe
424:csrss.exe
484:services.exe
496:lsass.exe
588:winlogon.exe
632:svchost.exe




作者: hhh333    时间: 2019-1-24 20:51
折腾了一下,手机是找到了,就是资源管理器中不出来


作者: hhh333    时间: 2019-1-24 20:52
bjlbjl 发表于 2019-1-19 17:23
请大神指教,不知什么地方出错了,谢谢了

把winusb.sys放一个到inf文件夹中就不会找不到了。
作者: 红毛樱木    时间: 2019-1-24 21:44
hhh333 发表于 2019-1-24 20:51
折腾了一下,手机是找到了,就是资源管理器中不出来

50#
之前winbuilder删除了这里的注册表
作者: slore    时间: 2019-1-25 00:31
hhh333 发表于 2019-1-24 20:52
把winusb.sys放一个到inf文件夹中就不会找不到了。

rem install mtpHelper hook
copy mtpHelper_%WB_PE_ARCH%.dll %X_SYS%\mtpHelper.dll
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /d mtpHelper.dll /f
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "HKLM\Tmp_Software\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0 /f

rem hook requirement(or BSOD)
call RegCopy "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF"
rem call AddFiles WUDFPlatform.dll MUI

rem ==========update filesystem==========

set AddFiles_Mode=merge

call AddDrivers winusb.inf
call AddDrivers "wpd*.inf,wudf*.inf" FILE

call AddFiles %0 :end_files
goto :end_files
@windows\system32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
Microsoft-Windows-Client-Desktop-Required-Package*
;Microsoft-Windows-WPD*

@windows\system32\
drivers\UMDF\
+mui
winusb*,wpd*,WUDF*,PortableDevice*
:end_files

call DoAddFiles

rem ==========update registry==========
rem WPD class(Portable Devices)
call RegCopy SYSTEM\ControlSet001\Control\Class\{EEC5AD98-8080-425F-922A-DABF3DE3F69A}

rem add services
call RegCopyEx Services "WINUSB,WPDBusEnum,WpdUpFltr,WudfPf,WUDFRd"

rem winusb.inf (already added by AddDrivers macro, only two items in <1KB)
rem has high cost performance to copy all DriverDatabase items, just 4MB SYSTEM size(608KB compressed)
rem call RegCopy SYSTEM\DriverDatabase

rem explorer Portable device
rem Portable Devices ::{35786D3C-B075-49b9-88DD-029876E11C01}

call RegCopy HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders
rem [optional]call SharedPatch NewBrowseDlg
rem put mtp_support.bat on Desktop
call X2X

作者: slore    时间: 2019-1-25 00:34
hhh333 发表于 2019-1-24 20:52
把winusb.sys放一个到inf文件夹中就不会找不到了。

其实mtp_support.bat直接一句:
drvload X:\Windows\System32\DriverStore\FileRepository\wpdmtp.inf_amd64_79762cfde1a9fe38\wpdmtp.inf
就可以了。

RE:WIN10XPE中更新了。
  1. @echo off
  2. set DrvRepo=%SystemRoot%\System32\DriverStore\FileRepository
  3. call :InstDriver wpdmtp.inf
  4. pause
  5. goto :EOF

  6. :InstDriver
  7. set DrvFolder=
  8. for /f "delims=" %%i in ('dir /b %DrvRepo%\%1_*') do set DrvFolder=%%i
  9. if "x%DrvFolder%"=="x" goto :EOF
  10. drvload %DrvRepo%\%DrvFolder%\%1
复制代码


感觉直接dism /add-driver离线应该也可以。。。驱动我以前没搞过。
作者: 红毛樱木    时间: 2019-1-25 03:07
frg521 发表于 2019-1-25 02:48
...

看来这里有个逻辑上的冲突了。
pe环境初始化的时候会自动安装一些pnp设备驱动,而用了补丁的时候正好否定了"pe环境",所以驱动没有自动安装。
不知道我上面的理解对不对。
不过有解决办法的,如果注册表和驱动文件都齐全完整的话,可以利用第三方工具startnet.exe的-pnp达到命令自动安装mtp驱动的效果。

也还有一种更高级的程序方式,判断设备不正常的设备,卸载之,再刷新设备就行了。这种方式简单的devcon.exe批处理应该就能实现。

当然还有别的方法处理驱动问题,但是我觉得关键性的问题还是补丁中的延时机制不够完美。
作者: 红毛樱木    时间: 2019-1-25 12:20
slore 发表于 2019-1-13 20:46
附件是把dllmain.c改成30秒的编译版本,没有进程监控,没有日志。

如果要其他秒数,UltraEdit或者 ...

能不能搞一个补丁,只删注册表不恢复的补丁?而且带日志的。

方便分析研究一些问题
作者: hhh333    时间: 2019-1-25 13:03
红毛樱木 发表于 2019-1-24 21:44
50#
之前winbuilder删除了这里的注册表

是的,加上可以了
作者: hhh333    时间: 2019-1-25 13:14
slore 发表于 2019-1-25 00:34
其实mtp_support.bat直接一句:
drvload X:\Windows\System32\DriverStore\FileRepository\wpdmtp.inf_a ...

之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充HKEY_LOCAL_MACHINE\pe-sys\DriverDatabase中winusb的相关项就可以到DriverStore中自动去找了。否则会提示找不到文件,MTP设备安装失败
作者: hhh333    时间: 2019-1-25 13:16
不知这个工具能不能用于win8,8.1
作者: hhh333    时间: 2019-1-25 14:45
hhh333 发表于 2019-1-25 13:14
之所以要在inf文件夹下放winusb.sys是使用boot.wim或winre.wim中的system造成,在驱动库中没有登记,补充 ...

应该是可以添加,DISM也可以的
作者: hhh333    时间: 2019-1-31 11:58
本帖最后由 hhh333 于 2019-1-31 11:59 编辑
makimaki2 发表于 2019-1-1 00:32
请问slore前辈, 打印支持,MSI,.net,wmv播放 有解决了吗


我发布的那个PE一直都有支持啊
作者: makimaki2    时间: 2019-1-31 18:08
本帖最后由 makimaki2 于 2019-1-31 18:31 编辑

直接修改serviceX.exe离线文件MiniPE为NiniPE如何
作者: hhh333    时间: 2019-1-31 20:37
hhh333 发表于 2019-1-31 11:58
我发布的那个PE一直都有支持啊

都是组件方式,应该基本是按功能分开的
作者: 红毛樱木    时间: 2019-2-1 13:32
请教下slore大,新版win10是不是没有native环境了?弄半天没弄出来最小native环境
作者: slore    时间: 2019-2-1 16:49
本帖最后由 slore 于 2019-2-1 16:50 编辑
红毛樱木 发表于 2019-2-1 13:32
请教下slore大,新版win10是不是没有native环境了?弄半天没弄出来最小native环境


native环境是有的,32位直接改下注册表启动native.exe就行了。你说最小我就不知道了,我没精简是直接winre.wim修改BootExecute就可以用。
作者: makimaki2    时间: 2019-2-1 23:35
在線不給改,是硬件CPU有保護模式(或軟件有保護)
離線不給改,那就是軟件有保護 如校驗碼或是簽章

換個 版本services.exe試試


作者: hhh333    时间: 2019-2-2 18:26
makimaki2 发表于 2019-2-1 23:35
在線不給改,是硬件CPU有保護模式(或軟件有保護)
離線不給改,那就是軟件有保護 如校驗碼或是簽章

换什么版本?
作者: hhh333    时间: 2019-2-2 18:28
mtphlp工具延时还是有问题,有的机器可以有的机器不行,感觉需要换一种方式来解决这个问题。直接改字节确实蓝屏。
作者: looltt    时间: 2020-3-26 17:00
感谢感谢感谢
作者: szmsys    时间: 2020-4-27 08:23
能连手机上网,就厉害了

作者: waaoo    时间: 2020-4-28 17:27
谢谢,下载了
作者: HenryNewman    时间: 2020-7-8 13:49
发布的Win10PE(带MTP驱动)文件只能单向传输,请尽快解决文件双向传输问题:
=================================================
测试Win10PE(带MTP驱动:10PE19569x64_No_Admin_C.iso 483M 2020/05/30 18:11 20H2 推荐使用 可与手机连线, 内建微软五笔/拼音):
发现文件只能单向传输,只能从手机文件夹复制到电脑文件夹,不能反向复制。
恳请尽快解决文件双向传输问题。
另外,WinPE启动时间较长,请再尽量精简,大小最好不超过250MB,只保留最有用的工具即可。
作者: slore    时间: 2020-7-8 14:25
HenryNewman 发表于 2020-7-8 13:49
发布的Win10PE(带MTP驱动)文件只能单向传输,请尽快解决文件双向传输问题:
========================== ...

WimBuilder2默认工程加MTP正常双向复制,勾选精简项目,体积可以260MB。
作者: xhan    时间: 2020-10-16 18:35
谢谢分享




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