想用C#做一个游戏内存数据的查看和修改的工具
已经用C++实现了,但是很想换成C#实现又不想直接调用winAPI想试试用类库里封装好的函数来实现找到了Marshal这个类、可是我用Marshal.ReadByte(intPtr x,int y)读取出来全是0、要么就抛内存受保护异常;
不知道是Marshal真的不支持对其它进程的内存访问还是我的用法用错了呢
代码如下:
Process gameProcess = Process.GetProcessesByName(PROCESSNAME)[0];
            IntPtr gameWindow= gameProcess.MainWindowHandle;
int _gameData_address = 0x0012A444;
            for (int i = 0; i < 11; i++)
                for (int j = 0; j < 19; j++)
                    _gameData[i, j] = Marshal.ReadByte(gameWindow,_gameData_address);
其中PROCESSNAME是进程名,_gameData_address是ce出来的地址、不知道是不是这样用