Tôi hiện đang xây dựng một kim loại trần có thể thi hành, trong đó có một số phần đặc biệt chứa mã. Tuy nhiên, khi tôi làm objdump -d
tôi chỉ nhận được mã cho các mục .text
và .init.text
. Trang man page cho objdump
chỉ nói rằng nó "chỉ chia nhỏ các phần đó được dự kiến sẽ chứa hướng dẫn" khi sử dụng tùy chọn -d
. Phần nào là những phần này và cách objdump
cho biết phần nào cần giải mã? Tôi biết tôi cũng có thể sử dụng tùy chọn -D
để có được giải mã đầy đủ tất cả các phần, nhưng điều này thường là nhiều hơn tôi cần.Phần nào objdump được tháo rời theo mặc định
6
A
Trả lời
5
objdump
sử dụng nội bộ libbfd
để nhận thông tin về phần. objdump
chuyển gọi lại tới bfd_map_over_sections()
gọi lại cuộc gọi lại trên mỗi phần. Khi được gọi, libbfd
chuyển số asection *
đến cuộc gọi lại có thành viên type
. Nếu loại có chứa các cờ SEC_CONTENTS | SEC_CODE
, nó sẽ bị tháo rời theo objdump
khi tùy chọn -d
được chuyển.
Vào libbfd
là khá khó khăn hơn, tôi hy vọng rằng việc phát hiện loại phụ thuộc vào kiến trúc, nhưng tôi hy vọng tôi đã cho bạn ít nhất là con trỏ bên phải. (Có lẽ khi có nhiều thời gian hơn tôi sẽ đào hơn vào này và mở rộng các câu trả lời) ..
Btw, nếu bạn cần một kịch bản để lọc ra các phần của sự quan tâm từ objdump -D
bạn có thể sử dụng sed
, như thế này :
# ------------Place section names here ---------------vvv
objdump -D object.o | sed -rn '/Disassembly of.*\.(comment|text)/{:a;p;n;/Disassembly of/!ba}'
Các vấn đề liên quan
- 1. Tháo rời mã máy x64 thô
- 2. Thư viện tháo gỡ được sử dụng bởi objdump
- 3. Tháo một tệp nhị phân phẳng Sử dụng objdump
- 4. gdb tháo rời một dòng
- 5. Tôi có thể cung cấp địa chỉ objdump và để nó tháo rời chức năng chứa không?
- 6. Tôi làm cách nào để buộc GDB phải tháo rời?
- 7. jQuery có thể kéo được + có thể tháo rời: cách chụp phần tử bị rơi vào phần tử bị rơi
- 8. thông báo không thể tháo rời
- 9. Segfault: và việc tháo gỡ khác nhau giữa objdump và gdb
- 10. Tháo rời Microsoft Visual Studio 2003 đầu ra trình biên dịch
- 11. Gỡ lỗi các thư viện đã tháo rời với gdb
- 12. Không thể tháo rời ứng dụng iOS Banking
- 13. Cách kiểm tra/tháo rời Visual Studio Extension
- 14. Chức năng ràng buộc jQuery có thể tháo rời khi thả phần tử?
- 15. Tháo rời Java JIT biên dịch bytecode bản địa
- 16. Có thể tháo rời tệp Visual FoxPro 9.0 exe không?
- 17. khi tháo rời hoặc tham gia chủ đề tăng tốc?
- 18. objdump và ARM vs Thumb
- 19. Chức năng có thể tháo rời và sắp xếp trên các thành phần được tạo động không hoạt động
- 20. haml theo mặc định
- 21. Bộ tách rời Mach-O của Linux
- 22. Tháo gỡ các phần trong chương trình c
- 23. Ngăn chặn thành phần được tháo gắn với React-router
- 24. Nút radio mặc định 4 góc được kiểm tra theo mặc định
- 25. Constexpr lambda theo mặc định?
- 26. Tại sao 'char' được ký theo mặc định trong C++?
- 27. Có thể objdump un-mangle tên của chức năng mẫu C++?
- 28. xoá lọ được tạo theo mặc định trong maven
- 29. đặt nút radio php được kiểm tra theo mặc định
- 30. Tại sao AutoDetectChangesEnabled được đặt thành false theo mặc định?