[!NOTE] This repository contains the tooling to evaluate TRex against prior work, as shown in the evaluation section of the paper. For the core TRex tool itself, see the main repository.
just ghidra-test.trex repository has been correctly cloned within the current directory (you can use just trex to clone it into the correct path).
make inside the benchmark you want to test (within benchmarks/) to populate it with the raw binaries.cargo run --bin runner --release, and select the benchmark interactively.
Ctrl-C; we have done our best to add safeguards, but if you kill the runner halfway through, it is helpful to run htop to confirm that the underlying job has actually been killed.jobs-for-benchmark command after you've made your selections that you can copy-paste to run with the same settings.jobs-for-benchmark command will likely fix things), if there are a large number of failures for a particular job, running an individual command lets you see stdout/stderr for the job, which can help diagnose faults.benchmarks/ folder.
./benchmarks/coreutils/evalfiles/eval-binscores.pdf)./opt/ghidra.just ghidra-test will output "Confirmed" if Ghidra is installed successfully.See ./.docker/README.md for a Dockerfile that
installs the aforementioned requirements.
The following versions of the above requirements have been tested. While we expect code to work on more recent versions, your mileage may vary.
For the benchmarks (see benchmarks/), GNU Coreutils binaries should work out of the box. However, the SPEC CPU 2006 benchmarks require providing a .tar.xz at the correct directory. We provide scripts (via Docker) to reproducibly produce binaries from the SPEC CPU source files, but are unable to upload the pre-compiled binaries due to the SPEC CPU license agreement. Please contact the authors of this paper if you need help with running on SPEC CPU 2006.
Note: evaluating ReSym is disabled by default, since it requires access to GPU compute to run within a reasonable amount of time. See more details in ./tools/evaluating_resym/README.md to enable it. While both are supported, instructions vary based on whether you have a fast GPU locally or remotely.
BSD 3-Clause License. See LICENSE.
TRex: Practical Type Reconstruction for Binary Code. Jay Bosamiya, Maverick Woo, and Bryan Parno. In Proceedings of the USENIX Security Symposium, August, 2025.
@inproceedings{trex,
author = {Bosamiya, Jay and Woo, Maverick and Parno, Bryan},
booktitle = {Proceedings of the USENIX Security Symposium},
month = {August},
title = {{TRex}: Practical Type Reconstruction for Binary Code},
year = {2025}
}
7 commits
Rust
58.3%
Python
22.0%
Java
9.0%
Just
4.6%
Shell
2.6%
Makefile
2.3%
Dockerfile
1.1%
[!NOTE] This repository contains the tooling to evaluate TRex against prior work, as shown in the evaluation section of the paper. For the core TRex tool itself, see the main repository.
just ghidra-test.trex repository has been correctly cloned within the current directory (you can use just trex to clone it into the correct path).
make inside the benchmark you want to test (within benchmarks/) to populate it with the raw binaries.cargo run --bin runner --release, and select the benchmark interactively.
Ctrl-C; we have done our best to add safeguards, but if you kill the runner halfway through, it is helpful to run htop to confirm that the underlying job has actually been killed.jobs-for-benchmark command after you've made your selections that you can copy-paste to run with the same settings.jobs-for-benchmark command will likely fix things), if there are a large number of failures for a particular job, running an individual command lets you see stdout/stderr for the job, which can help diagnose faults.benchmarks/ folder.
./benchmarks/coreutils/evalfiles/eval-binscores.pdf)./opt/ghidra.just ghidra-test will output "Confirmed" if Ghidra is installed successfully.See ./.docker/README.md for a Dockerfile that
installs the aforementioned requirements.
The following versions of the above requirements have been tested. While we expect code to work on more recent versions, your mileage may vary.
For the benchmarks (see benchmarks/), GNU Coreutils binaries should work out of the box. However, the SPEC CPU 2006 benchmarks require providing a .tar.xz at the correct directory. We provide scripts (via Docker) to reproducibly produce binaries from the SPEC CPU source files, but are unable to upload the pre-compiled binaries due to the SPEC CPU license agreement. Please contact the authors of this paper if you need help with running on SPEC CPU 2006.
Note: evaluating ReSym is disabled by default, since it requires access to GPU compute to run within a reasonable amount of time. See more details in ./tools/evaluating_resym/README.md to enable it. While both are supported, instructions vary based on whether you have a fast GPU locally or remotely.
BSD 3-Clause License. See LICENSE.
TRex: Practical Type Reconstruction for Binary Code. Jay Bosamiya, Maverick Woo, and Bryan Parno. In Proceedings of the USENIX Security Symposium, August, 2025.
@inproceedings{trex,
author = {Bosamiya, Jay and Woo, Maverick and Parno, Bryan},
booktitle = {Proceedings of the USENIX Security Symposium},
month = {August},
title = {{TRex}: Practical Type Reconstruction for Binary Code},
year = {2025}
}
7 commits
Rust
58.3%
Python
22.0%
Java
9.0%
Just
4.6%
Shell
2.6%
Makefile
2.3%
Dockerfile
1.1%