如何在Mono.Cecil中创建导出函数
本文关键字:创建 函数 Cecil Mono | 更新日期: 2023-09-27 18:07:02
我做错了什么?我正在尝试创建LoadLibraryA的导出函数并将其注入程序集。
TypeReference stringType = asm.MainModule.Import(typeof(String));
TypeReference nativeIntType = asm.MainModule.Import(typeof(IntPtr));
ModuleReference kernel32Ref = new ModuleReference("kernel32");
asm.MainModule.ModuleReferences.Add(kernel32Ref);
MethodDefinition loadLibraryA = new MethodDefinition("LoadLibraryA", Mono.Cecil.MethodAttributes.Public |
Mono.Cecil.MethodAttributes.HideBySig | Mono.Cecil.MethodAttributes.Static |
Mono.Cecil.MethodAttributes.PInvokeImpl, nativeIntType);
loadLibraryA.PInvokeInfo = new PInvokeInfo(PInvokeAttributes.NoMangle | PInvokeAttributes.CharSetAnsi
| PInvokeAttributes.SupportsLastError | PInvokeAttributes.CallConvWinapi, "LoadLibraryA", kernel32Ref);
loadLibraryA.Parameters.Add(new ParameterDefinition("name", Mono.Cecil.ParameterAttributes.None, stringType));
别担心,我找到解决办法了。入口点应该是LoadLibrary
,而不是LoadLibraryA
。我想知道我为什么那样做.....
我也没有这样做:
loadLibraryA.IsPreserveSig = true;