无忧启动论坛

标题: 共同探讨WinPE的24小时重启之谜 [打印本页]

作者: adoijay    时间: 2007-7-29 13:33
标题: 共同探讨WinPE的24小时重启之谜
我们知道:WinPE只是有限功能的Mini操作系统,微软为了防止用户将它用作盗版操作系统,在连续使用24小时后WinPE将自动退出并重启。
  这个限制有可能给用户带来不便,例如用PE系统进行无人值守的长时间维护,而又不能中断的情况。
  在某些版本的WinPE中,采取了这样一种方法来破除这种限制:
-------------------------------------------------------------------------------------------------------------------
  在系统初始化过程中使用PECMD.INI
  //杀掉无用进程并删掉 X: 盘可删除文件以节省空间
  TEAM WAIT 5000|KILL SMSS.EXE|KILL WINLOGON.EXE|FILE %SS%\SMSS.EXE|FILE %SS%\WINLOGON.EXE
-------------------------------------------------------------------------------------------------------------------
  杀掉 SMSS.exe 和 Winlogon.exe 进程
  PE的24小时限制一定是在Winlogon.exe这个文件中,那我们是不是可以修改这个系统文件来破除24小时的限制呢?
  我在国外的一个网站上看到了这个文件:
  http://www.bootcd.us/Downloads/winlogon.cab
里面有两个文件:winlogon.exe 版本:5.1.2600.1106 和 winlogon.inf 内容如下:
-------------------------------------------------------------------------------------------------------------------
;
; winlogon.inf for PE builder v3
; By tadw, _reqUiem_ & Jon Fleming
; You guys rule!
;
; winlogon.exe was patched with a hex editor as follows:
;
; search: A1 C8 5B 07 01 C9 C3
; replace: 33 C0 90 90 90 C9 C3
;
; search: EB 2C 8B 47 08
; replace: 90 90 8B 47 08
[Version]
Signature= "$Windows NT$"
[PEBuilder]
name="Winlogon resource patch"
Enable=1
[SourceDisksFiles]
winlogon.exe=2,,1
[SetupReg.AddReg]
; Memory Management
0x4, "ControlSet001\Control\Session Manager\Memory Management", "DisablePagingExecutive", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "LargeSystemCache", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "IoPageLockLimit", 0x00010000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "ClearPageFileAtShutdown", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "NonPagedPoolQuota", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "NonPagedPoolSize", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "PagedPoolQuota", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "SecondLevelDataCache", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "SystemPages", 0x00000000
0x7, "ControlSet001\Control\Session Manager\Memory Management", "PagingFiles", 00,00,00,00
0x4, "ControlSet001\Control\Session Manager\Memory Management", "PhysicalAddressExtension", 0x00000000
0x4, "ControlSet001\Control\Session Manager\Memory Management", "SessionViewSize", 0x00000030
0x4, "ControlSet001\Control\Session Manager\Memory Management", "SessionPoolSize", 0x00000004
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "VideoInitTime", 0x00000439
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "EnablePrefetcher", 0x00000003
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "AppLaunchMaxNumPages", 0x00000fa0
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "AppLaunchMaxNumSections", 0x000000aa
0x7, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "AppLaunchTimerPeriod", 80,69,67,ff,ff,ff,ff,ff
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "BootMaxNumPages", 0x0001f400
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "BootMaxNumSections", 0x00000ff0
0x7, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "BootTimerPeriod", 00,f2,d8,f8,ff,ff,ff,ff
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "MaxNumActiveTraces", 0x00000008
0x4, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "MaxNumSavedTraces", 0x00000008
0x1, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "RootDirPath", "Prefetch"
0x7, "ControlSet001\Control\Session Manager\Memory Management\PrefetchParameters", "HostingAppList", "DLLHOST.EXE,MMC.EXE,RUNDLL32.EXE"
-------------------------------------------------------------------------------------------------------------------
我把 winlogon.exe  替换 我的PE里的文件后,启动到 SMSS.exe步骤时蓝屏,出现 Stop:c000021a unknow hard error 错误 不知为何?
大家共同探讨,应该怎样修改Winlogon.exe ?

winlogon。exe.jpg (189.84 KB, 下载次数: 178)

winlogon。exe.jpg

作者: mackyliu    时间: 2007-7-29 13:51
杀掉进程就是最好最快的解决方法
作者: netwinxp    时间: 2007-7-29 13:54
他那个又不是CHS版的,你用它当然有问题啦,还是直接杀了的办法好,还不占内存。
作者: armymangl    时间: 2007-7-29 15:03
楼主的桌面上好多东西啊,羡慕
作者: netwinxp    时间: 2007-7-29 21:06
他那个图是XP系统,可惜啥都放在桌面上,小心系统盘一出问题全没了。
作者: wtq    时间: 2007-7-29 22:28
桌面可以直接移到其他盘,直接移动桌面那目录windows就自动把注册表信息更新了。
作者: adoijay    时间: 2007-7-30 08:47
他那个图是XP系统,可惜啥都放在桌面上,小心系统盘一出问题全没了。

  楼下的兄弟放心,我的桌面虽然在C盘,但是咱不是有WinPE么,就算系统崩溃,插上U盘启动到WinPE,转到“C:\Documents and Settings\Administrator\桌面”,一个都跑不了,全可以拷走,是不?;P
  我桌面上的 东东虽然多了点,但是我觉得放在手头可以方便一点,习惯了。

