我想知道是否有可能在没有源代码的情况下更改exe的属性。
[assembly: AssemblyCopyright("Copyright Example")]
为了在此exe调用以下代码时,修改后的属性会出现。
Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0];
我尝试过ResourceHacker,遗憾的是它只更改了右键点击的版权>属性>细节。如果我再次反编译.exe,我将获得旧的版权。
我还尝试编译代码后反编译它,但我没有成功。
公司更名,但他们没有保留此旧版产品的源代码。现在我必须改变它。
谢谢!
答案 0 :(得分:1)
我可以通过这样做来解决我的问题:
使用ildasm,反编译程序集。
ildasm MyFile.exe /output:MyFile.il
打开提取的文件" MyFile.il"用文本编辑器。
你会看到类似的东西:
.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)//示例
十六进制代码是您的版权字符串,您可以对其进行更改,但请注意以下事项:
- 前两对01和00表示字符串的开头。
- 最后两对00和00表示字符串的结尾。
- 你不能改变十六进制代码的长度(我不知道为什么......当你要读它时会抛出异常。我在十六进制的末尾添加了空格(20)与长度匹配的代码。)
现在您只需要使用ilasm再次编译它。
ilasm /resource=MyFile.res / exe /output=MyFile.exe MyFile.il
那就是它。
答案 1 :(得分:0)
要考虑的第一个解决方案:您可以查看他们在此提出的解决方案:AssemblyCopyrightAttribute Class on MSDN。
替代解决方案是您可以使用名为.NET Reflector(Redgate .NET Reflector)的工具来对整个代码进行竞争性反编译,然后在新的Visual Studio项目中再次构建它,您可以在其中分配版权属性你自己。
在这两个解决方案中,请确保您在法律视角方面没有问题,这样您就不会违法。