ildasm,然后是具有相同元数据的ilasm

时间:2012-01-06 18:49:49

标签: .net il ilasm ildasm

我们需要修补程序集,目前无法从源代码重建。我可以使用ildasm mydll.dll / all /out=mydll.il转储IL,然后我可以用ilasm / dll mydll.il重建它,除了文件版本,公钥等等都缺少新的二进制文件。我怎么能告诉ilasm添加这些?我没试过/ mdv开关。

1 个答案:

答案 0 :(得分:7)

钥匙不会往返 - 否则你就可以破解任何人的装配并将其作为原件传递出去。

为了在您的情况下签署装配,您需要钥匙。一旦你反编译你的程序集,修补它 - 如果你继续在其他Assmbly属性所在的区域添加以下行,这是最简单的:

.custom instance void [mscorlib]System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 

该属性告诉ilasm为密钥留出空间。一旦您添加了该属性并使用ilasm重新组装了代码,您就需要使用sn实用程序来延迟签名。语法应该是这样的:

sn /R myreassembled.dll originalassemblykey.snk

那应该辞去议会。

您指的是哪个文件版本?它应该是IL中的程序集属性,但如果不是,则可能需要al.exe实用程序来执行此操作。