gpt4 book ai didi

windows - Delphi 7 写进程内存

转载 作者:可可西里 更新时间:2023-11-01 09:41:39 27 4
gpt4 key购买 nike

这是我的工作代码

  DriftMul:=99;
WriteProcessMemory(HandleWindow, ptr($4E709C), @DriftMul, 2, Write);

我想在不使用变量的情况下转换它,但它不会工作下面只是我想做的一个例子。

WriteProcessMemory(HandleWindow, ptr($4E709C),  ptr(99), 2, Write);

有谁知道使用变量来完成这项工作的方法吗???我可以用几种语言编程,我使用的每一种语言都是方法来做到这一点。我想这样做的原因是因为我要制作一个大程序,它会编写大量不同的值,它将为我节省大约 300 多行代码。下面是我使用的 C++ 示例。

WriteProcessMemory(hProcess, (void*)0x4E709C, (void*)(PBYTE)"\x20", 1, NULL);

更新:解决了我使用 4 个过程,我根据要写入的字节数调用这些过程。

procedure Wpm(Address: Cardinal; ChangeValues: Byte);
Begin
WriteProcessMemory(HandleWindow, Pointer(Address), @ChangeValues, 1, Write);
End;
procedure Wpm2(Address: Cardinal; ChangeValues: Word);
Begin
WriteProcessMemory(HandleWindow, Pointer(Address), @ChangeValues, 2, Write);
End;
procedure Wpm3(Address: Cardinal; ChangeValues: Word);
Begin
WriteProcessMemory(HandleWindow, Pointer(Address), @ChangeValues, 3, Write);
End;
procedure Wpm4(Address: Cardinal; ChangeValues: Cardinal);
Begin
WriteProcessMemory(HandleWindow, Pointer(Address), @ChangeValues, 4, Write);
End;

例子写

 Wpm($477343,$EB);
Wpm2($40A889,$37EB);
Wpm3($416E34,$0086E9);

Pchar 是我发现的唯一无需程序即可编译的方法,不过我不想使用 assci。

WriteProcessMemory(HandleWindow, Pointer($449A17), PChar('90'), 1, Write);

最佳答案

您必须将正在写的单词的内容存储在某处。 WriteProcessMemory 需要一个指向进程空间中某些内存的指针。如果您不想使用变量,请使用常量。

const
DriftMul: word=99;
....
WriteProcessMemory(HandleWindow, ptr($4E709C), @DriftMul, 2, Write);

传递 ptr(99) 失败,因为 ptr(99) 不是指向包含值 99 的单词的指针。它是一个指向地址 99 的指针。我认为您正在尝试编写 @Word(99) 但您不能获取真正常量的地址。

您可以通过在辅助方法中包装对 WriteProcessMemory 的调用来使这更方便。尽管您的问题表明您想要编写 Word 值,但在冗长的聊天中很明显您实际上想要编写字节序列。写入整数数据类型会导致机器字节顺序困惑。因此,我会使用 Byte 的开放数组来做到这一点,以便在调用站点提供灵 active 。

procedure WriteBytes(hProcess: THandle; Address: Pointer;
const Buffer: array of Byte);
var
NumberOfBytesWritten: DWORD;
begin
if not WriteProcessMemory(hProcess, Address, @Buffer[0], Length(Buffer),
NumberOfBytesWritten) then RaiseLastOSError;
end;

然后你可以调用代码

WriteBytes(Handle, Pointer($523328), [$42]);//single byte
WriteBytes(Handle, Pointer($523328), [$CC, $90, $03]);//3 bytes

关于windows - Delphi 7 写进程内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929981/

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