【问题标题】: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" />

  1. 是否可以将混淆器与 Blazor WebAssembly 一起使用,如果可以,如何使用? (这甚至是 Blazor wasm 的问题吗?)
  2. 如果无法使用混淆器,是否有(免费)混淆工具可供我使用?

非常感谢

菲利普

【问题讨论】:

    标签: obfuscation .net-6.0 obfuscar


    【解决方案1】:

    我之前尝试过混淆,但它也对我不起作用。

    不确定付费的效果如何。如果你不是在寻找复杂的东西,你可以写一个简单的。

    我为非营利组织做了一个 blazor 项目,并为此编写了一个简单的混淆器 - 并非万无一失 - 只是为了让某人在查看 dll 时难以阅读

    1. 将所有 cs 文件从源解决方案复制到目标混淆器解决方案
    2. 如果文件名在 csproj 中,则每个文件名与 csproj 中的相应文件名一起重命名
    3. 对于每个文件,重命名标记的单词(命名空间、方法、变量)(例如以某些自定义字符或单词结尾)
    4. 对于每个文件,删除 cmets - 检查 //、/* 是否不在字符串中
    5. 对于在每个文件中重命名的每个单词,将其添加到单词字典并将列表存储在每个文件的某个位置。
    6. 为全局/公共变量/方法存储另一个单词字典,以便对所有文件重复使用,对这些单词使用相同的重命名

    确保在生成的混淆中单元测试仍然有效。 使用 ILSPY 之类的工具检查 dll 并查看它们的外观,如果您对它感到满意的话。

    1. 通过查看单词字典来编写一个简单的解混淆器,以解混淆任何错误输出消息。

    大部分工作不是在混淆代码中,而是在源代码中标记要混淆的方法/变量(以某些客户字符或单词结尾),特别是如果有很多。
    我通过大写或强调公共变量/方法来分隔局部变量和公共变量/方法。 属性的命名方式不同,因为它们应该以 Attribute 结尾。

    至于加密文本/字符串,它看起来不如我将它放在解密函数中(或在混淆时用函数封装某些字符串)。解密功能仍在 blazor Web 客户端中。我只是通过在 blazor 应用程序中初始化数据从服务器传递用于解密的密钥。

    【讨论】:

    • 感谢您的回答。与此同时,我创建了自己的混淆器。请找到它作为此stack overflow question 的答案。输入要混淆的文件的所有文件路径后,发布前的混淆只需 10 秒:打开 Excel 工具,运行宏,关闭 Excel 工具。然后,使用 Git 或您使用的任何工具撤消所有更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多