2014-11-21 118 views
2

我有一個關於從另一個應用程序更改應用程序的變量的問題。從另一個應用程序更改應用程序的變量

例如:如果的1.exe我已經定義string a="a",我怎麼能夠通過使用其他應用程序來改變a="a" to a="b"

我一定要得到的字符串的內存地址,然後改變它的內容到b?或者還有其他更簡單的方法嗎?

+1

您不能通過直接使用其他進程來修改一個進程的內存。至少,我希望你的操作系統不允許這樣做。您可以將命令從一個進程傳送到另一個進程,然後添加接收這些命令並執行這些命令的功能。 TGH提供了一個很好的替代解決方案。 – 2014-11-21 05:42:16

回答

2

您可以設置這兩個應用程序共享資源,並從那裏讀出值。它可以是數據庫,緩存或甚至是簡單的文本文件。

在適當的時候從共享資源刷新變量。

+0

很好的解決方案當然,進程之間的通信當然是另一種解決方案,雖然你的解決方案當然更具可擴展性:P – 2014-11-21 05:43:20

+0

是的,我理解這個方法。我已經開發了幾個程序。現在我想了解遊戲黑客並試圖學習它背後的理論。例如,反恐精英,我相信很多人都很熟悉遊戲。通常情況下,殺死一個人大約需要5槍,但現在我想讓它一槍殺死。我相信這是一個「攻擊破壞」變量,所以如果我可以通過我的apication(hack)改變這個變量的話。我可以殺人一槍。這只是我的猜測。有什麼想法嗎? – Rain 2014-11-21 05:44:22

1

鑑於你所提到的(即你沒有控制第一應用程序的代碼)..場景用管理員權限打開目標進程,找到您要更新的存儲位置,然後更新它的總體思路適用..

然而,予以警告,它通常不是那麼簡單。例如,

  • 可能非常難以預測,應用程序邏輯維護了多少個副本,以及在哪裏?

  • 沒有反彙編代碼(沒有辦法這麼簡單的任務),掃描值和猜測內存位置是唯一想到的選項。但它有做出錯誤猜測和破壞整個過程的風險。


PS - 有免費的軟件,它試圖做的正是我上面描述..我建議你嘗試檢查它們是如何工作(他們支持的方案),以更好地瞭解你正在努力完成的事情。

PPS - 還要小心你下載什麼..類似這些應用程序,如果從不可靠的網站下載,可能會造成損害/安全風險。

+0

我非常感謝你的回答。謝謝你,先生! – Rain 2014-11-21 05:53:22

1

我認爲最簡單的方法是通過UDP或TCP在本地主機網絡套接字通信。它爲您提供了一個很好的事件機制,因此您可以輕鬆處理數據,而無需頻繁檢查新的數據更改,也無需考慮應用程序在同一時間相互通信的數量。其他解決方案(如共享內存等)將很難控制,特別是在運行三個或更多應用程序時。

+0

謝謝!我會更深入地瞭解這一點 – Rain 2014-11-21 11:42:07

相關問題