// 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的測試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.