除錯在 Linux 系統上加載 ELF 二進制檔案的實際程序有哪些有效方法?我在 Fedora 36 上并創建了一個 ELF 檔案。但是,當我嘗試通過輸入從 bash 運行 ELF 檔案時./myElfFile,出現類似cannot execute binary file: Exec format error. 我要確定的是WHICH specific exec format error,我想使用除錯器或其他一些動態跟蹤來執行此操作。我曾經不得不在 Windows 上執行此操作,最后我在內核除錯模式下使用了 WinDbg,還有一個叫做 GFlags 的東西,我打開了“加載程式快照”,這讓我可以看到整個可移植可執行檔案的加載程序。最后,我在里面找到了支票NtCreateSection及其被呼叫者。在 Linux/ELF 世界中,我將如何做這樣的事情?我想找出它在加載程序的哪個步驟失敗,以及哪個檢查失敗。
uj5u.com熱心網友回復:
我要確定的是哪個特定的 exec 格式錯誤,我想使用除錯器或其他一些動態跟蹤來執行此操作。
問題(無效ELF檔案)很可能是由內核檢測到的。因此,您的程式永遠不會啟動,除錯器或任何其他用戶空間工具也無濟于事。
您可以嘗試以下幾種方法:
- 如果
myElfFile作為有效檔案啟動并被修改/修補,請檢查readelf -l ...作業副本和非作業副本的輸出之間的差異,看看您是否可以發現違反某些必需的不變數(例如.p_offset % pagesize == .p_vaddr % pagesize?)。 - 使用
readelf -a myElfFile并查看是否readelf列印任何警告。如果是這樣,您可以除錯readelf以弄清楚它在抱怨什么——它可能是也可能不是導致內核拒絕您的二進制檔案的同一件事。 - 用輸出更新您的問題,
readelf -l myElfFile并希望其他人指出它有什么問題。 - 使用用戶模式 ??Linux除錯內核,同時它正在嘗試
exec檔案.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533772.html
