我需要找出一個二進制文件是使用epoll還是選擇Linux上的套接字處理。二進制文件沒有被剝離,但是我不能在我的linux中運行它,所以沒有strace。如何通過靜態分析找出二進制文件是否在Linux上使用某些系統調用?
2
A
回答
8
nm <binary>
會告訴你哪些符號被定義,更重要的是在這裏指定哪些符號被給定的二進制使用。您可以通過檢查輸出中列出poll
或select
中的哪一個來得到保守的猜測。
您可能會發現您的應用程序與兩者都鏈接。在這種情況下,它可能會作出運行時間決定,哪一個要調用,如果你運行它,你將無法輕易地知道它實際使用哪一個。
根據構建二進制文件的方式,您可能必須運行nm
以及-D
標誌;或者您可能需要確保您沒有指定-D
。嘗試兩種方式。
如果程序使用共享庫,實際調用poll
或select
可能位於它正在使用的庫中。在這種情況下,您可能需要挖掘其所有庫上運行的nm
。您可以通過在readelf --dynamic
的輸出中查找NEEDED
條目來找出程序使用ldd
的程序庫,或者該程序不起作用。
如果二進制是比您當前運行在不同的平臺上構建,然後ldd
將無法正常工作,也可能需要使用的binutils
一個交叉編譯器編譯得到一個版本的nm
會爲你工作。
相關問題
- 1. Linux:是否可以使用靜態鏈接的二進制文件進行一些面向插件的編程?
- 2. 在Python中查找linux系統二進制文件的路徑
- 3. 在Linux上運行FreeBSD靜態二進制文件?
- 4. BinaryFactory是否適用於文件系統上的二進制文件?
- 5. 在靜態二進制文件上使用dlsym
- 6. 在Linux平臺上捕獲文件系統系統調用
- 7. ltrace在某些二進制文件上不起作用
- 8. 在Linux中使用什麼系統調用來複制文件
- 9. 如何在build.gradle中引用系統ProGuard二進制文件?
- 10. Linux:通過ptrace()執行系統調用()
- 11. 靜態鏈接二進制文件在Windows Linux子系統上使用gcc構建,可移植到所有Windows系統上?
- 12. 哪裏可以找到「通用」Linux二進制文件列表?
- 13. 如何查找某個文件在系統路徑中是否可用?
- 14. 在xcconfig中使用靜態庫鏈接二進制文件
- 15. 通過系統調用在Linux上監控內存
- 16. 如何使用poll linux函數調用靜態文件discriptor?
- 17. 在Linux上旋轉二進制文件
- 18. 如何在Linux下使用匯編和系統調用動態分配內存
- 19. 如何通過Java將AS3的二進制數據發送到文件系統?
- 20. 如何找出在哪個操作系統中使用終端編譯了二進制文件?
- 21. 如何確定在AOSP系統庫二進制文件中使用了哪些源文件?
- 22. 如何找出某些javascript代碼是否被實際使用?
- 23. 是否可以在某個二進制代碼片段中使用vtune而不是整個二進制文件?
- 24. 二進制文件和操作系統
- 25. 使用Powershell解析二進制文件
- 26. 如何在使用Java的Windows中分析系統調用?
- 27. 軌道靜態二進制文件
- 28. 查找文件夾是否在linux上覆制過程中
- 29. 在C系統中讀取二進制文件(在UNIX系統上)(Ubuntu 10.10)
- 30. 使用BPMN進行系統分析
感謝您的完整答案, – wei