約 20 年前に最初に書かれた更新されたコードの再リリース。
場合によっては、32 ビット バージョンと 64 ビット バージョンの DLL の両方が必要になることに注意してください。
プロジェクトは Delphi XE2 以降でコンパイルされます。 XE2 が選択されたのは、バイナリ フットプリントが小さく 32 ビットと 64 ビットの両方でコンパイルできるからです。
Delphi Berlin には、「uiAccess」を含むマニフェスト ファイルが提供されています。新しい IDE にはこのオプションが組み込まれています。デバッグは、「uiAccess」を含まないマニフェストを使用して行うのが最適です。 「LinkManifests.cmd」は、提供されたマニフェストへのシンボリック リンクを生成します。
Windows 10.1903.18362.295 以降、サンドボックス VM ではコード署名なしでデバッグ テストが可能になりました。
DLL 名を変更し、Mapfile ファイル名を変更して、次の手順を実行するのが最善です。
このフックがないと、「uiAccess」アプリは失敗し、アプリがロックされる可能性があります。
ジャーナルフックの録音と再生。コードは EXE または DLL 内に常駐でき、追加バージョンなしで 32/64 ビットの両方で動作します。ただし、これを読んだ私の解釈では、非ネイティブ ビットネス アプリは最終的にサンク メカニズムを介してコードを読み込むため、DLL を使用するのが最善であると考えられます。
PostMessage 経由で投稿されたすべてのメッセージをフックします。監視する必要があるものを絞り込み、残りはそのまま流すのが最善です。現在のデモは、システム メニューがクリックされたときに、元のアプリにメッセージをポストバックするだけです。
処理すべきキーボード メッセージ (WM_KEYUP または WM_KEYDOWN) がある場合、すべての GetMessage または PeekMessage 関数をフックします。現在のデモでは、ALT+Numkey_1 を使用すると、元のアプリにメッセージをポストバックするだけです。
PID を使用して DLL をプロセスに挿入します。DDetours 呼び出しは基本的に API をリダイレクトします。
この方法では、単一プロセスに固有のフック プロセスを使用して、システムの負荷を軽減できます。
最も簡単なテスト方法:
必要なもの: Delphi Detours ライブラリ