How can I extract a code listing from a Ghidra project such that I can reassemble with something like vasm? I have gone through a memory snapshot and disassembled the code and marked data sections etc. to a point where I would like to check my work.

Further to the question and answer in Extracting Assembly line code from an executable in Ghidra I would like to extract line labels, plate comments and EOL comments.

Here is an example:

example Ghidra screenshot

Here's what I'd like the extracted code to look like:

; Extracted data blocks
        dc.b 0
        dc.b 0
        dc.b 0
        dc.b 0
; etc
        dc.b 0

; Extracted subroutine
* Display a message in the status bar                        *
        movem.l {a2, a1, d5},-(sp)
        lea STATUS_STRING_BUFFER, a1
        clr.w d0
        move.b (a0)+,d0
        move.b d0,CURRENT_STATUS_MESSAGE_CODE    ; Store Message byte
        andi.b #$7f                              ; Mask out msb
        ; ... etc

As you can see there are a number of things to do including:

  1. Extract data blocks
  2. Convert db, dw, ddw to dc.b, dc.w, dc.l
  3. Convert hex from 0xNN to $NN notation
  4. Extract plate comments
  5. Extract labels
  6. Extract disassembled code lines
  7. Extract EOL comments

Is there a readily available script for this or can someone show a working example?

  • Have you looked at the "Export Program" menu dialog? None of the options in that dialog do exactly what you are looking for, but the C/C++ export and the ASCII export could be combined by some other script to produce what you are looking for. Nov 15, 2022 at 16:22
  • @dingo_kinznerhook Yes, this could be a starting point. I may have to run a script outside of Ghidra to do what I want. Nov 18, 2022 at 8:49


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.