ghidra_psx_ldr
Sony Playstation PSX executables loader for GHIDRA
Video tutorial on how to deal with overlays: https://youtu.be/DuQQfjTkkQc
Building
- Install
GhidraDev
plugin into Eclipse - Add your Ghidra installation dir
- Import this repository into Eclipse
- Do GhidraDev -> Link Ghidra...
- Press GhidraDev -> Export -> Ghidra module extension...
Installation
- Open Ghidra, go to File -> Install Extensions... and select the .zip file generated by the previous step
Analysing PSYQ LIBs and OBJs
- In case you have a directory with OBJ-files extracted from a LIB-file, create an empty
PSYQ_LIBNAME_XXX
file, whereLIBNAME
is your LIB-file name (for ex.LIBSND
) andXXX
is PSYQ version number according to this list. - In case you want to batch-import all OBJ-files for a LIB-file or import a standalone OBJ-file (like
8MBYTE.OBJ
), create an emptyPSYQ_XXX
file, whereXXX
is PSYQ version number according to this list.
ghidra_psx_ldr
Moving from projects created without - On your project:
Set Language
, choosePSX
,Yes
,Yes
,OK
- Script Manager->
PSX GTE
folder, runCreateGteMacSegment
script - Reanalyze
Decompiling GTE macroses in your old projects
- Reanalyze. It will create a special segment with GTE macro handlers.
If you have some Ghidra project which has been created before
01/22/2022
, in order to decompile any GTE related stuff it requires to undefine (select disasm lines and pressC
) and disassemble (pressD
) instructions again, because Ghidra's decompiler uses disasm and Pcodes information stored in a project.
psyq/xx
" cannot be found:
Fixing a problem with "
example here)
Patches format (~
- is for replacing some pattern in a signature. check field is the original bytes in the signature to compare with+
- is for adding some pattern in a signature-
- is for removing some pattern from a signature
! pos
fields are for the original signature. you should not add appended or removed sizes to them