2014-01-09 19 views
1

我已經在vb.net(WOOP!)中成功實現了WriteProcessMemory函數。但是,當我嘗試更改某個值時,它有時會自動更改爲之前的值。如果可能的話,我想要一種方法來鎖定和解鎖這些值。如何鎖定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

你確定表演真的值得嗎? – Neolisk

+0

對不起?你什麼意思? – FraserOfSmeg

+0

您可以調試目標應用程序並查看哪些過程會覆蓋您的值,查看該值來自哪裏並更改該值,除非它駐留在私有內存中,在這種情況下,您只需一次性地重寫目標字段它發生了變化(每x毫秒檢查一次,如果值已更改,則覆蓋它) – MrPaulch

回答

1

我相信那些「gamehack」 - 程序通常會改變計時器上的值。假設記憶值每100ms左右設置一次新值。 您試圖定位的程序可能具有反脾氣機制,例如對於1值使用多個變量。如果該值沒有存儲在別的地方,它不能重置爲以前的值,也許你應該找到這個位置並在那裏改變它的值。 我不相信你真的可以永久鎖定一些其他程序內存的寫訪問權限,但我可能在那裏是錯誤的。我猜目標會立即崩潰,出現內存損壞錯誤。