如果我知道我想在另一个进程(C++)中调用的方法的地址,我怎么能在 C# 中做到这一点?
该方法的偏移量始终相同。
我目前的代码是:
struct DataToPass
{
int field;
}
delegate void Caller(DataToPass data);
public void Call()
{
DataToPass data = new DataToPass();
data.field = 12345;
IntPtr callptr = new IntPtr(myprocess.Modules[0].BaseAddress.ToInt32() + 0x3A5582);
Caller call = (Caller)Marshal.GetDelegateForFunctionPointer(callptr, typeof(Caller));
call(data);
}
但是当我运行程序时出现错误:
testcall.exe 中发生了“System.AccessViolationException”类型的未处理异常