是否可以更改exe的AssemblyCopyright属性?

时间:2014-12-11 18:11:01

标签: c# .net attributes exe .net-assembly

我想知道是否有可能在没有源代码的情况下更改exe的属性。

[assembly: AssemblyCopyright("Copyright Example")]

为了在此exe调用以下代码时,修改后的属性会出现。

Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0];

我尝试过ResourceHacker,遗憾的是它只更改了右键点击的版权>属性>细节。如果我再次反编译.exe,我将获得旧的版权。

我还尝试编译代码后反编译它,但我没有成功。

公司更名,但他们没有保留此旧版产品的源代码。现在我必须改变它。

谢谢!

2 个答案:

答案 0 :(得分:1)

我可以通过这样做来解决我的问题:

  1. 使用ildasm,反编译程序集。

      

    ildasm MyFile.exe /output:MyFile.il

  2. 打开提取的文件" MyFile.il"用文本编辑器。

  3. 你会看到类似的东西:

      

    .custom instance void   [mscorlib] System.Reflection.AssemblyCopyrightAttribute ::。ctor(string)=

         

    (01 00 2C 43 6F 70 79 72 69 67 68 74 20 C2 A9 20 // ..,版权所有..

         

    45 78 61 6d 70 6c 65 00 00)//示例

  4. 十六进制代码是您的版权字符串,您可以对其进行更改,但请注意以下事项:

    - 前两对01和00表示字符串的开头。

    - 最后两对00和00表示字符串的结尾。

    - 你不能改变十六进制代码的长度(我不知道为什么......当你要读它时会抛出异常。我在十六进制的末尾添加了空格(20)与长度匹配的代码。)

  5. 现在您只需要使用ilasm再次编译它。

      

    ilasm /resource=MyFile.res / exe /output=MyFile.exe MyFile.il

  6. 那就是它。

答案 1 :(得分:0)

要考虑的第一个解决方案:您可以查看他们在此提出的解决方案:AssemblyCopyrightAttribute Class on MSDN

替代解决方案是您可以使用名为.NET Reflector(Redgate .NET Reflector)的工具来对整个代码进行竞争性反编译,然后在新的Visual Studio项目中再次构建它,您可以在其中分配版权属性你自己。

在这两个解决方案中,请确保您在法律视角方面没有问题,这样您就不会违法。