1 điểm bởi GN⁺ 2024-08-24 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

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_DIR thà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 RelocationTableSynthesizedPlugin qua File > Configure

Cách dùng

  1. Chọn một tập địa chỉ trong chế độ xem Listing
  2. Chạy bộ phân tích Relocation table synthesizer (có thể dùng ở chế độ one-shot)
  3. Gọi trình xuất tệp đối tượng có thể tái định vị qua File > Export Program…
  4. 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.

Chưa có bình luận nào.