教你使用 Reflector中的Reflexil插件反编译.NET,修复Help Viewer v2.0 - Error: Cab was not signed

  • 1. 下载.NET Reflecto并安装
  • 2. 下载并安装插件Reflexil
  • 3. 反编译并修改dll文件
  • 4. 保存并测试HelpViewer2.0的文档下载安装功能
  • 5. 补充:
    • 问题:当前页面的脚本发生错误 setUserPreferenceLang 未定义,是否要在此页面上继续运行?

问题:
在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
打开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大小的文档,更新一下就可以正常:

(2)查看器选项,重置:

教你使用 Reflector中的Reflexil插件反编译.NET,修复Help Viewer v2.0 - Error: .cab未经Microsoft签名相关推荐

  1. IDEA—使用插件反编译jar包

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...

  2. 使用IDEA插件反编译jar包文件

    1. 简介 查看日志报错行数时,发现现有代码又和线上的代码不一致,这个时候我们就需要反编译,本文介绍一下如何通过我们神奇的Idea软件进行反编译jar包. 使用到IDEA一个重要的插件:java-de ...

  3. Android中对APK进行反编译

    概述: 其实反编译很简单,只是利用一些工具包和一些基本命令行的命令对apk文件进行反编程,没有什么高深的技术.下面就让我们一起来学习一下反编译的技术. 注:本博客反编译方法,仅供参考学习使用,禁止用于 ...

  4. 安装 java decompiler_Eclipse离线安装Java Decompiler插件(反编译)

    Java Decompiler是Java语言的反编译工具,具体介绍见博客Java Decompiler(Java反编译工具) 1.下载插件 Eclipe的Java Decompiler插件名为JD-E ...

  5. Eclipse中Jar包的反编译(通过jar包查看源码)

    很多时候我们在公司工作时,在Eclipse引用其他人封装好的jar包时是看不到源码的,这样一来就不能很好得理解他人的意图,于是就需要借助反编译的帮助了.好了,下面是反编译的正确使用方法. 一.下载ne ...

  6. Mybatis-Plus中的查(select)和 Wrapper条件构造器-详解 V2.0

    V1.0 已更新为 V-2.0  传送门→ (V-2.0)Mybatis-Plus中的查(select)和QueryWrapper条件构造器​​​​​​​ 前言 本文介绍 mybatis-plus 中 ...

  7. 教大家简单修改class,防止Jar包被反编译

    方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串). 那么无效的代码又怎么能正确运行呢? 答案就是,你要保证你的代码永远不会执行到那一步. 我作一个简单的例子说明: 我们建立一个项目 ...

  8. RK3399 驱动开发 _ 04 - Android系统中通过fdt文件系统反编译查看设备中真实生效的设备树配置信息

    文章目录 前言 一.设备树保存在文件系哪里? 二.文件系统设备树dts编译与反编译 2.1 设备树原始 dtb 格式 2.2 从设备中获取目标文件fdt 2.3 在ubuntu系统中将fdt反编译成d ...

  9. 【沐风老师】教你在3dMax中使用Greeble插件结合变形修改器建模

    3dMax在Greeble中使用变形修改器 Greeble一个有趣的修改器插件,用于快速生成诸如低模城市建筑群.太空船模型.死亡星等的随机细节... 我们在之前的教程中介绿过Greeble的安装和基本 ...

最新文章

  1. c++ map iterator 获取key_前K个高频的元素衍生之Map的Value与Key排序
  2. python图片转字符画
  3. sqlite字段是否存在_学习廖雪峰的JAVA教程---反射(访问字段)
  4. 远程管理服务器的具体操作方法
  5. Wireshark工作笔记-TCP的状态解析,以及建立连接与关闭连接
  6. wcf编程用什么工具_四个强大的自学编程网站工具,用的人都是学习欲望很强!...
  7. CodeForces 877C
  8. JProfiler 简要使用说明
  9. 语音识别属于计算机的什么应用领域,语音识别系统
  10. 云课堂智慧职教网页版登录入口_云课堂智慧职教网页版登录入口
  11. matlab怎么定义plot函数线的类型,matlabplot函数线型
  12. 102分布式电商项目 - JVM调优(理论篇)
  13. 辛星浅析linux中的accton命令和lastcomm命令
  14. 丽台显卡测试软件,丽台Quadro FX4600专业显卡试用评测
  15. Java8时间类Instant及ZoneId,ZoneOffset用法
  16. iPhoneX设计稿适配Android,三分钟弄懂iPhoneX设计尺寸和适配(二)
  17. 德国海曼红外测温资料
  18. 各类文件应该存在哪种数据库中
  19. 【游戏算法】2D游戏中聚光灯效果
  20. 求解三维装箱问题的启发式深度优先搜索算法(python)

热门文章

  1. Navicat for Mysql 快捷键使用
  2. Visual C++斗地主游戏网络版源代码
  3. mac自带中文输入法提示条消失,如何找回?
  4. 福利,程序员如何走向软件架构师?
  5. VMware顺容器之势而为,发布开源项目Lightwave和Photon
  6. 如何同时将多个 Word、PDF、PPT、Excel、Txt 文档批量转为 JPEG、PNG、BMP 等图片格式
  7. 按群计数10以内_10的按群计数
  8. jxl.read.biff.BiffException: Unable to recognize OLE stream原因及解决方法
  9. 删,删,删,就知道删!
  10. Android展示指定文件夹下面的所有的图片