使用Mono.Cecil对C ++ / CLI可执行文件的往返支持

问题描述 投票:1回答:1

Mono.Cecil截至日期不支持混合模式程序集,即使它可以读取此类程序集的.NET部分,也不会将此类程序集写回磁盘。支持混合模式程序集的read-> write往返需要什么? (不对x86 / x64程序集进行任何更改)

请注意我只需要使用.NET元数据和CIL,而不是实际的x86 / x64程序集本身。我只需要在混合模式程序集中修改一些.NET类,因此,我需要使用Cecil将其加载到对象中,进行更改,然后将其保存回来,使x86 / x64汇编代码保持不变。

我假设x86 / x64程序集将存储在一个块中,这可以在解析期间简单地读入一个bytearray,并在保存程序集时输出回生成的EXE。这么简单吗?

来自FAQ

Cecil可以读取混合模式程序集,但不支持编写混合模式程序集

c# .net c++-cli mono.cecil mixed-mode
1个回答
0
投票

Mono.Cecil不支持编写混合模式程序集。

还有另一个图书馆dnlib。 API类似,但不相同,因此它不是替代品。

从项目的README.md

dnlib的创建是因为de4dot需要一个强大的.NET程序集库来处理所有类型的混淆程序集。 de4dot曾经使用Mono.Cecil,但由于Mono.Cecil无法处理混淆的程序集,不能完全支持混合模式程序集,因此不会像CLR那样读取.NET程序集以及de4dot所需的许多其他缺少的功能,dnlib是必要的。 API类似,因为它使得dendot移植到dnlib变得更加容易。

GitHub存储库在这里:https://github.com/0xd4d/dnlib

© www.soinside.com 2019 - 2024. All rights reserved.