|
分類:[C#]
俗に言う DLL Injection を使用したアプリを C++ (VS2005) から C# (VS2010) に移植しています。 (CreateRemoteThread + LoadLibrary を使用する方法です)
Injection される側は既存のアプリで、今回C#に移植したのは Inject する側のアプリです。 (位置づけとして、Inject する側はシステム全体の管理アプリです)
Vista 環境では何ら問題無く動作しましたが、Win 7 環境だとうまく動作しません。 ・Win7環境は、ドメインログオンしている ・管理アプリの動作は、 @LoadLibrary の引数(DLL名)用のメモリを確保する VirtualAllocEx もエラーなし (Injectされる側のプロセスメモリに確保するものです) ACreateRemoteThread も エラーなし。 GetExitCodeThread も 0 が返ってきている。 は確認しましたが、Inject した(はずの) DLL はロードされていません。 (PROCESS_ATTACH を通っていない)
アクセス権の不足かとも考えたのですが、それならAPIがそれなりのエラーを返 すと思います。 Vista環境では動作しているので、C#への移植は問題無いと思っていますが、
もし何か気付きあれば御教えください。
|