用 C# 编写内存扫描程序
本文关键字:扫描 程序 写内存 | 更新日期: 2023-09-27 18:19:13
我正在尝试用 C# 制作内存扫描器。我听说我需要API函数WriteProcessMemory
和ReadProcessMemory
。
我称他们为:
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] lpBuffer,
UInt32 nSize,
ref UInt32 lpNumberOfBytesRead
);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] lpBuffer,
uint nSize,
out UIntPtr lpNumberOfBytesWritten);
我在谷歌上找到的所有内存扫描仪的例子都很难理解。我读过很多文章,说要找到值地址,您需要在任何内存字节进行搜索。现在我需要让程序打开从内存读取和写入的过程。
我可以用GetProcessByName
做到这一点吗?
是的,像这样:
Process[] process = Process.GetProcessesByName("cmd");
byte[] memory = new byte[255];
uint bytesRead =0;
bool succes = ReadProcessMemory(
process[0].Handle,
process[0].MainModule.BaseAddress ,
memory ,
(uint) memory.Length ,
ref bytesRead);
你必须检查成功是否属实。如果没有,你什么也没读过。