【问题标题】:Can obfuscar be used with Blazor WebAssembly混淆器可以与 Blazor WebAssembly 一起使用吗
【发布时间】:2022-03-27 10:42:22
【问题描述】:
我使用要混淆的代码创建了一个 Blazor WebAssembly。该工具混淆器运行良好,但是当我将原始 dll 替换为混淆后的 dll 时,我的网站无法加载。开发工具显示以下错误:
- 未能在资源“https://[...].dll”的“完整性”属性中找到有效的摘要,计算出的 SHA-256 完整性为“[...]”。该资源已被阻止。
- 尝试验证完整性时出现未知错误。
- 错误:无法启动平台。原因:TypeError:在 St (blazor.webassembly.js:1) 获取失败
- 未捕获(承诺中)类型错误:无法获取
在 service-worker.js:22
在异步 onInstall (service-worker.js:22)
当我将所有混淆属性设置为 false 时,甚至会发生这种情况,例如。 G。 <Var name="RenameFields" value="false" />
- 是否可以将混淆器与 Blazor WebAssembly 一起使用,如果可以,如何使用? (这甚至是 Blazor wasm 的问题吗?)
- 如果无法使用混淆器,是否有(免费)混淆工具可供我使用?
非常感谢
菲利普
【问题讨论】:
标签:
obfuscation
.net-6.0
obfuscar
【解决方案1】:
我之前尝试过混淆,但它也对我不起作用。
不确定付费的效果如何。如果你不是在寻找复杂的东西,你可以写一个简单的。
我为非营利组织做了一个 blazor 项目,并为此编写了一个简单的混淆器 - 并非万无一失 - 只是为了让某人在查看 dll 时难以阅读
- 将所有 cs 文件从源解决方案复制到目标混淆器解决方案
- 如果文件名在 csproj 中,则每个文件名与 csproj 中的相应文件名一起重命名
- 对于每个文件,重命名标记的单词(命名空间、方法、变量)(例如以某些自定义字符或单词结尾)
- 对于每个文件,删除 cmets - 检查 //、/* 是否不在字符串中
- 对于在每个文件中重命名的每个单词,将其添加到单词字典并将列表存储在每个文件的某个位置。
- 为全局/公共变量/方法存储另一个单词字典,以便对所有文件重复使用,对这些单词使用相同的重命名
确保在生成的混淆中单元测试仍然有效。
使用 ILSPY 之类的工具检查 dll 并查看它们的外观,如果您对它感到满意的话。
- 通过查看单词字典来编写一个简单的解混淆器,以解混淆任何错误输出消息。
大部分工作不是在混淆代码中,而是在源代码中标记要混淆的方法/变量(以某些客户字符或单词结尾),特别是如果有很多。
我通过大写或强调公共变量/方法来分隔局部变量和公共变量/方法。
属性的命名方式不同,因为它们应该以 Attribute 结尾。
至于加密文本/字符串,它看起来不如我将它放在解密函数中(或在混淆时用函数封装某些字符串)。解密功能仍在 blazor Web 客户端中。我只是通过在 blazor 应用程序中初始化数据从服务器传递用于解密的密钥。
【讨论】:
-
感谢您的回答。与此同时,我创建了自己的混淆器。请找到它作为此stack overflow question 的答案。输入要混淆的文件的所有文件路径后,发布前的混淆只需 10 秒:打开 Excel 工具,运行宏,关闭 Excel 工具。然后,使用 Git 或您使用的任何工具撤消所有更改。