HN công khai: Tiện ích mở rộng Ghidra xuất một phần chương trình thành tệp đối tượng
(github.com/boricj)Tiện ích mở rộng xuất tệp đối tượng cho Ghidra
Tiện ích mở rộng Ghidra này cho phép xuất một phần của chương trình thành tệp đối tượng. Các tệp đối tượng này có siêu dữ liệu hợp lệ (ký hiệu, bảng tái định vị, v.v.) nên có thể được chuỗi công cụ tái sử dụng trực tiếp.
Trường hợp sử dụng
- Vá nhị phân nâng cao: kết hợp phần gốc và phần đã sửa bằng linker thay vì làm thủ công
- Chuyển nền phần mềm: tách mã độc lập với hệ thống ra khỏi chương trình và thay thế phần còn lại
- Chuyển đổi định dạng tệp: chuyển chương trình hoặc tệp đối tượng sang định dạng tệp khác
- Tạo thư viện: trích xuất một phần của chương trình để tái sử dụng trong ngữ cảnh khác
- Dự án decompile: chia chương trình thành nhiều tệp đối tượng và hiện thực lại
Kiến trúc tập lệnh và định dạng tệp đối tượng được hỗ trợ
- x86: COFF (được hỗ trợ), ELF (được hỗ trợ)
- MIPS: COFF (không hỗ trợ), ELF (được hỗ trợ)
Build (CLI)
- Clone kho lưu trữ này
- Đặt biến môi trường
GHIDRA_INSTALL_DIRthành thư mục cài đặt Ghidra - Chạy lệnh
gradle buildExtension - Gói tiện ích mở rộng Ghidra sẽ được tạo trong thư mục
dist/
Cài đặt
- Tải tiện ích mở rộng từ trang phát hành hoặc build cục bộ
- Trong phiên bản Ghidra, cài tiện ích mở rộng qua
File > Install Extensions… - Trong cửa sổ CodeBrowser, bật plugin
RelocationTableSynthesizedPluginquaFile > Configure
Cách dùng
- Chọn một tập địa chỉ trong chế độ xem Listing
- Chạy bộ phân tích
Relocation table synthesizer(có thể dùng ở chế độ one-shot) - Gọi trình xuất tệp đối tượng có thể tái định vị qua
File > Export Program… - Có thể kiểm tra bảng tái định vị được tái tạo tại
Window > Relocation table(synthesized)
- ⚠️ Bộ phân tích Relocation table synthesizer yêu cầu cơ sở dữ liệu Ghidra được điền đầy đủ (ký hiệu, kiểu dữ liệu và tham chiếu được khai báo chính xác). Thông tin không chính xác hoặc bị thiếu có thể dẫn đến tái định vị sai hoặc không được phát hiện trong quá trình phân tích
- ⚠️ Trình xuất tệp đối tượng phụ thuộc vào kết quả của bộ phân tích Relocation table synthesizer. Hãy chạy bộ phân tích này trước khi xuất tệp đối tượng để đảm bảo nội dung bảng tái định vị là mới nhất
Cách hoạt động
Tệp đối tượng gồm ba phần:
- byte của các section có thể tái định vị
- bảng ký hiệu
- bảng tái định vị
Khi linker tạo tệp thực thi từ nhiều tệp đối tượng:
- đặt các section vào bộ nhớ
- tính địa chỉ của các ký hiệu trong không gian địa chỉ ảo
- áp dụng tái định vị lên byte của section dựa trên địa chỉ cuối cùng của ký hiệu
Thông thường sau quá trình này, bảng tái định vị sẽ bị loại bỏ, và bảng ký hiệu cũng bị loại bỏ trừ khi ký hiệu gỡ lỗi được giữ lại. Tuy nhiên, thông qua phân tích cẩn thận có thể tái tạo lại dữ liệu này, từ đó có thể delink chương trình trở lại thành các tệp đối tượng.
Tóm tắt của GN⁺
- Tiện ích mở rộng Ghidra này cho phép xuất một phần của chương trình thành tệp đối tượng.
- Có nhiều trường hợp sử dụng như vá nhị phân nâng cao, chuyển nền phần mềm, chuyển đổi định dạng tệp, v.v.
- Cần cơ sở dữ liệu chính xác và việc chạy bộ phân tích trước khi xuất tệp đối tượng là rất quan trọng.
- Các dự án cung cấp chức năng tương tự gồm có các decompiler như IDA Pro.
Chưa có bình luận nào.