ntdll.dllからNt関数を呼び出したいのですが、上記のように実行しています。
NtTestAlert()を呼び出すには、int2Ehを介してアクセスできる一般的なntcallカーネルルーチンが必要です。(ここからNt関数を取得しましたhttp://undocumented.ntinternals.net/)
コードも未完成です、私は得ています:
*エラーC2664:'_ ntcall':パラメータ1を'int'から'MESS( _stdcall )'に変換できません
#include <iostream>
#include <windows.h>
#include <Ntsecapi.h>
using namespace std;
typedef int(__stdcall MESS)(unsigned int);
void __ntcall(MESS *msg)
{
__asm
{
int 2Eh;
}
}
int main(void)
{
MESS *me = 0;
int result = 0;
HINSTANCE__ *hModule= LoadLibrary(L"C:\\Windows\\System32\\ntdll.dll");
if(hModule != 0)
{
me = (MESS*)GetProcAddress(hModule, "NtTestAlert");
if(me != 0)
{
unsigned int type = 1;
result = (__ntcall((*me)(type)));
}
else
{
cout << "Error Load function!" << endl;
}
FreeLibrary(hModule);
}
else
{
cout << "Error load Dll!" << endl;
}
return 0;
}