|
本帖最后由 Bluebells 于 2025-1-28 00:03 编辑
直接简单粗暴地让PE以Administrator用户登录
其实以 Administrator 用户登录的前提是"本地计算机加入到工作组", 如果本地计算机未加入到"工作组"时使用 tsdiscon.exe, 就会出现 "指定的域不存在,或无法联系", 并卡在此处
如何让本地计算机加入到工作组? 可以调用 Netapi32.dll 的 NetJoinDomain 函数
- CALL $Netapi32.dll,NetJoinDomain,,WORKGROUP,,,,1
复制代码 注意在调用 NetJoinDomain 函数时, LanmanWorkstation 服务项的状态必须为 SERVICE_RUNNING
如果我们使用注册表查看 LanmanWorkstation 服务项的 Start 的数据, 会发现其默认值为 2, 即 SERVICE_AUTO_START (自动启动)
由于服务项的启动优先级问题, LanmanWorkstation 服务项通常会比较慢启动, 所以在早期直接调用 NetJoinDomain 函数时, 经常会失败
PS: 有些 PE 会在注册表项 HKEY_LOCAL_MACHINE\SYSTEM\Setup\AllowStart 中添加 LanmanWorkstation 子项以让 LanmanWorkstation 服务项启动得更早, 然而这种方法并不靠谱
因此我们可以仿效 红毛 的代码, 确保 LanmanWorkstation 服务项的状态为 SERVICE_RUNNING (正在运行)
- SERV -wait LanmanWorkstation
- LOOP #1=1,
- {*
- SERV ?&LWState LanmanWorkstation
- MSTR * &LWState=<3>&LWState
- IFEX #%&LWState%=4,
- {*
- EXIT LOOP
- }!
- {*
- WAIT 200
- }
- }
复制代码 其实也可以调用 net.exe 命令行工具
- SERV ?&LWState LanmanWorkstation
- MSTR * &LWState=<3>&LWState
- IFEX #%&LWState%=4,! EXEC -wait -hide %SystemRoot%\System32\net.exe start LanmanWorkstation
复制代码 PS: 有些人可能想到还可以用 sc.exe 命令行工具, 但 sc start 命令执行完毕后(无错误输出)并不能确保目标服务项的状态为 SERVICE_RUNNING
其实有更简便的方式让本地计算机加入到工作组, 就是调用 PE 中自带的 wpeutil.exe 命令行工具
- EXEC -wait -hide %SystemRoot%\System32\wpeutil.exe InitializeNetwork
复制代码 使用 wpeutil.exe 初始化 PE 网络环境时, 它会确保 LanmanWorkstation 服务项的状态为 SERVICE_RUNNING, 并让本地计算机加入到工作组
由于不确定 wpeutil 在初始化目标 PE 的网络环境时是否会遇到阻塞, 所以这里仅仅提一下, 并不推荐
结论:
先让计算机成功加入到工作组, 然后成功调用 CreateProfile 函数创建 Administrator 用户配置文件, 再运行 tsdiscon.exe 即可让所有支持 Administrator 用户登录的 Nt6pe 以 Administrator 用户登录
- SERV -wait LanmanWorkstation
- LOOP #1=1,
- {*
- SERV ?&LWState LanmanWorkstation
- MSTR * &LWState=<3>&LWState
- IFEX #%&LWState%=4,
- {*
- EXIT LOOP
- }!
- {*
- WAIT 200
- }
- }
- CALL $Netapi32.dll,NetJoinDomain,,WORKGROUP,,,,1
- SERV -wait ProfSvc
- LOOP #1=1,
- {*
- SERV ?&ProfSvcState ProfSvc
- MSTR * &ProfSvcState=<3>&ProfSvcState
- IFEX #%&ProfSvcState%=4,
- {*
- EXIT LOOP
- }!
- {*
- WAIT 200
- }
- }
- REGI --init --ak HKLM\SECURITY\SAM\Domains\Builtin\Aliases\Members\\,&&Members
- ENVI &AdminSID=
- FIND *<>&Members,
- {*
- FORX *NL &Members,&Member,
- {*
- FIND *<>&Member,
- {*
- FIND $%&Member%<>S-1-5,
- {*
- ENVI~ &AdminSID=&Member
- ENVI< &AdminSID=-500
- EXIT FORX
- }
- }
- }
- }
- ENVI &MAX_PATH=260
- SET$ &pszProfilePath=*%&MAX_PATH% 0
- CALC &cchProfilePath=%&MAX_PATH%
- CALL $--qd --ret:&&CreateProfileRet Userenv.dll,CreateProfile,$%&AdminSID%,$Administrator,*&pszProfilePath,#%&cchProfilePath%
- REGI $HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\\DefaultUserName=Administrator
- REGI $HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\\Userinit=userinit.exe,Pecmd.exe MAIN -user %SystemRoot%\System32\pecmd.ini,
- REGI #HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\\EnableSIHostIntegration=0
- REGI #HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList\\Guest=0
- EXEC -wait %SystemRoot%\System32\tsdiscon.exe
复制代码
分享一个示例 WinPE, 其基于论坛 Lightning 老大的 WIN10PE_X64_19043.1237_Network 制作
下载地址: https://www.123684.com/s/RglEjv-vJ6Ph 提取码: ONHj
|
|