我知道的有三種方法
這裡的第三種和第二種是一樣的 隱藏程序也可以在這麼做手腳
但需要注意多執行緒,在操作前,理應加鎖
1.暴力列舉程序 通過pslookupprocessbyprocessid/cid獲得eprocess
第乙個引數我們使用迴圈 填入0~65535
for (ulong i = 0; i < 65535; i += 4)
return status_success;
其中注入pslookupprocessbyprocessid會導致bypass,建議使用cid
2.通過zwquerysysteminformation
3.通過程序活動連來列舉
**如下:
#include "ntddk.h"
typedef struct _process_info
processinfo,*pprocessinfo;
typedef struct _system_threads
system_threads,*psystem_threads;
typedef struct _system_process_information system_process_information, *psystem_process_information;
typedef enum _system_information_class
system_information_class;
typedef ntstatus (*zwquerysysteminformation)(
_in_ system_information_class systeminformationclass,
_inout_ pvoid systeminformation,
_in_ ulong systeminformationlength,
_out_opt_ pulong returnlength
);ntstatus
pslookupprocessbyprocessid(
in handle processid,
out peprocess *process
);ntkernelapi uchar* psgetprocessimagefilename(peprocess process);
void enumprocessbyzw()
status = zwquerysysteminformation(systemprocessesandthreadsinformation,0,0,&retusize);
if(retusize==0)
allsize = exallocatepool(nonpagedpool,retusize);
if(allsize==0)
status = zwquerysysteminformation(systemprocessesandthreadsinformation,allsize,(ulong)retusize,&retusize);
if(!nt_success(status))
processinfo = (system_process_information*)allsize;
while (processinfo->nextentryoffset)
*/ processinfo = (system_process_information*)((ulonglong)processinfo + processinfo->nextentryoffset);
} exfreepool(allsize);
}//暴力列舉pid,列舉程序
ntstatus searchprocesspid(ulong pid) }
void enumprocessbylink()
; eprocess = (ulonglong)psgetcurrentprocess();
p_head = (plist_entry)(eprocess+0x188);
p_list = p_head;
while (p_list->flink!=p_head)
kdprint(("processnum:%d",processnum));
}#define active_process_link 0x188
//通過eprocess列舉程序
ntstatus searchprocesseprocess()
} while (process != null);
return status;
} void driverunload(pdriver_object pdriverobject)
ntstatus driverentry(pdriver_object pdriverobject,punicode_string punicodestring)
測試平台:win7 x64 build 7601
windows核心程式設計 程序許可權總結
1 首先,乙個程序要進行特權操作,例如修改其他程序記憶體資料的話,必須要有比較大的特權,一般來說,只有管理員賬號有這個許可權,那麼我們程式的第一件事情,就是確認當前啟動這個程序 的賬號,是否為管理員賬號 可以把這個函式當windows api來使用,這個函式返回bool值,當函式返回true成功,當...
列舉程序控制代碼
目前正在做的專案進行效能測試,被通知程序控制代碼數已經到達2600多,心中甚是一驚,用procexp檢視控制代碼表得知,為型別為key的控制代碼,名稱為 registry hklm microsoft ctf assemblyitem.基本上得知是輸入法關聯的登錄檔項,而後用procmon監視登錄檔...
列舉程序資訊
1.psapi法 include include include include psapi.h pragma comment lib,psapi.lib int main numofprocess cbneededprocess sizeof dword for uint i 0 i3.wtsop...