我们需要修补一个程序集,目前还不能从源代码重新构建。我可以使用ildasm mydll.dll /all /out=mydll.il转储IL,然后使用ilasm /dll mydll.il重新构建它,这一切都很好,除了文件版本、公钥等内容在新的二进制文件中都缺失了。我如何告诉ilasm添加这些内容?我尝试过/mdv开关,但没有成功。
发布于 2012-01-07 06:14:51
密钥不会往返-否则你将能够破解任何人的程序集,并将其伪装成原件。
为了在您的情况下对程序集进行签名,您需要密钥。一旦你反编译了你的程序集,给它打上补丁-如果你继续在其他可组合属性所在的区域中添加以下代码行,这是最简单的:
.custom instance void [mscorlib]System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 该属性告诉ilasm为key留出空间。添加该属性并使用ilasm重新组装代码后,需要使用sn实用程序延迟对其进行签名。语法应该是这样的:
sn /R myreassembled.dll originalassemblykey.snk这应该辞去大会的职务。
您指的是哪个文件版本?它应该是IL中的程序集属性,但如果不是,则可能需要al.exe实用程序来执行此操作。
https://stackoverflow.com/questions/8762867
复制相似问题