如何使用Mono.Cecil将应用程序从控制台应用程序类型修改为Windows应用程序类型,反之亦然? 最佳答案 要将控制台.exe转换为Windows.exe,您可以使用:varfile="foo.exe";varmodule=ModuleDefinition.ReadModule(file);//module.KindwaspreviouslyModuleKind.Consolemodule.Kind=ModuleKind.Windows;module.Write(file);另一种方法就像选择合适的ModuleKind值一样简
我正在使用Mono.Cecil在Assembly中查找派生自给定的类型。通常可以使用IsAssignableFrom()方法来完成,但我无法确定它在Cecil中是等效的。有没有这样的方法或其他方法来检查它?谢谢迈克 最佳答案 继承检查和“赋值兼容性”检查实际上是不同的东西。您要检查继承还是“分配兼容性”?赋值兼容性包括很多东西,包括有符号/无符号转换、枚举到基类型的转换、char至short转换、通用方差转换、从接口(interface)到object的转换,从数组到IList和IList以及它们的基本接口(interface)、数
好吧,这个问题可能看起来很奇怪,但它很简单——我的意思是如果我在反编译代码中有一个“goto”(brtrue等),比如示例brIL_0003call*****IL_0003:ret然后我在该****调用之后添加了一个命令,将顶部的br按原样或该代码进行ret。是Cecil自己做还是我必须照顾所有这些分支?:/修复它们并不是很难,但如果Cecil不这样做,我就不会开始这个项目,我没有时间(或知识)学习高级IL魔法:P(是的,我知道它不会是IL_0003,它只是举例) 最佳答案 是的,Cecil会为您更新分支。您唯一需要注意的情况是分支
有没有办法在代码中获取str1?[MyAttribute("str1")]classX{}Mono.Cecil.CustomAttribute.Fields的实例是空的。 最佳答案 在.NET中使用属性时,您要么使用构造函数参数,要么设置一些(命名的)字段。这在元数据中以不同方式编码,并在Cecil中单独结束。theinstanceofMono.Cecil.CustomAttribute.Fieldsisempty当构造函数参数用于自定义属性时,您正在使用的是查找字段。所以你要找的是:type.CustomAttributes[0]
我正在使用MonoCecil在另一个方法中注入(inject)代码。我想在我的代码周围添加一个Try-Catchblock。所以我写了一个带有trycatchblock的HelloWorld.exe并反编译了它。在Reflector中的Try-Catch看起来像这样:.tryL_0001toL_0036catch[mscorlib]System.ExceptionhandlerL_0036toL_003b如何通过monocecil注入(inject)这样的trycatch? 最佳答案 使用Mono.Cecil添加异常处理程序并不困难
我的项目中的静态构造函数一直存在一些问题。我需要向类型“”添加一个静态构造函数,以便调用我的资源解密方法。在下面的gif中,您会看到我遇到的问题。我还将包含代码片段。创建cctor的代码:MethodDefinitionmethod=newMethodDefinition(".cctor",Mono.Cecil.MethodAttributes.Private|Mono.Cecil.MethodAttributes.Static|Mono.Cecil.MethodAttributes.HideBySig|Mono.Cecil.MethodAttributes.SpecialName|M
我不知道如何使用Mono.Cecil将自定义属性添加到方法中我想添加的属性是这样的:.custominstancevoid[mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor()=(01000000)有谁知道如何添加自定义属性 最佳答案 其实很简单。ModuleDefinitionmodule=...;MethodDefinitiontargetMethod=...;MethodReferenceattributeConstructor=module.Import(t
有没有从Mono.Cecil中的TypeReference到Type的方法? 最佳答案 就“盒子里有什么”而言,您只能使用ModuleDefinition.ImportAPI将其反过来。要从TypeReference转到System.Type,您需要使用Reflection和AssemblyQualifiedName手动查找它。请注意,Cecil使用IL约定来转义嵌套类等,因此您需要进行一些手动更正。如果您只想解析非泛型、非嵌套类型,您应该没问题。要从TypeReference到TypeDefition(如果这是您的意思),您需要T
我看过讨论这两个相似框架的文章,但大多数都是两岁左右。我认为这两个项目现在都比两年前成熟得多,情况也更加复杂。鉴于每个库的当前状态,我希望有人可以详细解释每个库的优缺点,以及目前应该首选哪个库。 最佳答案 中央情报局优点:可以让您更精细地控制自己的表现最新版本比较成熟缺点:对象模型更复杂(如果您像我一样不熟悉IL/低级反射,就会感到困惑)塞西尔(指thenewergit-hubversion)优点:拥有更简单的对象模型,因此更容易上手缺点:最新版本不太成熟,因此可用的代码示例较少API正在开发中您将无法控制名称缓存(针对性能)我会选