-
-
[原创]远程桌面无法访问远程电脑上的USB证书
-
发表于:
2023-2-23 14:20
7277
-
最近有个需求,需要把EV签名放到公司本地服务器上面去,这样大家都可以通过远程来使用EV签名.
在服务器(windows 10 x64)上面装上SafeNet,插上USB证书,正常识别到证书.
但是通过远程桌面连接到服务器的时候,SafeNet无法识别到证书.
网上查了资料,问题出在 C:\Windows\System32\WinSCard.dll 的 SCardEstablishContex 函数中.下层调用了 RedirectionContextIsLocal 函数,看名字应该是判断上下文是否是本地:
动态跟一下,远程桌面时返回0,本地时返回1.
确定了问题就是这个函数,由于这个函数有多个地方调用,所以patch这个函数的内部,patch方法如下:
在 0000000180007CAE 这句代码的地方插入add al,1 原本的代码往后面移动2个字节,修改之后如下:
这样修改之后,在任何情况下 RedirectionContextIsLocal 返回的值都是大于0的.
绕过windows的文件保护机制,替换 C:\Windows\System32\WinSCard.dll
管理员权限运行cmd,输入如下指令后就可以替换了.
C:\Windows\system32>takeown /f C:\Windows\System32\WinSCard.dll
C:\Windows\system32>icacls C:\Windows\System32\WinSCard.dll /grant administrators:F
如果你的工具是wow64的,那么相同的操作处理C:\Windows\SysWOW64\WinSCard.dll即可,由于 RedirectionContextIsLocal 后面没有空白空间,所以不能用前面的patch方法,需要将如下两个地方的指令改为add al,1
另外,还有一种解决方案:在服务器上面安装虚拟机,通过远程桌面操作虚拟机是可以识别USB证书的.
参考资料:
https://blog.csdn.net/qq_16952023/article/details/121376549?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121376549-blog-5817318.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121376549-blog-5817318.pc_relevant_default&utm_relevant_index=2
https://blog.csdn.net/zy_strive_2012/article/details/79470829
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2023-2-23 14:23
被xxyiyi编辑
,原因: