重新發布了大約 20 年前編寫的更新程式碼。
請記住,在某些情況下,32 位元和 64 位元版本的 DLL 都是必需的。
專案將在 Delphi XE2 及更高版本中編譯。選擇 XE2 是因為它可以針對 32 位元和 64 位元進行編譯,且二進位佔用空間較小。
為 Delphi Berlin 提供了一個清單文件,其中包括“uiAccess”。較新的 IDE 內建了此選項。 「LinkManifests.cmd」將產生指向所提供清單的符號連結。
從 Windows 10.1903.18362.295 開始,沙盒 VM 允許在沒有程式碼簽署的情況下進行偵錯測試。
最好更改 DLL 名稱、更改 Mapfile 檔案名稱並按照以下步驟操作:
如果沒有這個掛鉤,「uiAccess」應用程式將失敗並可能鎖定您的應用程式。
Journal hook 的記錄和回放。程式碼可以駐留在 EXE 或 DLL 中,並且適用於 32/64 位,無需附加版本。然而,我閱讀本文的方式是,最好使用 DLL,因為非本機位應用程式最終將透過 thunking 機制載入您的程式碼。
掛鉤透過 PostMessage 發布的所有訊息,最好是細化您需要觀看的內容,讓其餘的內容通過。目前的演示只是在單擊系統選單時將訊息發送回原始應用程式。
當有鍵盤訊息(WM_KEYUP 或 WM_KEYDOWN)需要處理時,請掛鉤所有 GetMessage 或 PeekMessage 函數。目前的演示只是在使用 ALT+Numkey_1 時將訊息發送回原始應用程式。
使用 PID 將 DLL 注入到進程中,其中 DDetours 呼叫本質上是重定向 API。
此方法可以使用針對單一進程的Hook進程來減輕系統的負載。
最簡單的測試方法:
需要:Delphi Detours 庫