最近看WINDOWS核心编程,把书上的代码试了一下,发现枚举进程和模块的时候好像有问题。。 我用的是Toolhelp函数,先CreateToolhelp32Snapshot创建映像,再Module32First,Module32Next枚举,一开始不能枚举系统进程的模块,CreateToolhelp32Snapshot返回Oxffffffff,GetLastError是拒绝访问。后来发现书上多用了一个EnableDebugPrivilege函数提升到SE_DEBUG_NAME权限的,就加上去,这下能访问winlogon之类的系统进程了,但还是有两个进程拒绝访问,是卡巴6的avp.exe和天网的pfw.exe,也是和上面一样,返回0xffffff,拒绝访问,问一下,什么原因?如何解决?能贴出代码就更好了。。。
这是EnableDebugPrivilege的代码
代码:
BOOL EnableDebugPrivilege(BOOL fEnable) {
// Enabling the debug privilege allows the application to see // information about service applications BOOL fOk = FALSE; // Assume function fails HANDLE hToken;
// Try to open this process's access token if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {
// Attempt to modify the "Debug" privilege TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid); tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL); fOk = (GetLastError() == ERROR_SUCCESS); CloseHandle(hToken); } return(fOk); }
[此贴被 处女座的沙加(virgoshaka) 在 03月15日01时24分 编辑过]
[此贴被 处女座的沙加(virgoshaka) 在 03月15日01时33分 编辑过]
|