麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

教你如何對一個(gè)可執(zhí)行程序進(jìn)行攔截和包裝?

2024-07-26 00:27:16
字體:
供稿:網(wǎng)友
  文中一共討論了3種方法,來實(shí)現(xiàn)對【函數(shù)】進(jìn)行攔截:
 
  在編譯階段插樁;
  在鏈接階段插樁;
  在執(zhí)行階段插樁;
  昨天一個(gè)網(wǎng)友提了另外一個(gè)問題:如何對一個(gè)可執(zhí)行程序進(jìn)行攔截?

  這里就引出一個(gè)問題了:
 
  既然上面這6個(gè)命令都鏈接到systemctl,那么當(dāng)systemctl被執(zhí)行的時(shí)候,它是如何知道它是被哪一個(gè)命令調(diào)用的呢?
 
  看一下源碼就知道了:通過參數(shù) argv[0] 來獲得的。
 
  我們知道,main函數(shù)通過argc和argv[]來獲取所有的參數(shù),如下:
 
  復(fù)制
  // 測試文件:test1.c
 
  #include <stdio.h>
 
  int main(int argc, char *argv[])
  {
      printf("argc = %d /n", argc);
      for (int i = 0; i < argc; i++)
           printf("argv[%d] = %s /n", i, argv[i]);
      return 0;
 
  可以看到:argv[0] = ./test1,因?yàn)槲覀兪窃诿钚兄苯诱{(diào)用test可執(zhí)行程序的,這很容易理解。
 
  那么:如果test是被一個(gè)軟鏈接調(diào)用的呢?
 
  測試一下,創(chuàng)建軟鏈接:
 
  復(fù)制
  $ ln -s test1 link1
  1.

  執(zhí)行一下:
 
  此時(shí),argv[0] = ./link1。
 
  也就是說:第一個(gè)參數(shù)存放的是軟鏈接文件路徑,systemctl 的道理也是如此!
 
  知道了這個(gè)原理,那我們就可以在reboot與systemc之間橫叉一刀,增加一個(gè)中間可執(zhí)行文件:
 
  為了便于描述,我們把這個(gè)中間文件創(chuàng)建為腳本pre_systemctl.sh,然后把root軟鏈接到這個(gè)腳本。
 
  注意:在理解原理之前,建議不要直接用 reboot 等系統(tǒng)命令進(jìn)行操作,可以自己寫一些測試程序,例如上面的 test。
 
  創(chuàng)建了pre_systemctl.sh腳本之后,并且把reboot軟鏈接到它,在腳本中輸入如下內(nèi)容:
 
  此時(shí),在命令行中執(zhí)行reboot命令,就會(huì)執(zhí)行這個(gè)腳本,并且這個(gè)腳本也能夠正確的把/sbin/root作為第0個(gè)參數(shù)傳遞給/bin/systemctl,如下圖所示:
 
  在這個(gè)腳本中,可以在執(zhí)行systemctl之前,做任何需要關(guān)機(jī)前需要處理的一些事情。
 
  問題似乎是解決了,但是好像還有一個(gè)問題:
 
  如果用戶在執(zhí)行命令時(shí)輸入了一些其它的參數(shù),這個(gè)腳本程序也應(yīng)該透明的把這些參數(shù)傳遞給 systemctl 才可以!
 
  為了便于觀察,我們在腳本中多打印個(gè)參數(shù),并通過exec來啟動(dòng)systemctl,并且強(qiáng)制把參數(shù)$0設(shè)置為systemctl的第0個(gè)參數(shù):
 
  這個(gè)腳本文件中的重點(diǎn)是最后一條命令:
 
  復(fù)制
  exec -a $0 /bin/systemctl $*
  1.
  此時(shí),在命令行中執(zhí)行reboot指令,輸出如下:
 
  如此調(diào)用systemctl,就解決了剛才提出的問題,而且通過 $*,可以把任意多個(gè)參數(shù)透明的傳遞下去。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 污片在线观看视频 | 国产精品自拍啪啪 | 日韩一级免费毛片 | 毛片在线免费视频 | 免费在线观看午夜视频 | 91九色福利 | 宅男噜噜噜66一区二区 | 欧美一级毛片特黄黄 | 护士hd老师fre0性xxx | 综合图区亚洲 | 久久美女免费视频 | 久久亚洲精品11p | 国产精品观看在线亚洲人成网 | 成人一级黄色大片 | 国产毛片自拍 | 国产精品18久久久久久久 | 久久国产精品久久久久久 | 久草网在线 | 农村寡妇偷毛片一级 | 久久国产乱子伦精品 | 日韩电影一区二区三区 | 香蕉国产片| 国产一区二区三区精品在线观看 | 亚洲午夜国产 | 黄色影院在线看 | 欧美人与牲禽动交精品一区 | 超碰97最新 | 国产精品免费麻豆入口 | 色啪综合| 国产精品成人久久 | 一区二区三区日韩在线观看 | 一本色道久久综合亚洲精品图片 | 日韩毛片网 | 91精品国产91久久久 | 亚洲国产综合在线观看 | 亚洲一区在线免费视频 | 97风流梦电影 | 久久综合入口 | www.理论片 | 一级免费特黄视频 | 欧美aaaaa一级毛片在线 |