gpt4 book ai didi

c# - 更新引用而不反编译源?

转载 作者:行者123 更新时间:2023-12-02 17:18:44 24 4
gpt4 key购买 nike

我正在寻找一种方法来更改 .NET exe 中引用的 DLL。

为什么?我有一个 CrackMe ,并且要破解它, 我不允许使用 Reflector 来修改(这太简单了 - 但我 被允许阅读其来源)。我也 必须这样做。 (这就是这个crackme的挑战)

问题是源代码与控制流混淆了,我不允许使用任何自动工具来解决它,因此手动执行会很漫长且痛苦。

crackme 使用嵌入到自身中的开源库来工作,因此我可以下载该库的源代码,并使用一些“转储”代码对其进行修改(因为 CrackMe 使用其 API,并且还向该 API 提供了序列号,我将修改为转储),将其放回crackme中,运行它并在我的桌面上获取 key 。

应该(但不是强制)使用 ILDASM 完成。

所以,问题是:有没有办法用我自己的DLL“更新”引用的DLL?

最佳答案

您可以使用 ildasm 将程序集反汇编为 IL 代码。您可以使用以下命令:

ildasm.exe <YourAssembly> /output:YourAssemblyILCode.il

现在您可以在 IL 代码中更改程序集引用(版本和公钥 token )。 IL 代码中对外部程序集的引用如下所示:

.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}

然后您可以使用 ilasm.exe 将更正后的 IL 文件汇编为 .NET 程序集

关于c# - 更新引用而不反编译源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com