新聞中心
在 Linux 操作系統(tǒng)中,進(jìn)程的唯一標(biāo)識(shí)符(PID)是其身份證號(hào)碼。PID 是操作系統(tǒng)為每個(gè)正在執(zhí)行或“睡眠”中的進(jìn)程分配的唯一數(shù)字標(biāo)識(shí)符。每個(gè)進(jìn)程都有一個(gè)唯一的 PID,這個(gè) PID 非常重要,因?yàn)樗试S我們?cè)诓煌某绦蜷g進(jìn)行通信和管理它們的資源。在這篇文章中,我們將探究如何使用十六進(jìn)制 hook PID 的方法來(lái)實(shí)現(xiàn)進(jìn)程的跟蹤和監(jiān)控。

創(chuàng)新互聯(lián)建站專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、中方網(wǎng)絡(luò)推廣、成都微信小程序、中方網(wǎng)絡(luò)營(yíng)銷(xiāo)、中方企業(yè)策劃、中方品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供中方建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):028-86922220,官方網(wǎng)址:www.cdcxhl.com
一、初步認(rèn)識(shí) Hook
在 Linux 操作系統(tǒng)中,Hook 是非常重要的一個(gè)概念。它允許我們截取操作系統(tǒng)流程的某個(gè)點(diǎn),然后對(duì)它進(jìn)行修改。例如,我們可以使用 Hook 實(shí)現(xiàn)對(duì) Linux 內(nèi)核的監(jiān)控、攔截和過(guò)濾等功能,從而加強(qiáng)系統(tǒng)的安全和穩(wěn)定性。
Hook 有兩種實(shí)現(xiàn)方法,一種是軟件 Hook,另一種是硬件 Hook。軟件 Hook 是通過(guò)修改系統(tǒng)函數(shù)的地址指針來(lái)實(shí)現(xiàn)的,而硬件 Hook 是通過(guò)修改一些硬件的寄存器地址來(lái)實(shí)現(xiàn)的。本文將著重講解軟件 Hook 的實(shí)現(xiàn)方法。
二、Hook PID 基本原理
Hook PID 的基本思路是:當(dāng)一個(gè)進(jìn)程啟動(dòng),它將映射到內(nèi)存中,而 PID 是內(nèi)核為每個(gè)進(jìn)程分配的一個(gè)數(shù)字。我們可以通過(guò)修改進(jìn)程映射到內(nèi)存中的 PID,使得我們能夠?qū)@個(gè)進(jìn)程進(jìn)行跟蹤和監(jiān)控。
在 Linux 操作系統(tǒng)中,PID 存儲(chǔ)在進(jìn)程表中。每個(gè)進(jìn)程都有自己的進(jìn)程表項(xiàng),其中包括進(jìn)程的 PID、進(jìn)程的狀態(tài)和進(jìn)程的資源信息等。我們可以通過(guò)修改進(jìn)程表中的 PID 值,來(lái)實(shí)現(xiàn) Hook PID 的功能。
三、Hook PID 實(shí)現(xiàn)方法
下面我們來(lái)看一下如何實(shí)現(xiàn) Hook PID。
1、獲取進(jìn)程表
要實(shí)現(xiàn) Hook PID,我們首先需要獲取進(jìn)程表的指針。我們可以使用 proc 文件系統(tǒng)來(lái)獲取,該文件系統(tǒng)是 Linux 操作系統(tǒng)提供的一個(gè)虛擬文件系統(tǒng),可以讓我們獲取操作系統(tǒng)中的進(jìn)程信息。
在 proc 文件系統(tǒng)中,每個(gè)進(jìn)程都是一個(gè)目錄,以其 PID 為目錄名稱(chēng)。因此,我們可以通過(guò)遍歷 proc 文件系統(tǒng)中的所有進(jìn)程目錄,來(lái)得到一個(gè)進(jìn)程表的指針。
示例代碼:
“`
struct task_struct *task;
for_each_process(task) {
printk(KERN_INFO “pid: %d, command: %s\n”, task_pid_nr(task), task->comm);
}
“`
2、Hook 函數(shù)
Hook 函數(shù)是 Hook PID 的核心。Hook 函數(shù)的作用是截取目標(biāo)進(jìn)程的啟動(dòng)函數(shù),并將其修改為我們的 Hook 函數(shù)。這樣,在目標(biāo)進(jìn)程啟動(dòng)時(shí),我們的 Hook 函數(shù)就會(huì)被調(diào)用,從而實(shí)現(xiàn)了 Hook PID 的功能。
Hook 函數(shù)的實(shí)現(xiàn)方法比較復(fù)雜,這里我們只介紹常見(jiàn)的兩種實(shí)現(xiàn)方法:修改 GOT 表和修改 ELF 表。
(1)修改 GOT 表
GOT(全局偏移表)是一張全局變量地址、函數(shù)地址等的表格,它是 ELF 格式文件中的一部分。在啟動(dòng)程序時(shí),操作系統(tǒng)會(huì)將 GOT 表中的地址重定向?yàn)閷?shí)際地址。我們可以通過(guò)修改 GOT 表中的函數(shù)地址,來(lái)實(shí)現(xiàn) Hook 函數(shù)。
示例代碼:
“`
int new_execve(const char *filename, char *const argv[], char *const envp[]) {
printk(KERN_INFO “pid=%d, command=%s\n”, current->pid, filename);
return old_execve(filename, argv, envp);
}
unsigned long cr0;
alinkage int hook_start(void) {
spin_lock(&calltable_lock);
old_execve = (void *) sys_table[__NR_execve];
cr0 = read_cr0();
write_cr0(cr0 & ~0x00010000);
sys_table[__NR_execve] = (unsigned long) new_execve;
write_cr0(cr0);
spin_unlock(&calltable_lock);
return 0;
}
alinkage void hook_stop(void) {
spin_lock(&calltable_lock);
write_cr0(cr0 & ~0x00010000);
sys_table[__NR_execve] = (unsigned long) old_execve;
write_cr0(cr0);
spin_unlock(&calltable_lock);
}
“`
(2)修改 ELF 表
在 ELF 格式文件中,每個(gè)函數(shù)都有自己獨(dú)特的 ELF 表,它包含了函數(shù)的名稱(chēng)、地址等信息。我們可以通過(guò)修改 ELF 表中的地址,來(lái)實(shí)現(xiàn) Hook 函數(shù)。
示例代碼:
“`
int new_execve(const char *filename, char *const argv[], char *const envp[]) {
printk(KERN_INFO “pid=%d, command=%s\n”, current->pid, filename);
return old_execve(filename, argv, envp);
}
static int hook_start(void) {
ftrace_mod = find_module(“ftrace_hook”);
if (!ftrace_mod) {
printk(KERN_INFO “module not found.\n”);
return -1;
}
int res = kallsyms_lookup_name(“sys_call_table”, (unsigned long *)&sys_call_table);
if (res != 0) {
printk(KERN_INFO “l(fā)ookup sys_call_table fled.\n”);
return -1;
}
res = kallsyms_lookup_name(“__x64_sys_execve”, &orig_execve);
if (res != 0) {
printk(KERN_INFO “l(fā)ookup __x64_sys_execve fled.\n”);
return -1;
}
orig_ins = *(unsigned char *) orig_execve;
*(unsigned char *) orig_execve = 0xE9;
*(unsigned long *)(orig_execve + 1) = (unsigned long) new_execve – (unsigned long) orig_execve – 5;
return 0;
}
static void hook_stop(void) {
*(unsigned char *) orig_execve = orig_ins;
}
“`
四、
在本文中,我們介紹了如何使用十六進(jìn)制 hook PID 的方法來(lái)實(shí)現(xiàn)進(jìn)程的跟蹤和監(jiān)控。我們了解了 Hook 的基本概念和作用。然后,介紹了 Hook PID 的基本原理和實(shí)現(xiàn)方法。我們通過(guò)兩種常見(jiàn)的 Hook 函數(shù)的實(shí)現(xiàn)方法,介紹了具體的代碼實(shí)現(xiàn)過(guò)程。
需要注意的是,在實(shí)際開(kāi)發(fā)中,我們需要深入了解 Linux 內(nèi)核的結(jié)構(gòu)和機(jī)制,并且不斷優(yōu)化 Hook 代碼,以提高 Hook PID 的效率和精確度。同時(shí),由于 Hook 技術(shù)往往會(huì)被惡意軟件所利用,我們也需要注重 Hook 技術(shù)的安全性和風(fēng)險(xiǎn)評(píng)估。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220在linux下通過(guò)什么命令可以知道相應(yīng)PID的路徑
你去電腦官方網(wǎng)站查詢(xún),有在線(xiàn)電腦免費(fèi)服務(wù)人員幫助你,相信我沒(méi)錯(cuò)的,采納我吧,求你了
你的意思是,知道某個(gè)進(jìn)程的PID,然后希望找到該進(jìn)程執(zhí)行的程序的路徑吧
可以使用這種方法:
ls -l /proc/$PID/exe
上面的$PID就是那個(gè)PID,比如慎襲明
$ ls -l /proc/2594/exe
lrwxrwxrwx 1 jason jason 0 Oct 16 17:15 /proc/2594/exe -> /home/jason/download/qterm-0.5.12/build/src/qterm
$ ls -l /proc/2023/exe
lrwxrwxrwx 1 jason jason 0 Oct 16 17:10 /proc/寬告2023/exe -> /bin/bash
后面分別指向禪告的是 home/jason/download/qterm-0.5.12/build/src/qterm 和 /bin/bash
就是該程序的完成路徑
#ps aux |grep PID號(hào)
記住進(jìn)程名
#find / -name “進(jìn)程名”
耐心等待,
可能有幾個(gè),我也不確定櫻亮,脊茄寬在研究中,呵呵
一般是/usr 或/in 或/納衫bin 開(kāi)頭的吧
ps aux | grep 你想知道的進(jìn)程名
top能夠看到。
linux hook pid的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux hook pid,探究 Linux 十六進(jìn)制 hook pid 實(shí)現(xiàn)方法,在linux下通過(guò)什么命令可以知道相應(yīng)PID的路徑的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專(zhuān)業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫(huà)冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
分享標(biāo)題:探究Linux十六進(jìn)制hookpid實(shí)現(xiàn)方法(linuxhookpid)
文章鏈接:http://m.fisionsoft.com.cn/article/dhdpsee.html


咨詢(xún)
建站咨詢(xún)
