ページ 11

DLLインジェクションをしたいが、WOW64に阻まれる

Posted: 2012年9月19日(水) 16:19
by shiro4ao
久しぶりDLLインジェクションをしようとおもったのですが、
DLLのロードがsysWOW64内のuser32.dllから始まるため、
それ以降の呼び出しはすべてsysWOW64内のDLLを使うせいで
自作のDLLを挿入する隙がありませんでした。

置換する目標であるSHELL32.DLLまでの呼び出しは以下のとおりでした。
(dependencywalkerにて確認)
USER32.DLL
ADVAPI32.DLL
WINTRUST.DLL
CRYPT32.DLL
USERENV.DLL
SHELL32.DLL

おそらく、OSがアプリケーションが32bit版であることを察知してsysWOW64フォルダにあるDLL群をロードさせることが
原因だと思うのですが、それを回避して自作DLL(SHELL32.dll)を本物の代わりに読み込ませることができるでしょうか?

読み込ませたいアプリケーションと、偽DLL(SHELL32.dll)まで必要な上記DLLを同じフォルダに入れて実行してみたところ
sysWOW64内のUSER32.DLLが呼び出されたためか、以降のDLLがsysWOW64由来のものになり
自作DLLの挿入がうまくいきませんでした。


さすがに、"C:\Windows\SysWOW64\SHELL32.DLL"を偽DLLで上書きするのは影響が大きすぎるので避けたいと思います。

Re: DLLインジェクションをしたいが、WOW64に阻まれる

Posted: 2012年9月20日(木) 16:19
by shiro4ao
いろいろと試してみたのですが、私には無理そうでした、sysWOW64を置換するより他思いつきません。
一応これでトピックは閉じさせて頂きます。
ありがとうございました。

Re: DLLインジェクションをしたいが、WOW64に阻まれる

Posted: 2012年9月20日(木) 19:03
by ISLe
DLLインジェクションが脆弱性だということで、システムDLLは絶対パスで読み込む(システムディレクトリ以外からは読み込まない)ようになっているはずです。
著名なアプリケーションの多くも特定のディレクトリ以外からDLLを読み込まないよう対策するようになっています。