如何锁定WriteProcessMemory以使值保持不变

时间:2014-01-09 01:36:23

标签: vb.net memory

我已经在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))

任何帮助/建议或链接都​​会很棒!

1 个答案:

答案 0 :(得分:1)

我相信那些“gamehack” - 程序通常只是改变计时器上的值。假设每100ms左右将内存值设置为新值。  您尝试定位的程序可能具有反脾气机制,例如使用多个变量作为1个值。如果该值未存储在其他位置,则无法重置为先前的值,也许您应该找到此位置并更改其中的值。 我不相信你真的可以永久锁定对其他程序内存的部分写入访问权限,但我可能在那里错了。我猜目标会立即崩溃并出现内存损坏错误。