我想在我的服務器上執行任意(潛在危險)的二進制文件。因此,我使用objcopy
將「main」符號重命名爲「other_main」,以便我可以鏈接到我自己的小主函數中,該函數在調用other_main之前爲RLIMIT_CPU
設置適當的值並切換SECCOMP
標誌。到目前爲止,我對這個解決方案非常滿意。SECCOMP:如何模擬malloc,realloc和free?
現在的問題是,第三方程序代碼可能包含一些對malloc的調用,可能會立即終止程序(sbrk不允許)。因此,我希望在設置應該由malloc/realloc/calloc/free使用的SECCOMP
之前預先分配一些合理大小的數組(例如20MB)。不幸的是,我不知道如何歸檔最後一步。我是否必須自己實施所有這4項功能?我怎樣才能將自己的函數注入到stdlib中(例如,printf在內部調用malloc時會發生什麼?)。
是否重命名符號realy作品?我真的不知道操作系統是如何處理被剝離的二進制文件的。 – 2012-07-13 20:34:09
重命名符號在這裏工作正常。 objcopy似乎非常強大。你顯然不允許去除二進制文件,但這對我來說不是問題,因爲我自己編譯二進制文件。這只是不可信的C代碼。 – tux21b 2012-07-13 20:46:44
你能否爲你的用戶提供一個不同於你的操作系統庫的C庫(例如Newlib)?如果是這樣,編寫自己的'sbrk'(不能離開你的沙箱),然後malloc/realloc/calloc/free和朋友都可以工作。 – 2012-07-13 20:59:15