问题:
在Microsoft帮助查看器的“添加和删除内容”选项卡中选择“书籍”后,您将不得不等待最多多GB才能下载,具体取决于您的选择。下载完成后,您可能会看到以下错误:
此外,每次重试下载过程(例如,在重新安装根证书或其他措施后)时,程序都不够智能,无法保留下载。它会删除它们。浪费了数千兆字节的下载时间,只是为了看到微软无法验证来自自己服务器的文件。顺便说一句,下载的CAB文件上的数字签名很好。它们都由Microsoft证书签名,该证书的链条一直有效,直到颁发Microsoft Root CA.Microsoft正在对帮助文件强制执行驱动程序级安全性,我个人认为这是矫枉过正。
如果你搜索一个解决方案,你会发现很多人在所有最近的Visual Studio版本(2015,2017和2019)中都遇到过这个错误。根据Microsoft的博客文章,此问题应该在2019年得到解决,但是许多人已经在这些相同的论坛上发帖说问题仍然存在。微软工程师一再回应说,他们无法在干净的机器上或Windows 10上重现该错误,并选择关闭该问题。
反编译的方式有很多种,其实最靠谱的还是IL反编译。
不过我下面要说的不是IL这种底层的代码反编译,而是Reflector中的Reflexil插件进行反编译。
也许有人会说Reflector不就是反编译了么,为什么还要用Reflexil这个插件? Reflector 仅仅是反编译出源码给你看,并不能在修改后编译回去。所以我们需要使用Reflexil这个插件进行反编译回去。
1. 下载.NET Reflecto并安装
随便百度一下Reflector,例如这里的华军软件园:
.NET Reflector 8.5.0.179 绿色中文版
https://www.onlinedown.net/soft/636085.htm
2. 下载并安装插件Reflexil
Reflexil_v1.6
下载链接: https://pan.baidu.com/s/1tO3O3kcbLyou5_6eI7bkGQ 提取码: kfiw 复制这段内容后打开百度网盘手机App,操作更方便哦
打开Reflector,在工具栏依次点击 Tools -> Add-Ins… ,如下图所示:
点击加号+,如下图所示选择Reflexil插件的dll文件,该插件就安装上了:
然后点击Close ,此时程序的 Tools 栏目下已经有了 Reflexil 插件选项。
3. 反编译并修改dll文件
在Reflector工具栏中依次点击 Tools -> Reflexil 打开 Reflexil 的窗口,如下图所示:
然后点击File,Open Assembly,打开你要反编译的程序集:
如下图所示,打开Help.dll文件:
在左侧栏中选中该dll文件,在左侧上面搜索栏中输入VerifyMicrosoftChain:
在上图该函数的底部,可以看到返回值为1或0;滚动到 IL 操作码窗口的底部,我们看到最后 4 条指令是:
ldc.i4.1
ret
ldc.i4.0
ret
这组指令代表两个退出分支。要始终返回成功,您可以将第一条指令更改为“ldc.i4.0”(加载零),或者对前两条指令进行 NOP 输出,以便两条路径都下降到返回零分支,从而产生相同的效果。这将绕过烦人的错误并允许安装继续进行。
例如:可以直接在“ldc.i4.1”的那一栏进行点击右键选择 “Edit” 进行直接的编辑:
选择nop指令并点击点击Update按钮进行替换:
任何导致验证链无法找到Microsoft的Root CA的东西都被绕过了,并允许安装继续进行。
4. 保存并测试HelpViewer2.0的文档下载安装功能
最后一步操作,依次在Reflector项目中点击右键 -> 选择 Reflexil -> 选择 Save as…
保存即可,这样就完成了修改代码,编译成功;
需要注意一下的是,一些DLL拥有强名称,重新应用的时候可能会出现错误,这时需要在Save As的时候去除一下强名称就可以了。
运行看看:
更新成功!!
5. 补充:
问题:当前页面的脚本发生错误 setUserPreferenceLang 未定义,是否要在此页面上继续运行?
在HelpViewer打开一个目录内容时,或者搜索某一个函数双机打开时,会弹窗提示:当前页面的脚本发生错误 setUserPreferenceLang 未定义,是否要在此页面上继续运行?
解决:
(1)管理内容,随便找一个1M大小的文档,更新一下就可以正常:
文章来源:https://www.toymoban.com/news/detail-440676.html
(2)查看器选项,重置:
文章来源地址https://www.toymoban.com/news/detail-440676.html
到了这里,关于教你使用 Reflector中的Reflexil插件反编译.NET,修复Help Viewer v2.0 - Error: .cab未经Microsoft签名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!