Skip to content

Upstream delinker data model #1

@boricj

Description

@boricj

Currently, the delinker data model used by this extension is private and independent of Ghidra's program database. If it was upstreamed, it would then be properly integrated with the rest of Ghidra and allow an ecosystem of plugins/extensions/scripts around it.

This is expected to be an extremely tricky issue that will take a very long time to solve, since:

  • Delinking is currently a very niche reverse-engineering technique and there is almost no literature on the topic ;
  • A generic, general-purpose delinking model capable of handling every use-case thrown at it is expected to be very hard to design ;
  • An industrialized implementation using that model, capable of delinking across architectures, file formats and ABIs is expected to be very hard to implement ;
  • Upstream will not accept major modifications to its program data model without proper justification ;
  • The delinker data model and implementation inside this extension isn't mature enough.

Note: this issue is about enabling the relocation synthesizer and object file exporters to work directly on top of a vanilla Ghidra program database model, without having to store any data in private places. It is not about upstreaming the relocation synthesizers or the object file exporters themselves.

Requirements:

  • ELF object file exporter
  • Another object file format exporter
  • MIPS 32 bit relocation synthesizer
  • Another CPU architecture relocation synthesizer
  • Non-position independent code delinking working
  • Position independent code delinking working
  • Shared libraries delinking working
  • Mismatched ABIs delinking demonstrated?
  • ...
  • Design a data model integrated with Ghidra's program model
  • Implement this data model
  • Provide sufficient justifications and use-cases to convince upstream
  • Upstream this data model

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions