2009-11-03 13 views
0

我無法找到這一個合適的標題來工作。我將用例子來表達我的查詢。指導:我想在處理信息級別

考慮以下軟件:

  1. Process explorer Sysinternals公司(高級任務管理器)
  2. 資源管理器:resmon.exe(列出每個大約每個進程的資源使用的每一個細節)。

對我來說這些軟件看起來像是奇蹟。我想知道這些是如何製作的。來吧用戶進程如何知道其他進程的細節?誰告訴這個軟件,哪些流程正在運行以及所有資源被利用?哪些dll被使用?

Windows操作系統給這些軟件的信息?我的意思是,雖然(顯然是最低級別的API)WIN32API。是否有一些功能,這在調用返回這些值

抽象說:

  • GetAllRunningProcesses()
  • GetMemoryUsedByProcess(進程* PROC)

等。

其他類似的應用是

  • 網絡數據包捕獲軟件。它如何獲得有關所有這些數據包的信息?它顯然位於NIC卡的正面。這怎麼可能?
  • 防病毒:它會掃描內存中的病毒。攔截其他進程。爲用戶應用程序空間充當沙箱。怎麼樣?怎麼樣??

如果它的WIN32API。我發誓,我要去掌握它。

我不想創建一個多線程應用程序。我想獲得有關其他多線程應用程序的信息。 我不想創建一個使用套接字進行通信的程序。我想了解如何學習如何捕獲所有通信數據包。

我其實想工作在較低水平。但我不知道,我應該學習什麼。請指導我正確的方向。

+0

首先閱讀MSDN的東西... – Artelius 2009-11-03 00:13:53

回答

1

這的確是一個相當開放式的問題。對於正在運行的進程列表等內容,請查找「PSAPI」或「Toolhelp32」。有關特定進程的內存信息,可以使用VirtualQuery。

捕獲網絡數據包通常通過安裝設備驅動程序完成。如果你看看,你應該能夠找到的有關如何編寫設備驅動程序了相當數量的,雖然不指望一夜之間創造奇蹟,也希望在這個過程中機器崩潰了幾次(設備驅動程序在內核模式下運行,因此很容易導致機器崩潰)。

對於反病毒,我不能多說一些,因爲我從來沒有寫過。我直接猜測他們的主要技術是API掛鉤。這可能比這更多,但我從來沒有花足夠的時間看他們知道什麼。

+0

絕對開放式結束,有時很難知道從哪裏開始。如果你不知道合適的話,你就無法谷歌。 – 2009-11-03 00:22:23

1

馬克Russinovich的經典,Windows Internals,是如果你想深入這種東西的前往書。我注意到剛剛發佈的第五版包括Vista。這裏是一個sample chapter來偷看。

如果你喜歡Process Explorer,這是寫這個的人,書中有很多使用它的例子。

另外,在1232精裝頁面上,您可以用它來按下你的衣服。