亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

GNUC庫----調試系統問題并進行修訂

2019-11-17 05:24:20
字體:
來源:轉載
供稿:網友

  一種調試 glibc 函數的好方法是用您自己的版本覆蓋所關注的函數。在沒有 root 許可權和不必重新編譯 libc 源代碼的情況下就可以完成這個任務。想象一下編寫您自己的 open() 版本該有多激動??!
  
  假如您沒有應用程序的源代碼并且由于 C 的 GNU 庫(glibc)函數正將某些錯誤信息返回給該應用程序而使它失敗,那么您該怎么辦?因為 glibc 是開放源碼,所以您當然可以獲得其源代碼、對它進行更改、重新構建和安裝。然而,這不適合那些膽怯的人,因為雖然 API 有很好的文檔說明,但 GNU C 庫的內部組織卻沒有。查找正確的函數原型只是眾多挑戰中的第一個。它還是一個很大的包,所以第一次編譯時,它將花一些時間(glibc 2.2.2 有 8552 個文件和 1775440 行代碼,包括注釋)。
  
  更好的方法
  比重新構建 glibc 更好的方法是選擇性地覆蓋一個函數。許多現代的 Unix 都支持預裝入用戶定義庫這一概念。這些庫可以是完整的替代(即,glibc 的專用版本)也可以是子集 ― 甚至是一個函數。首先,通過設置 LD_LIBRARY_PATH 來包含庫的專用版本,您可以使用 glibc 的專用版本??赏ㄟ^使用 LD_PRELOAD 環境值來使用您編寫的庫例程的子集。LD_LIBRARY_PATH 和 LD_PRELOAD 都是由動態 ELF 鏈接器/裝入器控制的。它使用第一個匹配來滿足任何符號名。通過預裝入您自己的庫或函數版本,您“短路”了正常路徑,這樣就答應您覆蓋它。
  
  這里是一個示例 makefile,它覆蓋 glibc 函數 setresgid():
  
  覆蓋 setresgid() 的 Makefile
   #
   # Makefile
   #
  
   all: libs setresgid-tester
  
   #
   # Make a shared Library
   #
   libs: libfuncs.c
       gcc -shared -Wl,-soname,libfuncs.so.1 -o libfuncs.so.1.0 libfuncs.c
       ln -s libfuncs.so.1.0 libfuncs.so.1
       ln -s libfuncs.so.1 libfuncs.so
  
   #
   # Here is a program that calls setresgid() for testing
   #
   setresgid-tester: setresgid-tester.c
       gcc -o setresgid-tester setresgid-tester.c
  文件 libfuncs.c 包含我的 setresgid() 專用版本。實現它以支持與原始 setresgid() 相同的參數數目時要小心,并在其它方面完成與原始 setresgid() 相同的操作,盡管我的版本欺騙該應用程序并始終返回 0。
  
  關注的第二個文件是 setresgid-tester.c。它通過調用 setresgid() 試驗新函數。
  
  這是動態庫的源代碼:
  
  替換庫
   /*
   Put all the functions you want to override here
   */
   #include
   #include
   #include
  
   int errno;
  
   int
   setresgid(rgid, egid, sgid)
       gid_t rgid,egid,sgid;
   {
    errno=1;
    printf("It me the shim, Hi there!/n");
    return(0);
  
   }
  
  您還需要一個簡單方法來測試您的 setresgid() 專用版本。可以使用 strace 或 ltrace 來監視進程運行。這是普通測試示例的源代碼:
  
  普通測試示例
   /*
    setresgid() system/library call tester
   */
   #include
   #include
   main(){
    setresgid(0,0,0);
   }
  
  現在,編譯該庫,設置 LD_PRELOAD shell 變量,然后運行測試應用程序。您可能還需要設置 LD_LIBRARY_PATH。
  
  運行測試應用程序
  eXPort LD_PRELOAD=libfuncs.so
  export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
  ./setresgid-tester
  It's me the shim, Hi there!
  
  還可以通過使用 ldd 列出動態鏈接庫來確認是否正在使用專用庫:
  
  確認專用庫的使用
  [jay@prion ld_preload]$ ldd setresgid-tester
      libfuncs.so => libfuncs.so (0x40018000)
      libc.so.6 => /lib/libc.so.6 (0x40022000)
      /lib/ld-Linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
  結束語
  編寫 GNU C 庫函數的專用版本是調試系統問題或進行快速修正的好方法。使用 LD_PRELOAD shell 變量,可以選擇性地用您自己的專用版本來覆蓋系統 C 庫函數。這種技術可用于 Linux 和 Solaris 環境。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频免费| 日韩av不卡在线| 国产精品人成电影| 欧美在线精品免播放器视频| 欧洲永久精品大片ww免费漫画| 性色av一区二区三区免费| 91在线观看欧美日韩| 日韩亚洲第一页| 国产性色av一区二区| 成人网页在线免费观看| 欧美日韩福利视频| 国产精品亚洲激情| 亚洲电影免费观看高清完整版在线| 96精品久久久久中文字幕| 亚洲欧美www| 国产脚交av在线一区二区| 欧美成人合集magnet| 欧美一级淫片丝袜脚交| 亚洲xxx视频| 亚洲jizzjizz日本少妇| 亚洲图片制服诱惑| 国产精品视频网址| 2020欧美日韩在线视频| 国产精品羞羞答答| 91精品国产高清久久久久久久久| 欧美国产精品人人做人人爱| 一区二区欧美久久| 国产精品成人一区二区三区吃奶| 精品无人区太爽高潮在线播放| 欧美激情乱人伦一区| 高跟丝袜一区二区三区| 美日韩在线视频| 98精品国产自产在线观看| 午夜精品理论片| 国产成人精品久久亚洲高清不卡| 色偷偷av一区二区三区乱| 欧美日韩国产一区中文午夜| 中文字幕在线精品| 久久久久久这里只有精品| 久久久成人精品视频| 欧美日韩成人在线播放| 亚洲激情视频网站| 国产视频久久网| 色天天综合狠狠色| 欧美高清电影在线看| 国产精品亚洲网站| 色哟哟网站入口亚洲精品| 北条麻妃99精品青青久久| 成人午夜黄色影院| 中文欧美在线视频| 国产一区二区av| 中文字幕日韩精品在线观看| 欧美性猛交xxxx乱大交| 日韩在线视频免费观看高清中文| 欧美老女人性生活| 亚洲乱码av中文一区二区| 国产日韩精品电影| 国产精品一二区| 国产成人精品视频| 中文字幕亚洲一区在线观看| 91亚洲精品在线| 久久久亚洲天堂| 亚洲日本成人女熟在线观看| 欧美日韩综合视频网址| 疯狂做受xxxx高潮欧美日本| 亚洲色图18p| 久久国内精品一国内精品| 国产男人精品视频| 日韩国产欧美精品在线| 大量国产精品视频| 欧美另类精品xxxx孕妇| 91av视频在线观看| 欧美激情久久久久久| 亚洲精品在线不卡| 欧美怡春院一区二区三区| 欧美日韩综合视频网址| 97国产精品人人爽人人做| 亚洲精品有码在线| 最近2019年日本中文免费字幕| 激情懂色av一区av二区av| 亚洲一区二区三区久久| 国内精品在线一区| 欧美www视频在线观看| 亚洲一区二区久久久久久| 福利精品视频在线| 亚洲欧美日韩精品久久奇米色影视| 国模私拍视频一区| 91精品久久久久久久久久久久久| 亚洲精品之草原avav久久| 亚洲va男人天堂| 色999日韩欧美国产| 国产香蕉97碰碰久久人人| 国产日韩一区在线| 国产欧美精品一区二区三区介绍| 国产成人激情小视频| 欧美激情亚洲国产| 久久精品国产91精品亚洲| 午夜免费在线观看精品视频| 国产一区二区三区视频免费| 日韩中文字幕视频在线| 国产xxx69麻豆国语对白| 成人亚洲激情网| 国产精品视频精品| 日韩网站免费观看| 欧美一区二区三区免费视| 亚洲专区国产精品| 亚洲成人性视频| 亚洲已满18点击进入在线看片| 国产精品av免费在线观看| 中文字幕精品一区二区精品| 亚洲片在线观看| 欧美成人免费在线视频| 国产91热爆ts人妖在线| 欧美日韩国产精品专区| 日韩在线观看免费全集电视剧网站| 国产精品99免视看9| 久久久欧美一区二区| 精品女同一区二区三区在线播放| 欧美精品在线视频观看| 日韩不卡在线观看| 久久综合久中文字幕青草| 日韩在线观看成人| 91免费高清视频| 国内精品久久久久影院 日本资源| 日韩av不卡在线| 日韩福利伦理影院免费| 一区二区福利视频| 亚洲国产精品va在线看黑人动漫| 久久久精品视频在线观看| 国产精品视频专区| 色综合久久精品亚洲国产| 久久精品国产免费观看| 97碰碰碰免费色视频| 亚洲欧美激情另类校园| 国产成+人+综合+亚洲欧洲| 久久久人成影片一区二区三区| 日韩中文字幕免费视频| 亚洲视频在线播放| 68精品国产免费久久久久久婷婷| 亚洲精品短视频| 国产美女直播视频一区| 国产成人午夜视频网址| 日韩中文字在线| 成人中文字幕在线观看| 亚洲电影免费观看高清完整版在线观看| 午夜精品久久久久久99热软件| 国产综合久久久久| 久久精品国产一区二区三区| 日韩av在线免费看| 欧美日韩亚洲一区二区三区| 亚洲乱码国产乱码精品精天堂| 午夜精品久久久久久久99热| 国产裸体写真av一区二区| 国产91精品黑色丝袜高跟鞋| 国产精品久久久久久五月尺| 国产精品综合不卡av| 日韩高清免费在线| 成人网页在线免费观看| 青草青草久热精品视频在线观看| 国产视频观看一区| 欧美电影免费观看大全| 亚洲精品日韩欧美| 26uuu另类亚洲欧美日本老年| 国产日韩在线免费|