Skip to content

Milestones

List view

  • This milestone is to lay the groundwork for future disassembly support- building interrogation methods for the context that will be used to disassemble. - [ ] Add a function to find the page size and the page offset for a particular address. - [ ] Investigate writing a disassembly crate for deaf that can read and write operands for instructions. This would be an investigation rather than implementation: gather the instructions to be parsed, figure how it would be done etc. - [ ] Add methods for interrogating the target platform of the binary using fields in the headers (`ei_osabi` and `e_machine`) etc. If all else fails, allow the user to provide the target platform manually. - [ ] Create platform parsing context that varies depending on target platform - [ ] Add basic chunking and iteration methods for function bodies ### References * https://pdos.csail.mit.edu/6.828/2008/readings/i386/s17_02.htm * http://www.c-jump.com/CIS77/CPU/x86/X77_0240_prefix.htm * https://stackoverflow.com/questions/924303/how-to-write-a-disassembler

    No due date
  • This milestone is mainly concerned with 1) expanding support for ELF parsing (handling hash tables etc.) and 2) handling changes in a non-breaking way (align sections when the section body has been modified, updating header values when items have been added to tables etc.) - [ ] Turn Array into wrapper Array/ArrayMut structs for sections (#43) - [ ] Turn the Segment struct into a Segment/SegmentMut structs wrapping a slice of sections/data. Complicating this, Segments are aligned to the page size[^1] and may (not sure) hold partial Section data. (#45) - [ ] Update section offsets when items are added/removed from tables (#46) - [ ] Sections should calculate correct alignment after body is modified (#30) - [ ] Create tests for pre-init arrays[^2] (#25) - [ ] Create a HashTable wrapper struct (similar to Table/TableMut) that interprets a Section as a collection of HashItem's- include lookup functions[^3] so that the hash table can be used to find symbols in a symbol table. (#26) - [ ] Symbols that are data should be parse-able into the data value (integer, string etc.) (#28) - [ ] Create wrapper struct that represents a SymbolItem as a Function/FunctionMut and provide getters and iterators for inspecting them specifically (rather than as Symbols)[^4] (#47) ### References [^1]: https://intezer.com/blog/research/executable-linkable-format-101-part1-sections-segments/ [^2]: https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter3-8.html [^3]: https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-48031.html [^4]: https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-79797.html

    No due date
    7/17 issues closed