我使用Mono.Cecil加密我的程序集中的字符串。
但在
myAssemblyDefinition.Write(myAssemblyPath);
我收到错误:
成员'System.Char [] System.String :: ToCharArray()'在中声明 另一个模块,需要导入
我尝试使用以下所有行导入String.ToCharArray
方法:
myAssemblyDefinition.MainModule.Import(stringTypeReference.Resolve());
myAssemblyDefinition.MainModule.Import(stringTypeReference.Resolve().Module.Types.Where(x => x.Name == "String").First());
MethodDefinition toCharArrayMethod = stringTypeReference.Resolve().Module.Types.Where(x => x.Name == "String").First().Methods.Where(x => x.Name == "ToCharArray").First();
myAssemblyDefinition.MainModule.Import(toCharArrayMethod);
myAssemblyDefinition.MainModule.Import(typeof(System.String));
但我的问题仍然存在。
我使用ToCharArray
方法将decryptMethod
注入我的程序集。
任何人都可以帮我解决这个或
是否有一个示例代码来加密字符串,以便使用Mono.Cecil 0.9.5版本进行模糊处理?
答案 0 :(得分:2)
如果目标程序集的运行时版本与注入代码的运行时版本相同。 请尝试以下行。
var toCharArray =
asm.MainModule.Import(typeof(string).GetMethod("ToCharArray", new Type[] { }));
proccer.Emit(OpCodes.Callvirt, toCharArray);