问题描述

        HelpViewer2.2在安装文档时,提示:Error: .cab未经Microsoft签名;

问题原因

        CAB文件上的证书由Microsoft证书签名,但是证书链到Microsoft Root CA时,对帮助文档强制进行驱动级安全认证变得无效;

解决办法

        破解Microsoft.VisualStudio.Help.dll中的代码,并重新编译保存,替换原来的DLL;

工具准备

        a、.NET Reflector 8.5;

        b、Reflexil插件:【https://github.com/sailro/Reflexil/releases】;下载:【Reflexil.for.Reflector.2.7.AIO.bin.zip】

插件安装

        1、打开.NET Reflecto;选择【Tools】->【Add-Ins】;

        2、在【Add-Ins】界面点击右下角的【+】,选择【Reflexil.for.Reflector.2.7.AIO.dll】插件DLL;

        3、点击【Close】;

        4、验证安装成功否:.NET Reflecto软件的【Tools】下有【Reflexil】菜单;

破解步骤

        1、在.NET Reflecto软件中点击【Tools】->【Reflexil】插件;

        2、点击软件的【File】->【Open Assembly】,选择HelpViewer2.2目录下的【Microsoft.VisualStudio.Help.dll】;

        3、在软件的【左侧栏】中,选择【Microsoft.VisualStudio.Help.dll】,并在【左侧栏】上面的【搜索栏】中输入【VerifyMicrosoftChain】;

        4、在【右侧】的下面窗口【Sebastien Lebreton's Reflexil v2.7(这是Reflexil插件的窗口)】中的底部,找到如下代码:

ldc.i4.1
ret
ldc.i4.0
ret

               上面4行中的前2行代码代表:返回失败;上面4行中的后2行代码代表:返回成功;

                所以要保证该函数的成功,则需要将【ldc.i4.1】修改为【ldc.i4.0】或者将前2行代码修改为2个【nop】

        5、这里修改为2个nop;

        6、第1个修改上面4行代码中的第1行代码;右键【ldc.i4.1】,在弹出的菜单中,选择【Replace with NOP】

        7、第2个修改上面4行代码中的第2行代码;右键【ret】,在弹出的菜单中,选择【Replace with NOP】

        8、在【左侧栏】右键【Microsoft.VisualStudio.Help.dll】,选择其下的【Reflexil v2.7】,再选择【Save as】,保存该DLL;

        9、然后用该DLL放入【HelpViewer2.2】目录下,备份原始的【Microsoft.VisualStudio.Help.dll】文件,然后用修改后的DLL改名为【Microsoft.VisualStudio.Help.dll】;

        10、打开HelpViewer2.2则直接不会再出现【Error: .cab未经Microsoft签名】

posted on 2023-02-20 02:48  我,猪八戒  阅读(231)  评论(1编辑  收藏  举报