新聞中心
在C語言中,隱藏進(jìn)程通常涉及到操作系統(tǒng)級(jí)別的知識(shí),不同的操作系統(tǒng)有不同的方法來實(shí)現(xiàn)進(jìn)程隱藏,在這里,我將詳細(xì)介紹在Windows和Linux系統(tǒng)中如何實(shí)現(xiàn)進(jìn)程隱藏。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比順城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式順城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋順城地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
1、Windows系統(tǒng)
在Windows系統(tǒng)中,可以通過修改進(jìn)程的屬性來實(shí)現(xiàn)進(jìn)程隱藏,具體步驟如下:
(1)創(chuàng)建一個(gè)新的進(jìn)程,并將其屬性設(shè)置為隱藏,這可以通過調(diào)用CreateProcess函數(shù)來完成,以下是一個(gè)示例代碼:
#include#include #include int main() { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; // 設(shè)置窗口標(biāo)志為不顯示窗口 si.wShowWindow = SW_HIDE; // 設(shè)置窗口狀態(tài)為隱藏 // 創(chuàng)建新進(jìn)程 if (!CreateProcess(NULL, // 可執(zhí)行文件名 "C:\WindowsSystem32 otepad.exe", // 命令行參數(shù) NULL, // 進(jìn)程安全屬性 NULL, // 線程安全屬性 FALSE, // 繼承句柄 CREATE_NEW_CONSOLE, // 創(chuàng)建標(biāo)志 NULL, // 環(huán)境變量 NULL, // 當(dāng)前目錄 &si, // 啟動(dòng)信息 &pi // 進(jìn)程信息 )) { printf("CreateProcess failed: %d ", GetLastError()); return 1; } // 等待進(jìn)程結(jié)束 WaitForSingleObject(pi.hProcess, INFINITE); // 關(guān)閉進(jìn)程和線程句柄 CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return 0; }
(2)修改進(jìn)程的窗口標(biāo)題,以使其與系統(tǒng)其他進(jìn)程的標(biāo)題區(qū)分開來,這可以通過調(diào)用SetConsoleTitle函數(shù)來完成,以下是一個(gè)示例代碼:
#include#include #include #include #include int main() { HANDLE hProcess; PROCESSENTRY32 pe32; DWORD dwPriorityClass; BOOL bGotOwner = FALSE; TCHAR szExeFile[MAX_PATH]; STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; // 設(shè)置窗口標(biāo)志為不顯示窗口 si.wShowWindow = SW_HIDE; // 設(shè)置窗口狀態(tài)為隱藏 GetModuleFileName(NULL, szExeFile, MAX_PATH); // 獲取可執(zhí)行文件名 // 打開進(jìn)程快照,找到目標(biāo)進(jìn)程ID(PID) HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot == INVALID_HANDLE_VALUE) { printf("CreateToolhelp32Snapshot failed: %d ", GetLastError()); return 1; } pe32.dwSize = sizeof(PROCESSENTRY32); if (!Process32First(hSnapshot, &pe32)) { // 獲取第一個(gè)進(jìn)程信息塊(PEB)的地址和大小,并遍歷所有進(jìn)程信息塊(PEB)以查找目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class) printf("Process32First failed: %d ", GetLastError()); CloseHandle(hSnapshot); // 關(guān)閉進(jìn)程快照句柄并退出程序(如果找不到目標(biāo)進(jìn)程ID(PID),則返回錯(cuò)誤代碼) return 1; } else { // 如果找到了目標(biāo)進(jìn)程ID(PID),則將其優(yōu)先級(jí)類(priority class)設(shè)置為最低優(yōu)先級(jí),并繼續(xù)查找下一個(gè)進(jìn)程信息塊(PEB)以確認(rèn)是否找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句柄(hSnapshot)的句柄值相同,即找到了目標(biāo)進(jìn)程ID(PID)和優(yōu)先級(jí)類(priority class)相同且名稱相同的進(jìn)程信息塊(PEB)和進(jìn)程快照句跡
文章題目:c語言怎么隱藏進(jìn)程
網(wǎng)頁鏈接:http://www.5511xx.com/article/dhoihpd.html


咨詢
建站咨詢
