簡體   English   中英

執行ELF二進制文件而不創建本地文件?

[英]Executing a ELF binary without creating a local file?

是否可以執行二進制文件而不將其復制到硬盤驅動器?

我知道/lib/ld-linux.so.2可以加載任意二進制文件,但是仍然需要本地存儲的文件,我的想法是分配一個內存區域,將內容復制到內存中並執行它。

那有可能嗎?

我的想法是分配一個內存區域,將內容復制到內存中並執行它。

對於靜態鏈接的a.out ,您可以做到這一點。

對於動態鏈接的文件,您需要類似dlopen_phdr的文件

可能但非常困難。 多年前,我在這里工作過類似的問題。 (警告!該代碼不完整,包含嚴重的錯誤。)

困難的部分是確保您進程的地址空間要求與二進制文件或動態鏈接程序(例如,/ lib / ld-linux.so.2)不沖突。 如果您同時控制兩個程序的內存布局(因為已鏈接它們),則可以避免該問題。 (我的代碼沒有假定這樣的控制,並且在必要時會費力地將自己移開。)

如果沒有地址空間沖突,則可以為exe的PT_LOAD段(以及鏈接程序的段,如果有)分配內存,對齊和復制這些段,保護只讀段,分配堆棧,初始化堆棧和寄存器內核執行的方式 ,然后跳轉到exe或鏈接器的入口地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM