创建: 2021-11-26 15:14
http://scz.617.cn:8/windows/202111261514.txt
Win10打过10.14补丁之后网络打印机访问异常,这事很多吐槽的,一堆反馈说,应该是KB5006670导致的,据说卸载即可恢复打印
wusa /uninstall /kb:5006670
据说恢复这个文件到9月版本亦可
C:\Windows\system32\win32spl.dll
也有说恢复这个文件的
C:\Windows\system32\mscms.dll
据说removing and reinstalling printers on servers,可以解决客户端的故障,而不用卸载客户端补丁。
上面是10月中的混乱场面回顾。
11月的补丁也没有拨乱反正,我这一个多月来都是拿U盘去打印服务器上本地打印,完全没法网络打印。
昨天云海给出一个只对中阶或以上水平技术人员有效的热Patch方案,测试有效,帮他记录一下。
Guest环境如下
Win10企业版2016 LTSB 1607(OS Build 14393.4704)spoolsv.exe
10.0.14393.4704 (rs1_release.211004-1917)
win32spl.dll
10.0.14393.4704 (rs1_release.211004-1917)
找出Win10客户端打印服务进程PID
$ tasklist /svc /fi "services eq Spooler"Image Name PID Services
========================= ======== ============================================
spoolsv.exe 1820 Spooler
spoolsv(1820)会加载win32spl.dll。网络打印时,客户端这边会过
win32spl!STRING_HANDLE_bind
10.14补丁在该函数中新增调用如下函数
win32spl!_imp_RpcBindingSetAuthInfoExW
RPCRT4!RpcBindingSetAuthInfoExW
云海指出,热Patch跳过对上述函数的调用,即可恢复客户端的网络打印能力,无需重启客户端OS或打印服务,无需重启服务端OS或打印服务,无需卸载KB5006670,立即生效。下面是热Patch方案中的一种
cdb调试spoolsv(1820)
> u win32spl!STRING_HANDLE_bind+0x169 win32spl!STRING_HANDLE_bind+0x16f
00007fff`73bbbb19 ff1569720800 call qword ptr [win32spl!_imp_RpcBindingSetAuthInfoExW (00007fff`73c42d88)]
00007fff`73bbbb1f 8bd8 mov ebx,eax$ rasm2 -a x86 -b 64 -s intel -o 0x7fff73bbbb19 "xor eax,eax;jmp 0x7fff73bbbb1f"
31c0eb02
$ rasm2 -a x86 -b 64 -s intel -o 0x7fff73bbbb19 -D 31c0eb02
0x7fff73bbbb19 2 31c0 xor eax, eax
0x7fff73bbbb1b 2 eb02 jmp 0x7fff73bbbb1f
Patch
eb win32spl!STRING_HANDLE_bind+0x169 31 c0 eb 02
> u win32spl!STRING_HANDLE_bind+0x169 win32spl!STRING_HANDLE_bind+0x16f
00007fff`
73bbbb19 31c0 xor eax,eax
00007fff`73bbbb1b eb02 jmp win32spl!STRING_HANDLE_bind+0x16f (00007fff`73bbbb1f)
00007fff`73bbbb1d 0800 or byte ptr [rax],al
00007fff`73bbbb1f 8bd8 mov ebx,eax
也可以用断点热Patch
ba e1 win32spl!STRING_HANDLE_bind+0x169 "r eax=0;r rip=win32spl!STRING_HANDLE_bind+0x16f;gc"
热Patch后网络打印恢复正常,cdb中看到依次加载
C:\Windows\System32\ntprint.dll
C:\Windows\System32\mscms.dll
C:\Windows\system32\spool\DRIVERS\x64\3\HP1100SD.DLL
Wireshark抓包看相关报文加强理解热Patch的效果,但那些MS/DCE RPC协议解码更专业,不在此多言。
云海这个热Patch方案出现得太晚,我都U盘打印好几轮了。他说12月的微软补丁将拨乱反正,恢复Win10客户端网络打印能力,拭目以待。