-
Notifications
You must be signed in to change notification settings - Fork 103
Description
Description
Hello, to get this installed I had to do the following:
Add the following lines to pyproject.toml:
[tool.poetry.dependencies]
python = "^3.10"
First run
$ poetry add git+https://github.com/mechaphish/compilerex.git git+https://github.com/mechaphish/povsim.git
Only theese gives issues with tracer, I assume the wrong tracer package is installed so we need to do:
poetry add git+https://github.com/angr/tracer.git
Addionally shellphis_qemu does not specify the requirement setuptools so we need to add it ourselves.
(Otherwise shellphis gives this)
/shellphish_qemu/__init__.py", line 2, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
....
raise ImportError("Unable to import shellphish_qemu, which is required by QEMURunner. Please install it before proceeding.") from e
ImportError: Unable to import shellphish_qemu, which is required by QEMURunner. Please install it before proceeding.
I.e add setuptools
poetry add setuptools
And then run
$ poetry install
Finally the archr package we get is the wrong version, so we need to use the git version:
poetry add git+https://github.com/angr/archr.git
At this point we can import rex, but not use it as we are missing 'keystone-engine'
poetry add keystone-engine
The final pyproject.toml for me became
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[tool.poetry.dependencies]
python = "^3.10"
[project]
name = "rex"
version = "0.02"
dependencies = [
"angr",
"archr @ git+https://github.com/angr/archr.git",
"angrop",
"jinja2",
"povsim @ git+https://github.com/mechaphish/povsim.git",
"compilerex @ git+https://github.com/mechaphish/compilerex.git",
"pwntools",
"flaky",
"tracer @ git+https://github.com/angr/tracer.git",
"setuptools (>=80.9.0,<81.0.0)",
"keystone-engine (>=0.9.2,<0.10.0)",
]
[tool.setuptools.package-data]
"rex.scripter.templates" = ["*.j2"]
Finally after all this we seem to be able to import rex and run the simple test:
import archr
import rex
t = archr.targets.LocalTarget("./target")
with open('./input','rb') as f:
data = f.read()
crash = rex.Crash(t, data)
The fact that my test on my binary & input ends up in a desync error is out of scope for this issue.