我需要一些帮助,我正在编写一个修改应用程序中某些值的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);
出于任何原因我不知道应用程序在创建线程一段时间后崩溃。
有人可以帮助我吗?
答案 0 :(得分:3)
我可以看到一些问题。包括:
PROCESS_ALL_ACCESS
。最后一个可以解释您应用中的崩溃,但不会解释其他应用。线程程序应该是:
function ThreadProc(lpParameter: Pointer): DWORD; stdcall;
很可能其他应用程序崩溃了,因为你正在搞砸它的内存。尝试删除对WriteProcessMemory
的调用,看看其他应用是否会停止崩溃。