1
我有要求在我正在運行的線程中攔截系統調用並記錄該信息的要求。我的內核版本是3.15.10只在debian中覆蓋我的應用程序的系統調用
我知道一種方法,我可以獲得系統調用地址,然後跳轉到不同的系統調用號碼形式的地址。但是,這種方法的問題是,如果出現問題,我的系統將會關閉。
我想是重寫系統調用我的應用程序只
我有要求在我正在運行的線程中攔截系統調用並記錄該信息的要求。我的內核版本是3.15.10只在debian中覆蓋我的應用程序的系統調用
我知道一種方法,我可以獲得系統調用地址,然後跳轉到不同的系統調用號碼形式的地址。但是,這種方法的問題是,如果出現問題,我的系統將會關閉。
我想是重寫系統調用我的應用程序只
如果你有一個應用程序的來源,可以重新編譯,你可以使用宏定義來改變系統調用別的東西做你的覆蓋(然後,通常是原始的系統調用)。
#define rmdir(p) overridden_rmdir(p)
使用overridden_rmdir
在鏈接路徑的庫中定義。
如果由於某種原因無法完成此操作,但仍然可以重新編譯,您可以生成彙編輸出並對其進行編輯(如使用sed
腳本)以包含所需的修改。
如上所述,如果您無法重新編譯或重新鏈接,您可能能夠反彙編二進制文件並編輯彙編程序輸出。
另一種可能性是在具有不同內核的虛擬機中運行此應用程序,其中內核被修改爲使用重寫的系統調用。
希望這是有幫助的。
您可以用不同的方式鏈接應用程序,使用庫來覆蓋系統調用?我做了類似的操作來處理非標準的浮點格式。 – mpez0
@ mpez0能否請您詳細說明一下例子 – eswaat