第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

libfaketime 不適用于 golang

libfaketime 不適用于 golang

Go
猛跑小豬 2021-12-20 19:26:16
我希望我的 go 程序在 ubuntu 服務(wù)器(14.04)上運行,由主管守護,使用假的服務(wù)器時間。在我的主管配置中,我使用它作為執(zhí)行命令:"faketime 'last Friday 5 pm' /home/user/main"程序運行,但顯示當前時間。libfaketime 不能與靜態(tài)鏈接或 setuid 程序一起使用,因為 LD_PRELOAD 對此類程序不可用。無論如何讓我編譯的go程序使用faketime?
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

問題是faketime使用LD_PRELOAD環(huán)境變量來指示程序的動態(tài)加載器libfaketime在啟動時加載。libfaketime將執(zhí)行所謂的“插入” - 用這些例程的自己的副本替換正常的動態(tài)庫例程 - 這樣當將來進行動態(tài)庫調(diào)用時,libfaketime可以影響發(fā)生的事情。特別是,libfaketime插入與時間相關(guān)的調(diào)用,因此它能夠向程序返回假值。

這適用于大多數(shù)程序的原因是它們用于libc進行系統(tǒng)調(diào)用。libc提供與系統(tǒng)調(diào)用交互的高級函數(shù),使系統(tǒng)編程更容易。在大多數(shù)使用 的語言中libc,二進制文件是動態(tài)鏈接的,這意味著它libc實際上并不包含在二進制文件中,而是預(yù)期libc在運行二進制文件時系統(tǒng)上將存在(稱為“目標文件”)的編譯版本,然后就可以加載動態(tài)庫了。這種動態(tài)加載是faketime通過LD_PRELOAD指令實現(xiàn)的,它改變了加載器的行為。

然而,Go 有兩個不同之處。首先,它是靜態(tài)鏈接的,因此沒有加載器可以關(guān)注LD_PRELOAD. 其次,它不使用libc,因此即使它是動態(tài)鏈接的,并且該LD_PRELOAD技巧有效,libc也永遠不會被調(diào)用,因此它實際上仍然無法實現(xiàn)欺騙程序使用假時間函數(shù)的預(yù)期目標。


查看完整回答
反對 回復(fù) 2021-12-20
  • 1 回答
  • 0 關(guān)注
  • 404 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號