Compare commits

..

No commits in common. "cef08bf624f68ec8177d3be397b7c5b1df4c1d6d" and "ddc10a878c6fe7ea11b77a41fcd3742ffe3b23b2" have entirely different histories.

2 changed files with 8 additions and 28 deletions

View file

@ -17,7 +17,7 @@ main() {
set -- $line set -- $line
set +f; IFS=$IFS_PREV set +f; IFS=$IFS_PREV
if [ "$2" = true ]; then # If object is marked for extraction if [ "$2" == true ]; then # If object is marked for extraction
object_name=$1 object_name=$1
printf '\n--- %s ---\n' "$object_name" printf '\n--- %s ---\n' "$object_name"
@ -58,12 +58,6 @@ delink() {
else suffix= else suffix=
fi 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"\ "$1/support/analyzeHeadless$suffix" "$2" "$3"\
-process default.xbe\ -process default.xbe\
-noanalysis\ -noanalysis\

View file

@ -93,10 +93,10 @@ should be all ready for creating object files for objdiff.
### Producing Object Files ### Producing Object Files
Close all of your Ghidra windows and open a Unix-style shell (e.g. Git Bash if Close all of your Ghidra windows and open a shell in the decompilation
on Windows) in the decompilation repository's `delink/` directory. The repository's `delink/` directory. The `delink.sh` script is our automated tool
`delink.sh` script is our automated tool for extracting all the object files for extracting all the object files that have been identified so far. Invoke
that have been identified so far. Invoke it with three arguments: it with three arguments:
- The path to your Ghidra installation (the directory with files like - The path to your Ghidra installation (the directory with files like
`ghidraRun` and `ghidraRun.bat`, and directories like `docs/` and `ghidraRun` and `ghidraRun.bat`, and directories like `docs/` and
@ -105,27 +105,13 @@ that have been identified so far. Invoke it with three arguments:
directory with a name ending in `.rep`) directory with a name ending in `.rep`)
- The name of your JSRF Ghidra project - The name of your JSRF Ghidra project
If you're on Windows, the paths you provide should be Windows filepaths, not There are two common errors you might get here:
Unix-style paths. Make sure the paths are surrounded by quotes, too (e.g.
`'C:\path\to\whatever'`), else the shell won't understand the backslashes
correctly.
There are a couple errors you might get here:
- `Unable to lock project!`: This means that Ghidra isn't fully closed. Make - `Unable to lock project!`: This means that Ghidra isn't fully closed. Make
sure you've completely closed every Ghidra window before running `delink.sh`. sure you've completely closed every Ghidra window before running `delink.sh`.
- `Script not found: DelinkProgram.java` and - `Script not found: DelinkProgram.java` and
`Invalid script: DelinkProgram.java`: This means that the either the Ghidra `Invalid script: DelinkProgram.java`: This means that the Ghidra delinker
delinker extension isn't properly installed, or you've somehow invoked the extension isn't properly installed. Ensure it's installed and enabled first.
script in a way that can't see the extension (e.g. installing Ghidra on
Windows and then invoking the script from WSL). Ensure it's installed and
enabled first, and that you're not running in some kind of environment
different from where you installed Ghidra.
- `java.lang.RuntimeException: Failed to export ...`: This means that the
delinker extension doesn't like something about what it was told to delink.
One known cause is duplicate symbol names. If you haven't modified
`objects.csv` or `symboltable.tsv`, let other people on the project know so
that they can look into fixing it.
If all goes well, you'll see the message `Delinking complete!` at the end of If all goes well, you'll see the message `Delinking complete!` at the end of
the script's output, and the extracted object files will be in the the script's output, and the extracted object files will be in the