[ 本帖最后由 adoijay 于 2007-7-30 08:50 AM 编辑 ]

Patched Winlogon.jpg (169.86 KB, 下载次数: 100)

附上虚拟机中的截图

附上虚拟机中的截图

作者: netwinxp    时间: 2007-7-30 19:11
这个是解除24小时限制的?我先抄下来,==分析分析
作者: epo    时间: 2007-7-30 21:39
原帖由 wtq 于 2007-7-29 10:28 PM 发表
桌面可以直接移到其他盘,直接移动桌面那目录windows就自动把注册表信息更新了。


啊,原来这么简单啊,多谢!!
作者: fxyq    时间: 2007-7-31 09:55
是新的研究方向,努力中……
作者: mayin_15    时间: 2007-7-31 12:06
冒似删除winlogon.exe的方法在VistaPE下不管用了吧?有试过的大侠嘛
作者: tdkj1247    时间: 2007-7-31 13:07
我对这个24小时的限制没要求
不过,从技术的角度,还是很有研究的必要
作者: 123    时间: 2007-7-31 13:27
HOOK Ntshutdownsystem,看他还重启。
作者: netwinxp    时间: 2007-7-31 13:41
Hook还麻烦了,不如Kill或Modify
作者: 123    时间: 2007-7-31 13:44
原帖由 netwinxp 于 2007-7-31 13:41 发表
Hook还麻烦了,不如Kill或Modify

在XP里不能kill winlogon.exe,Modify 跟Hook一样都要线程插入,可能还更麻烦
作者: 极♀龙影    时间: 2007-7-31 14:02
学习下,杀掉进程是不错的办法
作者: c8661994    时间: 2007-7-31 14:07
杀掉进程会不会造成不稳定?
作者: mayin_15    时间: 2007-7-31 14:15
原帖由 123 于 2007-7-31 01:44 PM 发表

在XP里不能kill winlogon.exe,Modify 跟Hook一样都要线程插入,可能还更麻烦



HOOK内核系统服务表中的Ntshutdownsystem,这样就不需要线程注入了,线程注入不稳定。
作者: wblam    时间: 2007-7-31 16:30
用XPE插件吧。这问题早就解决了。
作者: lxl1638    时间: 2007-7-31 16:43
Kill掉它,一了百了,省事又省内存,XPE插件也是这样,我们要相信XPE插件所用的方法是最合理的方法。
作者: wblam    时间: 2007-7-31 16:52
原帖由 lxl1638 于 2007-7-31 04:43 PM 发表
。。。XPE插件所用的方法是最合理的方法。

而且是合法的,没有破解。
作者: netwinxp    时间: 2007-7-31 18:00
发现一个很有意思的问题,虽然NtShutDownSystem是从Ntdll.dll导出的函数,但Ntdll只是简单地赋给EAX一个F9H的值(NT4为B5H、2000为D9H、2003为101H)然后就直接CALL了,奇怪的是CALL的那个地址居然不是Win32k.sys、Ntoskrnl.exe、HAL*.DLL、Kernel32.dll这些核心文件的地址,后经不断追踪发现居然是INT 2EH,看来如果我们把参数直接传给INT 2EH所在的地址也一样可以关机了(这好像能解决老九的CMDPE不能关机的问题),只是这个INT 2EH的服务到底是谁创建的呢?:o

[ 本帖最后由 netwinxp 于 2007-7-31 06:01 PM 编辑 ]
作者: 网上风来    时间: 2007-7-31 20:40
标题: 知其然,也知其所以然
kill winlogon.exe虽然能解决24小时限制,但仍然很有必要了解 winlogon.exe。
也许只要用十六进制工具打开winlogon.exe,修改几个字节就能解决问题。但要
知道是哪几个字节肯定很难!

支持高手研究此问题。支持LZ。
作者: netwinxp    时间: 2007-7-31 22:03
看到一本书介绍,好像关机是Winlogon和SMSS共同起作用的,当然,如果直接调用NTDLL.DLL也的NtShutDownSystem可以关机,不过不回写I/O缓存、关闭所有驱动器,有可能造成数据丢失。我怀疑smss.exe也有猫腻。
作者: topway    时间: 2007-8-3 18:25
原帖由 lxl1638 于 2007-7-31 04:43 PM 发表
Kill掉它,一了百了,省事又省内存,XPE插件也是这样,我们要相信XPE插件所用的方法是最合理的方法。


進入到 PE後,如何手動操作?
作者: CFSO835    时间: 2007-8-3 20:19
把壁纸放在另一个盘看看~
作者: netstar-yy    时间: 2007-8-3 22:05
高深的东西, 支持一下~~~
作者: mawith    时间: 2007-8-5 01:57
有理,有空再研究一下
作者: 1400700226    时间: 2016-12-7 15:37
在PE加载网络组件之前干掉smss和winlogin进程,会导致连接WLAN网络获取地址很慢的问题。
作者: 2012wustone    时间: 2016-12-26 13:40
好高深,纯白不懂!




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