介绍
我认为您可能想随机读取某个进程的内存。对于Windows,通过调用Win32API提供的ReadProcessMemory,可以读取另一个正在运行的进程的内存。你可以用这个做很多事情!我也那么认为。
计划概述
简单总结一下流程,
-
使用
CreateToolhelp32Snapshot获取正在运行的进程列表的快照 -
Process32First和Process32Next从快照中一一提取进程,因此找到所需名称的进程。 -
将所需进程的 ProcessID 传递给
OpenProcess以获取处理程序 - 将获取的处理程序传递给
ReadProcessMemory以读取无限内存它应该是。
问题 1
当我尝试运行它时,
OpenProcess出现错误。当我打电话给GetLastError并看到错误代码时,它是0x5的ERROR_ACCESS_DENIED。这意味着我没有权限。我查了一下,说调试权限SeDebugPrivilege一定是有效的,但是普通用户本来就没有调试权限,所以调用AdjustTokenPrivileges不会改变权限。当然,正在运行的进程也不能有调试权限。
既然没有选择,就用admin用户运行,解决用户权限问题。问题 2
现在用户权限问题已经解决,一些程序如
chrome.exe可以读取正在运行的进程的内存。但是,某些进程仍然被OpenProcess拒绝访问。底线是您无法访问设置为不允许外部进程访问的进程。例如,Windows 系统进程总是被拒绝访问。您还可以通过在创建进程时调用BuildExplicitAccessWithNameA并设置ACE:Access Control Entry来拒绝来自外部进程的访问。在最后
虽然很遗憾它没有按预期进行,但考虑它是很自然的,因为如果你不能设置访问拒绝,你可以做各种各样的坏事。但是,只是使用
Win32API的简单方法并不好,所以我认为想通过各种方式读取内存的人可以通过其他方式来实现。我要小心不要试图做坏事。参考页
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308629829.html