3

1つのゲームを実行していて、ゲームに1つのオーバーレイを表示しようとしています。ユーザーが自分の詳細を入力できる場所。ここでの問題は、ユーザーが入力したキーストロークがゲームソースで利用可能であり、キーストロークをオーバーレイのみに制限したいことです。
ネイティブのc++dllを使用して、CEFを使用してコンテンツをレンダリングするオーバーレイを表示しています。
ユーザーの詳細が他のプログラム/プロセスに公開されないように、このことを安全な方法で行うために利用できる方法はありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

SetWindowHookExを試してみてください。このようにして、プロセスに送信されるすべてのキーボード メッセージをフックし、それらの配信を完全に停止できます (たとえば、フォーカスを持たずに独自のアプリで処理します)。これは非常に堅牢な方法ですが、一部のコピー プロテクションはそれを好まない場合があります。

通常の手順は次のとおりです。

  • Windows メッセージをフックして最初のフィルタリングを行う DLL を作成します (別のプロセス/アドレス空間にロードする必要があるためです)。通常、何らかの IPC メカニズムを使用して、独自のプロセスを形成します。マウス メッセージのみをフックする場合は、Windows メッセージを使用して、独自の隠しメッセージに情報を送信できます。メッセージが届かないようにする場合は、そこでチェーンを停止できます。

  • IPC 呼び出しが自分のウィンドウに到着したとき。キーボード メッセージを自分で受け取ったかのように処理します。ピントなどに気をつけてください。

この方法でキャッチできない唯一のことは、変更しようとしているアプリケーションの動作がGetAsyncKeyState () に依存している場合です。そのような場合、唯一のオプションは、DLL を他のアドレス空間に挿入し、呼び出し自体をフックすることですが、それは高レベルのハッキングです。

一言アドバイス: Windows フッキング ソフトウェアを開発する場合: 頻繁に保存し、頻繁に保存してください! 間違えると、大量のアプリケーションが一度にクラッシュする可能性があります...

于 2012-04-10T19:14:57.470 に答える