Có công cụ nào để sửa đổi các mục trong thư viện được chia sẻ trong phần động của nhị phân ELF không? Tôi muốn sửa đổi rõ ràng các phụ thuộc thư viện được chia sẻ trong tệp nhị phân của tôi (ví dụ: thay đường dẫn đến thư viện hiện có bằng đường dẫn tùy chỉnh)Công cụ để sửa đổi phần động của một số nhị phân ELF
Trả lời
thay thế đường dẫn đến thư viện hiện có với một con đường tùy chỉnh
Nếu đây là thư viện riêng của bạn, sau đó bạn có thể liên kết nó như thế:
$ cc -o prog1 -l/full/path/to/libABC.so prog1.o
thay cho thích hợp:
$ cc -o prog1 -L/full/path/to/ -lABC prog1.o
Cách tiếp cận đầu tiên cho trình liên kết Linux biết rằng ứng dụng cần trước cisely rằng thư viện, chỉ có thư viện và không ghi đè nên có thể. Cách tiếp cận thứ hai cho biết rằng ứng dụng cần thư viện sẽ được cài đặt ở đâu đó trên hệ thống, hoặc trong đường dẫn thư viện mặc định hoặc một thư được chỉ bởi $ LD_LIBRARY_PATH (sẽ được tra cứu trong thời gian chạy). -L chỉ được sử dụng trong thời gian liên kết.
Nếu không, thay vì vá ELF, trước tiên hãy kiểm tra xem bạn có thể thay thế thư viện bằng liên kết tượng trưng hay không. Đây là thủ thuật thông thường: rất khó để sửa đổi thực thi sau đó, nhưng rất dễ thay đổi vị trí của các điểm liên kết tượng trưng.
Bạn có thể muốn kiểm tra biến môi trường LD_LIBRARY_PATH
.
Nếu bạn nhìn vào phần .dynsym trong Linux qua readelf
, bạn sẽ chỉ nhìn thấy cái gì đó như:
1: 0000000000000000 163 FUNC GLOBAL DEFAULT UND [email protected]_2.2.5 (2)
mà chỉ chứa một tên mang tính biểu tượng của thư viện. Tuy nhiên, nếu bạn bao gồm các thông tin nạp năng động, bạn sẽ có được:
libc.so.6 => /lib/libc.so.6 (0x00002ba11da4a000)
/lib64/ld-linux-x86-64.so.2 (0x00002ba11d82a000)
Vì vậy, như đã đề cập, điều dễ nhất tuyệt đối để làm (giả sử bạn đang làm điều này để gỡ lỗi, và không mãi mãi) sẽ chỉ được để tạo ra một phiên mới, xuất đường dẫn tùy chỉnh của bạn trước LD_LIBRARY_PATH
hiện có và đi từ đó.
- 1. Công cụ sửa đổi đơn giản tệp tin elf?
- 2. Sửa đổi tập tin elf
- 3. Nhập tên trong mã nhị phân ELF
- 4. tạo các tệp nhị phân ELF độc quyền trên Linux
- 5. Deserialize một phần của tệp nhị phân
- 6. Công cụ sửa đổi truy cập tự động Refactor
- 7. công cụ sửa đổi tham số này trong C#?
- 8. Công cụ Sdk của Android Phiên bản 22 sửa đổi?
- 9. Biểu diễn nhị phân của một số thập phân .NET
- 10. Công cụ Java để sửa đổi mã kiểm thử
- 11. Chuyển đổi số thập phân thành nhị phân trong R?
- 12. Buộc một số biến nhất định của trình biên dịch thành các phần ELF cụ thể (với gcc)
- 13. Gán một hằng số nhị phân
- 14. Công cụ để phân tích tĩnh gia tăng của mã?
- 15. Thay đổi công cụ sửa đổi truy cập của một phương thức ghi đè trong Java?
- 16. Chuyển đổi số thập phân sang nhị phân trong python
- 17. Công cụ phân bổ các công cụ của Xcode bỏ lỡ một chút
- 18. Chuyển đổi một chuỗi nhị phân lớn để Hexadecimal
- 19. Các công cụ sửa đổi mạnh và yếu với các phần tử giao diện ios
- 20. Cách nhanh chóng để chuyển đổi số nhị phân sang số thập phân
- 21. Làm thế nào để phát hiện một công cụ sửa đổi bàn phím trong một bookmarklet?
- 22. Giết một số nhị phân Haskell
- 23. Điều gì sẽ là công cụ sửa đổi đúng?
- 24. Công cụ sửa đổi cuối cùng làm gì trong Dart?
- 25. Gcc có bất kỳ tùy chọn nào để thêm thông tin phiên bản vào tệp nhị phân ELF không?
- 26. Thêm số nhị phân
- 27. Số nhị phân trong Python
- 28. Tôi có thể thay đổi 'đường dẫn' trong một nhị phân đã biên dịch không?
- 29. Cách đếm số của 1 sẽ có số nhị phân?
- 30. Linux, GNU GCC, ld, tập lệnh phiên bản và định dạng nhị phân ELF - Cách thức hoạt động?