我正在尝试启动或访问minesweeper实例,以根据需要进行挂钩并调用其功能以发挥作用并创建求解器。我尝试了两种方法:使用它启动一个进程,并使用在线找到的方法向其中注入(inject)我的dll。两者都遇到了相同的问题:当我从程序或注入(inject)的库访问minesweeper库的内存时,出现错误998。你推荐我做什么?我不太了解Windows API,所以不知道问题是否出在我使用的方法上,还是我必须做一些额外的函数调用或更改某些设置。

最佳答案

您的问题很可能是您试图在不更改页面保护的情况下写入目标的内存。可执行页面通常是只读的(和可执行的)。您需要使用VirtualProtect更改此保护。通常,将执行以下类型的代码:

DWORD flOldProtect;

VirtualProtect((LPVOID)from, 5, PAGE_EXECUTE_READWRITE, &flOldProtect);
...
VirtualProtect((LPVOID)from, 5, flOldProtect, &flOldProtect);

此代码更改了保护,因此您可以对其进行写入。您将在...中执行挂钩代码等,然后恢复页面保护。 Here是我之前为某人写的一个非常基础的培训师,它通过DLL注入(inject)工作。

10-08 08:25