2010-09-19 52 views
2

我有一個應用程序,它顯示我一些數據。我需要附加到這個應用程序的進程,找到我需要的內存(實際上是一個單一的數字),並將其保存在某個地方。這個應用程序似乎沒有使用標準的Windows控件,所以事情不會像使用AutoIt或類似的東西讀取控件數據那麼簡單。如何從Windows應用程序內存讀取一些數據?

目前我是一個自學習者數據庫傢伙,並且對Windows應用程序調試的知識還很淺。甚至不知道我是否正確地問了我的問題。

那麼,你能給我一些關於我應該先讀什麼的啓動指南,以及我應該處理的一般指導嗎?

謝謝。

回答

5

我的主要建議是:試圖找到任何其他方法的整合比這個。即使你成功了,你也會被目標進程中的任何變化所劫持,甚至可能在Windows操作系統中。你所描述的是大多數病毒掃描程序應該標記和阻礙的行爲:如果不是現在,那麼將來。

這就是說,你可以看看DLL injection。然而,聽起來好像你將不得不在反彙編級別上調試目標進程:否則,你將如何知道要讀取什麼內存地址?

+0

1避免這種不惜一切代價。 – SLaks 2010-09-19 16:10:33

+0

我不關心任何問題,因爲這將是一次性工作 - 我只需要收集一些不變的數據並忘記它。我可以使用這個應用程序的API來收集它,但它並不能爲我提供一種以不明原因獲取這些數字的方法。 – 2010-09-19 16:15:04

+0

根據我的經驗,這是一種快速ñ骯髒的做它一次,得到它,這六個月的工作,這真的**轉動需要永遠支持六個月。祝你好運... – 2010-09-19 18:18:00

0

我曾經知道Windows調試API,但它很長時間的內存丟失。如何使用OllyDbg的:

http://www.ollydbg.de/

以及控制既OllyDbg的腳本和AutoIt的?

+0

這裏的一些財富約knowleedge的奧利:http://reversengineering.wordpress.com/ – user376403 2010-09-19 16:10:36

0

聽起來很有趣...但非常困難。既然你說這是'一次性',那麼這樣的事情呢?

  • 截取這個應用程序的截圖。
  • 通過OCR程序運行屏幕截圖
  • 如果您能夠以可預測的方式閱讀正在查找的文本,那麼您已經達到了一半!

所以,現在,如果你能讀你的應用程序的OCR'd截圖,它是寫一個程序,它下面的一個簡單的問題:

  • 腳本步驟獲得的數據屏幕
  • 通過像Microsoft Office Document Imaging
  • 提取物的OCR程序創建的數據有問題的截圖
  • 運行它的相關文字和做「什麼」吧。

我已經做了類似的事情,但結果相當不錯,但我會說這是一個脆弱的解決方案。如果應用程序發生更改,則停止工作。如果OCR無法讀取文本,則停止工作。如果OCR讀取錯誤的文本,它可能會比停止工作更糟糕...

正如其他海報所說,進入內存並提取數據是一個相當先進的主題......如果你能找到一種方法來做到這一點!

+0

我沒有意識到你是爲了好玩而做的。無論如何,我會留下我的答案作爲替代方法。 – mpeterson 2010-09-19 21:09:49

7

要讀取其他應用程序的內存,您需要打開OpenProcess的進程,至少使用PROCESS_VM_READ訪問權限,然後使用ReadProcessMemory從進程中讀取任何內存地址。如果您是管理員或具有調試權限,您將能夠打開任何具有最大訪問權限的進程,您只需在之前啓用SeDebugPrivilege(例如參見http://support.microsoft.com/kb/131065)。

如果你不太瞭解目標進程的內存,你可以列舉關於VirtualQueryEx的內存塊(參見How does one use VirtualAllocEx do make room for a code cave?)作爲一個例子,我檢查程序代碼。一樣的方法)。

我看到的最實際的問題是你問你的問題太一般的方式。如果你更多地解釋你正在尋找什麼樣的數據,我可能會建議你一個更好的方法。例如,如果您可以在某處查看數據,則可以通過Spy ++(Visual Studio Tools的一部分)檢查相應的窗口和控件。最重要的是窗口(或控件)的類別以及在顯示最有趣的窗口時將發送的消息。您還可以使用Process Monitor來追蹤所有文件和註冊表訪問,當時將顯示帶有有趣信息的窗口。至少在一開始,您應該在您正在查找的數據顯示在窗口上的那一刻用ReadProcessMemory檢查該過程的內存。

如果您在調查中沒有成功,我建議您在您的問題中插入更多信息。

+0

+1 ..這看起來像一些有希望的信息。 – mpeterson 2010-09-19 21:10:58

0

我知道這可能不是一個受歡迎的答案,由於該軟件的用途,但CheatEngineArtMoney等程序允許您搜索某個給定值的進程保留的所有內存,然後改進結果直到找到要查找的值的地址。

我最初在學習如何在遇到培訓師遇到其中一人後更好地保護我的遊戲時學會了這一點,但在調試時發現該技術偶爾有用。

以下是在使用上面描述的技術的一個示例:https://www.youtube.com/watch?v=Nv04gYx2jMw&t=265

相關問題