【发布时间】:2020-08-02 04:09:03
【问题描述】:
我用 C++ 编写了一个简单的内存扫描程序,但速度很慢,有人说读取内存块会加快速度,但我如何获得每个正确的地址?
这是一个示例源代码:
#include <iostream>
#include <Windows.h>
#include <string>
#define CHUNK_SIZE 0x80000
#define MAX_ADDRESS 0x7ffffff
using namespace std;
int main()
{
DWORD pid;
char buffer[CHUNK_SIZE];
std::cin >> pid;
int something;
int someValue = 0;
HANDLE process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
SIZE_T numberRead;
if (process)
printf("opened process.\n");
else
printf("could not open process.\n");
for (DWORD i = 0; i < MAX_ADDRESS; i += CHUNK_SIZE) {
if (ReadProcessMemory(process, (void*)i, &buffer, sizeof(buffer),
&numberRead)) {
for (int j = 0; j < sizeof(buffer); j++)
{
someValue = (int)buffer[i];
if (someValue == 220)
{
printf("found value %d at 0x%x.\n", someValue, i + j);
}
}
}
}
}
【问题讨论】:
-
你能分享一下你到目前为止的尝试吗?
-
当然我会分享我的代码。
-
我会的,但我确实解决了问题。
标签: c++ windows memory scanning