【发布时间】:2012-03-29 16:59:40
【问题描述】:
这是我的工作代码
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);
【问题讨论】:
-
"为什么上面的代码写的是43??"你的意思是
$43。那么,C的 ASCII 码是什么?当你只写一个字节时,为什么要使用'C3'?第二个字节有什么意义?为什么不使用'C'? -
我的转换器我得到了 99
-
您能解释一下 99 来自哪里,C3 来自哪里以及您的期望是什么?我必须承认,你会愿意像这样混淆你的代码,这让我很吃惊。
-
非常有趣的讨论 :) 我认为 Tprice88 写的是 c 而不是 C,因为 c 是 ASCII 码 99。