Rizzo for ghidra, with some touches from myself to make it more fault tolerant.
- Load source program into Ghidra
- Run Ghidra's analyzer on source program
- Run
rizzo_stage0.py
(will save a.riz0
file) - Perform manual analysis
- Run
rizzo_stage1.py
(will save a.riz1
file) - Load target program into Ghidra
- Run Ghidra's analyzer on target program
- Run
rizzo_apply.py
(select.riz1
file)
- Load source program into Ghidra (Referred to as
<source_program>
) - Run Ghidra's Analyzer
- Run
periph_enum.py
- Re-run Ghidra's Analyzer
- Run
mem_export.py
(Save as<source_program>.mem
) - Run
rizzo_stage0.py
(Save as<source_program>.riz0
) - Run
ai_auto_analysis.py
- Re-run Ghidra's Analyzer
- Run
rizzo_stage1.py
(Save as<source_program>.riz1
) - In Ghidra's Data Type Manager:
- Create a "New File Archive" (Save as
<source_program>.gdt
) - Under the
<source_program>
archive, dragAI_Generated_Structs
to the new<source_program>.gdt
archive- Answer "Yes" to "Do you want to associate local data types with the target archive?"
- "Commit Data Types To" and select the new
<source_program>.gdt
archive - Close the new
<source_program>.gdt
archive
- Load the target program into Ghidra (Referred to as
<target_program>
) - Run Ghidra's Analyzer
- Run
mem_import.py
(Select<source_program>.mem
) - Re-run Ghidra's Analyzer
- Run
periph_enum.py
(Enumerates new peripherals) - Re-run Ghidra's Analyzer
- In Ghidra's Data Type Manager, "Open File Archive" and load
<source_program>.gdt
- Run
rizzo_apply.py
and load<source_program>.riz1
- Re-run Ghidra's Analyzer