10

コモディア さんのコメント

Windows 8 のモダン UI では DLL インジェクションはできません。DLL を Metro アプリにインジェクトすることはできますが、Winsock トラフィックを localhost にリダイレクトすることはできません。

つまり、サンドボックス環境で動作する Windows Metro アプリケーションであり、DLL インジェクションは実行できません。

Nektraの言葉を見てみましょう 。

カーネル モード ドライバーの署名に使用されるようなクロス証明書を使用して DLL に署名する必要があることに気付きました。WinRT アプリケーションに DLL を挿入する方法は既にありました。System32 フォルダー内に DLL ファイルをコピーすれば、出来上がりです。

ご覧のとおり、Komodia と Nektra は相反する情報を述べています。私の質問は、Windows 8 での DLL インジェクションの背後にある本当のことは何ですか?

4

4 に答える 4

10

私は Nektra の記事の著者です。この調査は、Windows 8 に付属する制限付きの Metro Mail アプリケーションにさらに機能を追加したいと考えたときに始まりました。

通常、メトロ アプリは中断されているため、プロセスはデスクトップ アプリケーションとまったく同じではありませんでしたが、最初の DCOM サービスをフックしました。

DCOM サービスが Metro Mail アプリケーションを起動すると、その時点でよく知られているメソッド CreateRemoteThread/LoadLibrary 呼び出しを使用して dll を挿入します。

最初のテストでは、同じフォルダーにある dll を挿入しようとしましたが、テストが見つかったところ、dll が system32 にある場合は正常に読み込まれることがわかりました。

後でさらに調査を行い、system32 フォルダーにない場合に dll が読み込まれなかった理由を確認します。

winsock のフックについてはテストしていませんが、少なくともデスクトップ コンピューターでは、metro の背後には一般的に知られている dll (kernel32、user32 など) があり、いくつかの API を問題なくフックしたため、可能なはずだと思います。

于 2013-04-29T20:48:15.223 に答える
9

私は Komodia の記事の著者であり、私たちの記事は Nektra と競合しません。Metro アプリまたは Metro アプリを実行するサンドボックスをフックすることは可能ですが、フックのためではなく、localhost に接続できません。これは、localhost 接続に対する Metro の制限のためです。最初のテストでは、Win7 WFP (ネットワーク ドライバー) を使用し、パケットの IP を localhost に変更しましたが、これは Metro アプリでは機能しませんでした。NDIS は同じようには機能しません。これを行う唯一の方法は、Microsoft のWFP プロキシ リダイレクト。

おそらく誰かが最終的にローカルホストへの直接接続を可能にするハックを見つけるか、すでに見つけているでしょうが、他のハッキングと同様に、考慮すべきリスクがあります。承認された方法が必要な場合は、WFP プロキシ リダイレクトが唯一の方法です。

于 2013-04-29T23:50:49.753 に答える
4

他の誰もがこれについて的外れなので、私はここに答えます。dll ファイルには、「すべてのアプリケーション パッケージ」グループに対する読み取り/実行権限が必要です。これにより、ローダーは没入型アプリ (=メトロ アプリ) で任意の dll をロードできるようになります。

奇跡

于 2015-08-18T03:37:53.240 に答える
2

最初のテストでは、同じフォルダーにある dll を挿入しようとしましたが、テストが見つかったところ、dll が system32 にある場合は正常に読み込まれることがわかりました。

はい、System32 はMetro (Windows ストア) アプリケーションの検索順序に含まれているためです。それに魔法はありません。

同様に、テストのフォルダーがアプリの DLL 検索順序 (System32、アプリのパッケージ依存関係グラフなど) にない可能性が高いため、ローダーはアプリの DLL を見つけられません。

于 2013-05-01T14:01:17.453 に答える