私は Windows 7 マシンを使用しており、IDA で kernel32.dll を開こうとしましたが、IDA は IsDebuggerPresent 関数のアドレスが 0x77e2b020 であることを示しています。インライン アセンブリを使用して関数を呼び出そうとしています。
vs2010 プラットフォームで、次のコードを使用してみました:-
#include<iostream>
using namespace std;
int blah() {
__asm {
xor eax, eax
mov ebx, 0x77e2b020
call ebx
}
}
int main() {
cout<<blah();
return 0;
}
exe をビルドすると、kernel32.dll がロードされていることが示されます。
OllyDbg で exe をデバッグしようとしましたが、「call」命令を実行するとエラーが「アクセス違反」になります。
はい、C++ から API を直接呼び出すことが最善/正しい方法であることはわかっています。これは楽しみのためにやっているのですが、なぜこれが機能しないのかわかりません。