// ntdll调用.cpp : 代码 vc6.0 + winxp编译
//
#include "stdafx.h"
#include "windows.h"
typedef DWORD(WINAPI *NtTerminateThread)
(
HANDLE, //句柄
UINT //退出码
);
//测试线程
DWORD WINAPI ThreadProc(LPVOID lParam)
{
int i=0;
while (1)
{
Sleep(10);
printf("线程1运行中 %d\n", i++);
}
return 0;
}
int main(int argc, char* argv[])
{
DWORD id,exitcode;
HANDLE hThread;
hThread = CreateThread( NULL, NULL, &ThreadProc, NULL, FALSE, &id); //创建测试线程
HMODULE hModule = LoadLibrary("ntdll"); //加载dll
if (hModule != 0)
{
NtTerminateThread pNT;
pNT = (NtTerminateThread)GetProcAddress( hModule, "ZwTerminateThread"); //得到函数地址
Sleep(100); //让测试线程有时间运行
pNT( hThread, 360); //强制结束测试线程
Sleep(100); //延时 以便得到退出码.
}
GetExitCodeThread( hThread, &exitcode); //得到退出码打印
printf("退出代码为%d\n", exitcode);
CloseHandle(hModule); //关闭句柄
CloseHandle(hThread);
return 0;
}
用户模式下调用ntdll.dll中NativeApi的测试
最新推荐文章于 2021-11-19 11:31:12 发布