最近想使用llvm的pass來對每個函式進行插樁,來模擬stack guard的功能。其中碰到了乙個很棘手的問題就是如何通過llvm c api實現對fs段內容的訪問。要想實現該問題,我通過檢視llvm如何實現stack guard,找到了具體的解決方案。下面首先看一下llvm中stackprotector pass如何實現對fs段的訪問,然後再介紹一下我自己簡化版本的stack guard。
在stackprotector中,呼叫getirstackguard(irbuilder<> &irb) const函式對fs段進行訪問的,其在x86下實現的具體**如下:
其中fs段的addressspace為257
所以對fs段的訪問**如下:
//address為257表示在使用者模式下的fs段暫存器
static constant* segmentoffsetstack(irbuilder<>
&irb, unsigned offset, unsigned addressspace)
static value* getthestackguardvalue(irbuilder<>
&irb, unsigned offset)
其中offset為從fs段偏移offset處取資料。
下附我對stack guard的乙個簡單的實現:
stackguard
curl模擬ip段訪問
申明 本例項僅供學習使用,不做任何商業用途,如因此引起任何法律糾紛,本部落格不承擔任何責任 header content type text html charset utf 8 id isset get id get id exit no params function curl desturl,...
nginx訪問日誌沒有內容
今天處理乙個nginx 版本nginx 1.8.0.tar.gz 的問題,訪問 的時候沒有日誌輸出,同樣部署兩台機器,配置一樣,一台有日誌,一台沒有日誌,很奇怪,分析下配置檔案,nginx開啟了zip壓縮,嘗試注釋下,重啟nginx,訪問日誌出現了,啟用zip壓縮 解決方法 將 error log ...
母版頁訪問內容頁
內容頁訪問母版頁,理所當然,是人都知。但母版頁訪問內容頁呢?用委託。實現 1 母版頁宣告和定義乙個委託 2 內容頁裡將具體實現方法附加到委託上 3 母版頁檢查該委託是否為空,非空的話就執行該委託 母版頁 public delegate void dlgshowcontent string conte...