2011-05-17 93 views
6

我可能會編寫一個程序來檢測惡意(或非惡意)軟件是關鍵日誌記錄(記錄關鍵筆劃以獲取信息)。有沒有一種方法來檢測關鍵記錄軟件?

  1. 將使用什麼策略?
    • 是否有某些代碼需要查找?
    • 我是否應該搜索某些位置?
  2. 我喜歡的Java和Perl,因爲我精通這些語言
    • 是將這些語言的工作?
    • 是否有更好的語言用於這種情況?
  3. 會用什麼?
    • 代碼?
    • 算法?
    • 功能?
+2

您需要C++。 – SLaks 2011-05-17 15:45:12

回答

3

我認爲這取決於你試圖做什麼。如果您正在查找已知的鍵盤記錄程序,則可以使用任何可以搜索文件系統以查看文件簽名的軟件。不過,這聽起來像你想檢測未知的程序。我不相信這是完全可能的。鍵盤記錄應用程序可以被動地收聽擊鍵,因此沒有可以查找的活動簽名。這可能會更容易理解應該在您的計算機上運行的軟件,然後檢測任何開始運行的新軟件。它不一定是按鍵記錄軟件,但它將是未經授權的軟件(或至少尚未被授權的軟件)。

鍵擊會作爲事件廣播到系統中,您可以在應用程序中訂閱該事件。這就是遊戲和其他程序如何使用鍵盤輸入。整個系統知道密鑰何時被擊中以及它是哪個密鑰。你無法知道誰在聽。

換句話說,如果可能的話,它會殺死軟件按鍵記錄器,因爲每個防病毒和反間諜軟件應用程序都可以選擇檢測並刪除所有這些類型的軟件。他們有一個類似於此的選項,但它基於已知的按鍵記錄器的已知簽名。

2

作爲一個程序,試圖確定它的輸入是否被鍵入記錄,對於編寫不好的鍵盤記錄器,可以尋找一些時間模式,例如記錄器回收緩衝器時的週期性延遲,但通常是鍵盤記錄器寫得非常好,並且會注入驅動程序鏈中,因此在正常鏈條中將難以分辨。

在這種情況下,檢測密鑰記錄器的唯一希望是檢查驅動程序鏈,尋找非標準驅動程序(但某些密鑰記錄器可能感染標準驅動程序),這在Windows環境中不是特別容易(例如低水平檢查)。

需要插入防病毒/防惡意軟件鉤子,以便能夠真正訪問不僅驅動程序鏈定義,而且還要執行真正的代碼,以檢測是否正在執行一些密鑰日誌記錄,這很困難,充滿了官僚作風,並且幾乎可以在除C/C++以外的其他任何東西中取消。

相關問題