Windows 2000/XPで絶対に死ぬコード

thread_local std::string s;
extern "C"
__declspec(dllexport)

void fun(HWND hwnd,HINSTANCE hi,char *xx,int vv)
{
s = xx;
std::cout << s << std::endl;
MessageBoxA(hwnd,"test",xx,0);

}

BOOL APIENTRY DllMain
( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;

}

何の変哲もないDLLなのですが、Windows XPや 2000で rundll32 filename.dll,fun
を呼び出すとクラッシュします
memal
メモリ ロケーションのアクセスが無効です。

拡張カーネル v3.1hでは小細工して動くようにしてみました ・ω・
memal2

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です