【问题标题】:Trying to obfuscate my project using Crypto broke it试图使用 Crypto 混淆我的项目破坏了它
【发布时间】:2017-11-25 17:11:35
【问题描述】:

我很想尝试不同的混淆选项,为了做到这一点,我首先尝试了 Crypto。

这是我遵循的步骤:

  1. 打开 Cypto 向导并选择一些选项。
  2. 选择我的解决方案文件。

完成了向导,我看到的是一些 Dll 被很好地混淆了,但是我的项目现在没有构建。我注意到的两件事是,我的文件夹中有一个奇怪的 .OBPROJ 文件,它负责删除我所有的旧程序集,然后再对其进行混淆。

我的 18 个项目中有 4 个未能构建,我看到以下错误:

System.IO.FileNotFoundException: File 'C:\Dropbox\CPTFramework_old\CommonLib\obj\Debug\CommonLib.dll' not found.

所有 4 个失败的项目都非常相似。现在,我不确定它对 OBj/Debug 文件夹中的 dll 文件做了什么,但文件绝对不存在。

我注意到的另一件事是,所有项目在单独构建时都可以正常构建。所以我的解决方案文件肯定有问题。但我无法找出到底发生了什么变化。

【问题讨论】:

  • commonlib.pdb 存在但 commonlib.dll 不存在...
  • 我注意到的另一件事是,当我手动将所有这些缺失的程序集从 Bin 复制到 Obj 文件夹然后再次构建时,我看到了同样的错误。另外,当我浏览到文件夹时,文件现在已经消失了。
  • 你解决过这个问题吗?我有同样的问题。
  • @LewisHarvey:对不起。不幸的是,由于它带来的问题,我没有进一步研究这个问题。我转向其他混淆解决方案,也没有帮助形成 StackOverflow 在这个问题上......

标签: c# .net obfuscation


【解决方案1】:

有类似的问题。经过一番挣扎,终于找到了解决办法。

在多核处理器中,VS 将并行运行构建,这使得 Cyrpto 混淆器在最后一个项目构建完成之前运行。

在 VS 2013 中将最大并行项目构建数设为 1 将解决此问题。

工具 - 选项.. - 构建和运行

【讨论】:

    【解决方案2】:

    我最近遇到了同样的问题,所以虽然已经过时,但这里是其他人的答案。

    这与您的构建顺序有关。我发现 VS 中的构建顺序并不总是与实际的构建顺序相对应。我建议在构建失败后查看输出窗口,查看首先构建和最后构建的项目(您需要这些来配置 Crypto)。显然,不要忘记忽略任何正在设置项目或未在发布模式下构建的项目。

    只需使用正确的第一个和最后一个项目重新配置加密,重新加载您的解决方案,它就会构建。

    【讨论】:

      【解决方案3】:

      基本上,错误发生在

      1:您曾经将一个项目指定为第一个或最后一个,但在您的解决方案中,这不是或不再是这种情况。 2:你也有像 Newtonsoft.Json 这样的依赖

      案例 1: 在添加对“作为以前的启动指定”项目的依赖项时,我碰巧遇到了同样的问题。我再次运行向导,然后将 2 个项目标记为第一个......

      还会发生的情况是,您在多个项目中使用相同的共享 dll,其中一个是第一个,另一个是第一个,然后您开始必须根据编译的内容手动更新项目。

      理想情况下,不需要设置第一个或最后一个,因为构建顺序已经在解决方案中,但我不在 LogicNP 工作...

      要解决此问题,请查看 VS 输出中的文件抱怨,因为这可能具有错误的“第一”标志。

      然后右键单击该项目并从弹出窗口中选择“卸载项目”。现在再次右键单击卸载的项目并选择 Edit ;或在文本编辑器中打开 .csproj 文件。

      滚动到文件底部并查找如下所示的文本... 错误的 错误的 发布|AnyCPU ..\CATS.Settings_Release_AnyCPU.obproj

      查看 CO_FirstProject 和 CO_LastProject 标签并确保它们具有正确的 True 和 False 选项,因为“向导”不会更新当前配置。

      还有一点,它还会创建一个全新的加密文件,所有旧设置都消失了......

      案例 2: 您依赖于 Newtonsoft.Json.dll 之类的东西,您要做的是 1. 将该 dll 复制到与构建无关的安全位置。 2.将输出设置选项卡中的dll链接到正确的主程序集 一个。从“以下主程序集中的嵌入式依赖程序集”列表中选择它 湾。现在单击 Additional dependencies/files 并添加文件 如果发现更多我无法编译的情况,我会更新帖子,或者联系我,因为发现这样的错误会非常令人沮丧......

      【讨论】:

        【解决方案4】:

        我也遇到了同样的问题,这是我基于 Crypto 帮助文档的答案,它通过抑制其 MSBuild 集成完全消除了您对 Crypto 的解决方案的依赖。

        • 编辑运行加密向导时选择的第一个和最后一个项目的 csproj/vbproj 文件:删除 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '....'"><Import Project="..." /> (包括)接近项目文件的末尾。

        所以就我而言,我在第一个项目中删除了:

        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
            <CO_FirstProject>True</CO_FirstProject>
            <CO_LastProject>False</CO_LastProject>
            <CO_Config>Release|AnyCPU</CO_Config>
            <CO_ProjectFilePath>..\.."ALL MY DLL/EXE HERE"
          </PropertyGroup>
          <Import Project="C:\Program Files (x86)\LogicNP Software\Crypto Obfuscator For .Net 2015\CryptoObfuscator.targets" />
          <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '....' "> 
        

        最后:

        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
            <CO_FirstProject>False</CO_FirstProject>
            <CO_LastProject>True</CO_LastProject>
            <CO_Config>Release|AnyCPU</CO_Config>
            <CO_ProjectFilePath>..\MySln_Release_AnyCPU.obproj</CO_ProjectFilePath>
          </PropertyGroup>
          <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
            <CO_ObjFiles Include="ALL MY DLL/EXE HERE">
              <InProject>false</InProject>
            </CO_ObjFiles>
            <CO_BinFiles Include="..ALL MY DLL/EXE HERE">
              <InProject>false</InProject>
            </CO_BinFiles>
          </ItemGroup>
          <Import Project="C:\Program Files (x86)\LogicNP Software\Crypto Obfuscator For .Net 2015\CryptoObfuscator.targets" />
        

        构建并瞧!

        【讨论】:

          猜你喜欢
          • 2018-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-13
          • 2012-08-23
          • 2019-10-10
          • 2017-10-20
          • 2021-03-05
          相关资源
          最近更新 更多