Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从其他进程读写_C#_Windows - Fatal编程技术网

C# 从其他进程读写

C# 从其他进程读写,c#,windows,C#,Windows,我希望能够从另一个进程的内存中读写。我从Kernel32.dll调用了函数Readprocessmemory()和WriteProcessmemory(),并使用GetProcessByName()函数查找进程。这是成功的 我看到了使用readprocessmemory()函数并在从kernel32.dll调用后声明它的示例,但我不理解它是如何工作的-如何使用该函数从另一个进程读取?我想举个例子。为了向另一个进程读写内存,您需要使用内核32提供的ReadProcessMemory和WritePr

我希望能够从另一个进程的内存中读写。我从
Kernel32.dll
调用了函数
Readprocessmemory()
WriteProcessmemory()
,并使用
GetProcessByName()
函数查找进程。这是成功的


我看到了使用
readprocessmemory()
函数并在从
kernel32.dll
调用后声明它的示例,但我不理解它是如何工作的-如何使用该函数从另一个进程读取?我想举个例子。

为了向另一个进程读写内存,您需要使用内核32提供的ReadProcessMemory和WriteProcessMemory函数。如果使用C#,则需要使用PInvoke将这些函数导入当前进程

一般来说,您需要做的是:

  • 确定您要读取/注入的流程
  • 调用OpenProcess()获取进程的句柄。您需要将GENERIC_READ | GENERIC_WRITE作为标志发送到此文件,然后您将得到一个需要检查的HPROCESS,该进程不为NULL
  • 确定要从外部进程中读取的位置(这是外部进程指针)。您还需要决定要读取多少字节
  • 在当前进程中分配这么多字节来保存读取结果
  • 调用ReadProcessMemory,传入已打开的HPProcess、要在另一个进程中读取的外部进程指针、指向本地缓冲区的指针以及要从外部进程读取到本地缓冲区的字节数

完成后,您可以查看本地缓冲区,您将看到以前在外部进程中的数据,生活会很好。

我对C#一无所知,但其他用户可能会喜欢您提到的示例链接—不清楚“从kernel32.dll调用后声明”是什么意思…下面是一篇关于MSDN的文章,详细描述了ReadProcessMemory函数: