mirror of
https://codeberg.org/KeybadeBlox/JSRF-Decompilation.git
synced 2026-02-20 02:07:02 +03:00
Move everything else to ghidra/ directory
The only stuff left in delink/ was also for using with Ghidra, so we may as well also put it in ghidra/.
This commit is contained in:
parent
63002e0f08
commit
35c8844529
3 changed files with 7 additions and 7 deletions
77
ghidra/delink.sh
Executable file
77
ghidra/delink.sh
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
#!/bin/sh -eu
|
||||
# Script to produce delinked object files in decompile/target/ directory from
|
||||
# objects.csv and a Ghidra project via boricj's delinker extension
|
||||
|
||||
main() {
|
||||
if [ $# -ne 3 ]; then usage; fi
|
||||
|
||||
ghidra_path=$1
|
||||
project_path=$2
|
||||
project_name=$3
|
||||
|
||||
printf '=== Delinking object files into ../decompile/target/ ===\n'
|
||||
|
||||
while IFS= read -r line; do # Read objects.csv line by line
|
||||
# Split columns (col 1 in $1, col 2 in $2, etc.)
|
||||
set -f; IFS_PREV=$IFS; IFS=,
|
||||
set -- $line
|
||||
set +f; IFS=$IFS_PREV
|
||||
|
||||
if [ "$2" = true ]; then # If object is marked for extraction
|
||||
object_name=$1
|
||||
printf '\n--- %s ---\n' "$object_name"
|
||||
|
||||
# Delete object name and delink toggle positional
|
||||
# arguments, leaving only address ranges
|
||||
shift 2
|
||||
|
||||
# Call Ghidra delinker script
|
||||
delink "$ghidra_path" "$project_path" "$project_name" "$*" "$object_name"
|
||||
fi
|
||||
done < objects.csv
|
||||
|
||||
printf '\nDelinking complete!\n'
|
||||
}
|
||||
|
||||
usage() {
|
||||
printf '%s\n'\
|
||||
'Usage: delink.sh GHIDRA_PATH PROJECT_PATH PROJECT_NAME'\
|
||||
' GHIDRA_PATH is the path to your Ghidra installation'\
|
||||
' PROJECT_PATH is the path to your JSRF Ghidra project'\
|
||||
' PROJECT_NAME is the name of your JSRF Ghidra project'\
|
||||
''\
|
||||
'Populates the target/ directory with delinked object files using the address'\
|
||||
'ranges given in objects.csv.' >& 2
|
||||
exit 2
|
||||
}
|
||||
|
||||
delink() {
|
||||
# Invoke headless Ghidra with the delinker script to produce an object file
|
||||
# $1: Ghidra installation path
|
||||
# $2: Ghidra project path
|
||||
# $3: Ghidra project name
|
||||
# $4: Whitespace-separated address ranges to include in object
|
||||
# $5: Output path (inside decompile/target/)
|
||||
# Call the right script depending on whether we're on Windows
|
||||
# (this seems like the most reliable method I can find for POSIX sh)
|
||||
if [ -n "$WINDIR" ]; then suffix=.bat
|
||||
else suffix=
|
||||
fi
|
||||
|
||||
# POSIX compatibility layers for Windows (like in git bash) will
|
||||
# interpret arguments like /exporter as filepaths and attempt to
|
||||
# convert them to Windows paths, breaking them; this variable disables
|
||||
# that
|
||||
export MSYS_NO_PATHCONV=1
|
||||
|
||||
"$1/support/analyzeHeadless$suffix" "$2" "$3"\
|
||||
-process default.xbe\
|
||||
-noanalysis\
|
||||
-postScript DelinkProgram.java\
|
||||
/exporter 'COFF relocatable object'\
|
||||
$(printf "/include-range %s " $4)\
|
||||
/export "../decompile/target/$5"
|
||||
}
|
||||
|
||||
|
||||
main "$@"
|
||||
15
ghidra/objects.csv
Normal file
15
ghidra/objects.csv
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Object,Delink?,.text,.text$XCU1,.text$XCU2,.text$x,D3D,DSOUND,MMATRIX,XGRPH,XPP,.rdata,.rdata$x,.data$CRT,.data,DOLBY
|
||||
JSRF/Core.obj,true,0x00011000-0x00013FEB,,,0x00186BA0-0x00186C14,,,,,,0x001C4390-0x001C44F9,0x001E4D20-0x001E4DAB,,0x001EB880-0x001EB933,
|
||||
JSRF/GameData.obj,true,0x00039B50-0x0003B937,0x0018AD60-0x0018AD75,0x0018C9A0-0x0018C9AA,,,,,,,0x001CA16C-0x001CA3DB,,0x001EB790-0x001EB793,0x001EFC88-0x001F7047,
|
||||
JSRF/Jet2.obj,true,0x0006F9E0-0x0006FA6F,,,0x00187710-0x00187724,,,,,,,0x001E620C-0x001E622F,,0x0022FCE0-0x0022FCE3,
|
||||
ADX (need to decompose),false,0x0013A570-0x0014555F,?,?,?,?,,,,,,?,?,?,
|
||||
XDK Core (need to decompose),false,0x00145560-0x0014B79F,?,?,?,?,,,,,,?,?,?,
|
||||
Smilebit libs (need to decompose),false,0x0014B7A0-0x0017BF3F,?,?,?,?,,,,,,?,?,?-0x0022ED2B,
|
||||
C runtime,false,0x0017BF40-0x00182B80,?,?,?,,,,,?,?,0x0022ED2C-?,?,?,
|
||||
Unknown MS math lib,false,0x00182B81-0x0018694F,?,?,?,,,,,?,?,?,?,?,
|
||||
Another (tiny) Smilebit math lib,false,0x00186950-0x00186B7F,?,?,?,,,,,?,?,?,?,?,
|
||||
Direct3D8 (need to decompose),false,,?,,0x0018CB40-0x0019E334,,,,,?,?,?,?,?,
|
||||
DirectSound8 (need to decompose),false,,?,?,,,0x0019E340-0x001BA89B,,,,?,?,?,?,0x0027E080-0x00284E17
|
||||
MMatrix.obj,false,,?,,,,0x001BA8A0-0x001BBAAF,,,,,?,?,0x00264BD8-0x00264C13,
|
||||
Xgraphics (need to decompose),false,,?,,,,,0x001BBAC0-0x001BC7BB,,,,?,?,,
|
||||
XDK Peripherals (need to decompose),false,,?,,,,,,0x001BC7C0-0x001C3F57,,,?,?,,
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue