【问题标题】:ildasm, then ilasm with same meta dataildasm,然后是具有相同元数据的 ilasm
【发布时间】:2012-01-06 18:49:48
【问题描述】:

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

【问题讨论】:

  • 呵呵,你有没有想过你试图颠覆强名存在的主要原因之一?我不知道你为什么认为这就像命令行开关一样简单 :) 啊,战争迷雾!

标签: .net il ilasm ildasm


【解决方案1】:

密钥不会往返 - 否则您将能够破解任何人的程序集并将其作为原始程序传递。

为了在您的情况下签署程序集,您需要密钥。一旦你反编译了你的程序集,修补它 - 如果你继续并在其他 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 实用程序来执行此操作。

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 2013-11-26
    • 2018-12-15
    • 2019-02-01
    • 2015-10-19
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多