首页
社区
课程
招聘
[求助]问个关于ZwClose的问题
发表于: 2009-2-15 15:34 5465

[求助]问个关于ZwClose的问题

2009-2-15 15:34
5465
我没有进r0,只是在r3下用ntdll.dll的导出函数——ZwClose而已。代码如下:

#include "stdafx.h"
#include "sss.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif

typedef   LONG NTSTATUS;
#define STATUS_SUCCESS      ((NTSTATUS)0x00000000L)
#define OBJ_CASE_INSENSITIVE    0x00000040L
#define OBJ_KERNEL_HANDLE       0x00000200L
#define STATUS_ACCESS_DENIED  ((NTSTATUS)0xC0000022L)

// 唯一的应用程序对象


CWinApp theApp;

using namespace std;


typedef NTSTATUS  (__stdcall *pZwClose)(IN HANDLE Handle);

BOOL EnableDebugPrivilge(LPCSTR lpName, BOOL fEnable)
{
        HANDLE hObject;
        LUID Luid;
        TOKEN_PRIVILEGES NewStatus;

        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
                return FALSE;

        if (LookupPrivilegeValue(NULL, lpName, &Luid))
        {
                NewStatus.Privileges[0].Luid = Luid;
                NewStatus.PrivilegeCount = 1;
                NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;

                AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
                
                CloseHandle(hObject);
                return TRUE;
        }
        
        return FALSE;
}

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// 初始化 MFC 并在失败时显示错误
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: 更改错误代码以符合您的需要
		_tprintf(_T("错误: MFC 初始化失败\n"));
		nRetCode = 1;
	}
	else
	{
		// TODO: 在此处为应用程序的行为编写代码。


		EnableDebugPrivilge(SE_DEBUG_NAME,TRUE);
		

		HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS, FALSE, 3668);

		HMODULE hModule=LoadLibrary("ntdll.dll");
		
		pZwClose ZwClose=(pZwClose)GetProcAddress(hModule,"ZwClose");
		ZwClose(hProcess);
		cout<<GetLastError();
		
	}

	return nRetCode;
}



3668是我在任务管理器里看到的PID,放进来OpenProcess为什么不可以?总是得不到进程的伪句柄,难道函数类型不能混用?我在其他的程序里没用到Zw*函数的定义的话,可以顺利地OpenProcess得到句柄的。

我是新手,能不能帮我解答下?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
你GetLastError检测一下错误码,看是为什么失败。
2009-2-15 21:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有能看出任何错误...
2009-2-27 18:13
0
游客
登录 | 注册 方可回帖
返回