2010-01-09 32 views
1

我想知道是否有可能找出用戶在Mac OS啓動時按下的鍵?是否可以恢復Mac OS啓動時完成的鍵盤輸入?

任何方式都可以。據我所知,沒有簡單的方法來簡單地掛鉤應用程序/腳本開始工作,並與操作系統同時捕獲擊鍵。但也許有某種方式來逆向工程呢?也許看着一個特定的日誌文件或類似的東西?

任何結果都可以。基本上我感興趣的是在操作系統啓動過程中,用戶按下/保持哪個鍵。它可能是字符串,字符代碼或十六進制,並不重要。

更新:由Pekka的建議指導我發現了一個內核擴展應該能夠完成這項工作。而且,希望這樣做,在這個後續問題 - Why this keyboard intercepting kernel extension doesn’t work?被回答。 :)

回答

1

我不是操作系統的大師,但我覺得非常非常非常難。我不認爲這樣的東西會自動記錄在任何地方。

我想你將不得不看看處理startup keys的系統部分是否可以訪問,並且可以擴展爲調用你定義的命令。

想到的第二件好事是讓你編寫一些自定義設備驅動程序或啓動腳本,在啓動時加載,並監聽按鍵事件。

+0

感謝您的線索,我將開始在啓動腳本方向挖掘。我不會將你的答案標記爲答案,我會試着找出是否可以在操作系統啓動過程中插入一個腳本。 – 2010-01-09 22:09:48

+0

由於Mac Dev的系統啓動編程主題中的http://tiny.cc/TheBootProcess,設備驅動程序方法是關鍵。它允許儘快開始工作,只要它將隨內核一起加載。 儘管有些事情告訴我,首先要捕獲所有的鍵盤輸入並且以某種方式告訴系統啓動後啓動的應用程序,這並不容易。 – 2010-01-09 22:43:01

+1

兩個很好的觀點:)我想到的另一個想法可能是看一些可以寫入系統日誌的開源低級驅動程序(不需要鍵盤相關),並從中複製。爲了得到關於什麼驅動程序是一個好主意的建議,您可以打開另一個問題。 – 2010-01-10 00:13:14

0

這不僅僅是沒有記錄在任何地方,在啓動期間有相當一段時間是沒有鍵盤驅動器。所以從軟件的角度來看,在這段時間內,鍵盤根本就不存在。

+0

爲了捕獲啓動密鑰命令,必須從一開始就運行一個非常非常低級的「驅動程序」(或其中一些驅動程序)。我從舊時代的DOS時代就記得,在硬件層面上聽鍵盤其實很容易。 – 2010-01-09 22:37:28

+0

由於http://tiny.cc/TheBootProcess相同,它是處理啓動密鑰命令的BootROM固件。 試圖侵入計算機的固件本身聽起來幾乎不可能,不太禮貌。 :) – 2010-01-09 22:46:57

+0

我認爲標準的鍵盤處理是一箇中斷的事情。如果我沒有記錯的話,沒有任何司機應該很容易聽。 – 2010-01-10 00:15:17

1

如何解決這個問題完全取決於您想要檢查密鑰的boot process中的哪個點。

  • 如果你想真正的早期檢查,你唯一的選擇是帶有EFI(固件)的環境中玩 - 也許你可以修改rEFIt做你想做什麼?
  • 固件後,控制權傳遞給boot.efi(PPC Mac上的BootX)。這大概會被替換/黑客入侵,我希望這個源代碼可以作爲Darwin的一部分,但我沒有通過快速檢查看到它。
  • 之後,內核加載(你可以建立你自己的內核)和一組最少的緩存驅動程序(你可以寫一個驅動程序,但不知道如何讓它被緩存)。
  • 之後,各種事情或多或少一次發生。正常的驅動程序被加載,/etc/rc.local得到運行,launchd items in/System/Library/LaunchDaemons和Library/LaunchDaemons變爲活動狀態......如果你願意等到啓動過程的這個階段,你有很多選擇。
相關問題