我已经在vb.net(WOOP!)中成功实现了WriteProcessMemory函数。但是,当我尝试更改某个值时,它有时会自动更改回之前的值。如果可能的话,我想要一种锁定和解锁这些值的方法。
以下是更改值的代码:
_memManager.TryAttachToProcess("SomeAPP")
Dim bytes() As Byte = _memManager.ReadBytes(xpos(0), 4)
Dim currentx As Double = BitConverter.ToSingle(bytes, 0)
Dim targetx As Double = currentx + 2
bytes = BitConverter.GetBytes(targetx)
For i = 0 To xpos.GetLength(0) - 1
_memManager.WriteBytes(xpos(i), bytes.Length, bytes)
Next
_memManager.DetachFromProcess()
RichTextBox1.AppendText("compleate" & Chr(13))
任何帮助/建议或链接都会很棒!
答案 0 :(得分:1)
我相信那些“gamehack” - 程序通常只是改变计时器上的值。假设每100ms左右将内存值设置为新值。 您尝试定位的程序可能具有反脾气机制,例如使用多个变量作为1个值。如果该值未存储在其他位置,则无法重置为先前的值,也许您应该找到此位置并更改其中的值。 我不相信你真的可以永久锁定对其他程序内存的部分写入访问权限,但我可能在那里错了。我猜目标会立即崩溃并出现内存损坏错误。