kernel32.dll から Sleep 関数を呼び出しているだけなので、このコードの何が問題なのか教えてください。何が問題なのですか? 私は Visual Studio 2008 を使用しています。どうもありがとうございました。
__asm
{
mov eax, 77e2ef66h
push 9999
call eax
}
kernel32.dll から Sleep 関数を呼び出しているだけなので、このコードの何が問題なのか教えてください。何が問題なのですか? 私は Visual Studio 2008 を使用しています。どうもありがとうございました。
__asm
{
mov eax, 77e2ef66h
push 9999
call eax
}
そのマジックナンバーはどこで手に入れたの77e2ef66h
ですか?通常、インラインアセンブラからWin32 API関数を呼び出す場合は、次のようにします。
__asm
{
push 9999
call Sleep
}
Win32の関数には、固定アドレスがありません(「DLLエクスポートビューア」に表示される内容に関係なく)。関数は、ロード時に(Windows PEローダーによって)名前または序数でリンクされ、固定アドレスには配置されません。実際、関数の実際のアドレスは、Windowsのバージョン間、同じバージョンのWindows内のサブリリース間、マシン間、さらにはプログラムの実行ごとに変わる可能性があります。
(免責事項:これを行ってから非常に長い時間が経過しているため、上記のコード例の詳細は間違いなく間違っていますが、マジックナンバーを使用する必要はないことを私は知っています。)