我想从 ntdll.dll 调用一些 Nt 函数,我正在像上面那样做。
对于调用: NtTestAlert() ,您需要典型的 ntcall 内核例程,可通过 int 2Eh 访问。(从这里我得到了 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;
}