我对CIL知之甚少,只是程序集中有元数据记录类型信息。
是否有可能创建一些能够读取C#或VB.NET程序集并更改其元数据的反射工具,以便所有类成员都公开?
它是否直截了当(例如,为CIL中的每个方法更改一个或两个字节)?
答案 0 :(得分:3)
是的,这是可能的,但并不总是安全的。野外存在使用Reflection API查找类型,方法,字段等的代码。如果代码明确地查找非公共代码,那么将它们公开会破坏代码。同样,如果代码查找公共代码并期望不包含非公开代码,那么再次公开将会破坏代码。
我所知道的最好的工具是Mono.Cecil,它是一个可以读取,操作和编写.NET程序集的开源库。
答案 1 :(得分:1)
通过示例证明:当您使用调试器时,您可以看到对象的私有成员,包括从其他程序集导入的对象。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果程序集具有强名称,则您将无法将修改后的程序集替换为原始程序集。