1

私は単純なdllを作成しました。プロセスに注入していますが、メッセージ ボックスが表示されません。メッセージ ボックスのコードは dll で記述されています。

dll コード:

//DLL TEST
#include <windows.h>

BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) {
     if(callReason == DLL_PROCESS_ATTACH)
                   MessageBox(0, "Dll Injection Successful! ", "Dll Injector", MB_ICONEXCLAMATION | MB_OK);
     return TRUE;
}
4

1 に答える 1

4

まず第一に、DLL を注入するために使用するコードを投稿していないか、少なくともどの方法で注入するかについて説明していません。

それにもかかわらず、あなたのコードには大きな問題があります。DllMainMessageBox内で呼び出そうとします。Kernel32.dll の関数のみを使用し、初期化できない形式の User32.dll を使用しない方が安全です。MSDN読むことができます

Kernel32.dll 以外の DLL を必要とする関数を呼び出すと、診断が困難な問題が発生する場合があります。たとえば、ユーザー、シェル、および COM 関数を呼び出すと、一部の関数が他のシステム コンポーネントを読み込むため、アクセス違反エラーが発生する可能性があります。

于 2011-02-05T17:33:08.837 に答える