gpt4 book ai didi

multithreading - 具有 WriteProcessMemory 的线程

转载 作者:行者123 更新时间:2023-12-03 15:53:53 24 4
gpt4 key购买 nike

我需要一些帮助,我正在编写一个 dll,它可以修改应用程序中的某些值。但如果我卡住值应用程序崩溃(一段时间后停止工作)。

这是我的代码:这里我创建了一个更新地址的线程:

CreateThread(nil, 0, @UpdateAddr, Pointer(nil), 0, rodaid)

这是函数 UpdateAddr:

procedure UpdateAddr;
var
BytesWrite: DWORD;
buf: Cardinal;
begin
while true do
begin
buf := Random(38);
WriteProcessMemory(ProcessH, SpeedAddr, addr(buf), sizeof(buf), BytesWrite);
end;
end;

这是我如何打开该过程:

ProcessH := OpenProcess (PROCESS_ALL_ACCESS, False, ProcessId);

出于某种原因,我不知道应用程序在创建线程一段时间后崩溃。

有人可以帮助我吗?

最佳答案

我看到的一些问题。包括:

  1. 没有错误检查。
  2. 请求的 PROCESS_ALL_ACCESS 超出了您的需要。
  3. 线程过程的签名错误。

其中最后一个可以解释您的应用程序的崩溃,但不能解释其他应用程序的崩溃。线程过程应该是:

function ThreadProc(lpParameter: Pointer): DWORD; stdcall;

很可能其他应用程序崩溃是因为你破坏了它的内存。尝试删除对 WriteProcessMemory 的调用,看看其他应用是否停止崩溃。

关于multithreading - 具有 WriteProcessMemory 的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41022432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com