好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 Homely 于 2021-10-12 14:34 编辑
[DllImport("kernel32.dll ")]
static extern bool ReadProcessMemory(int hProcess, IntPtr lpBaseAddress,out int lpBuffer, int nSize, int lpNumberOfBytesRead);
[DllImport("kernel32.dll")]
public static extern int OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
private void button1_Click(object sender, EventArgs e)
{
IntPtr hwnd = new IntPtr();
//这里是通过NuGet程序包下载的PInvoke.User32 直接调用的
hwnd = User32.FindWindow("MainWindow", null);
int testID;
int testTD;
int OpenHwnd;
testTD = User32.GetWindowThreadProcessId(hwnd, out testID);
//打开进程
OpenHwnd = OpenProcess(0x1F0FFF, false, testID);
Boolean aa;
IntPtr FistAdd = new IntPtr(0x007578F8);
int dataAddress;
//偏移地址
int[] offsetData = new int[] {0x94c,0x50};
//源地址
aa = ReadProcessMemory(OpenHwnd, FistAdd, out dataAddress, 4, 0);
//一次偏移
FistAdd = IntPtr.Add(FistAdd, offsetData[0]);
aa = ReadProcessMemory(OpenHwnd, FistAdd, out dataAddress,4,0);
//二次偏移
aa = ReadProcessMemory(OpenHwnd, IntPtr.Add(FistAdd, offsetData[1]), out dataAddress, 4, 0);
}
第一次获取值的跟CE一样的。
1
第一次偏移过后取值就一直为0,
第二次偏移取值也为0,
3
就是不知道问题出在哪里了,求大佬解答一下。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|