Files
opcodediff/README.md
T
2023-01-18 22:47:40 -08:00

75 lines
1.6 KiB
Markdown

# opcodediff
A set of tools for matching opcodes across different versions of the FFXIV
binary.
## Prerequisites
1. Ensure you have python >= 3.7 installed.
1. Set up a python venv:
```sh
python -m venv /path/to/venv/dir
```
1. Activate the venv
Linux:
```sh
source venv/bin/activate # csh or fish variants available as well
```
Windows:
```
venv\Scripts\activate
```
1. Install dependencies
```sh
pip install -r requirements.txt
```
1. Ensure you have [radare](https://github.com/radareorg/radare2) somewhere on
your path
1. For `traces-diff.py`, an NVIDIA GPU and CUDA support are highly recommended,
but not required. It might just take twice as long to train.
## Usage
Pass `--help` to any of the scripts for usage.
### Workflow for minor patches
Example:
```sh
python minor_patch_diff.py ffxiv_dx11.6.30.exe ffxiv_dx11.6.30h.exe > 6.30h.diff.json
```
Post-diff processing:
```sh
python generate_opcodes_file.py 6.30h 6.30h.diff.json Ipcs.6.30h.h
# TODO: Need a script to resolve opcodes for handlers with multiple opcodes
python generate_act_format.py Ipcs.6.30h.h
```
### Workflow for major patches
We'll need to generate "traces" as signatures for every packet handler.
Example:
```sh
python generate_deep_traces.py ffxiv_dx11.6.28h.exe 6.28h-traces
python generate_deep_traces.py ffxiv_dx11.6.30.exe 6.30-traces
python traces_diff.py 6.28h-traces 6.30-traces 6.30.diff.json
```
Post-diff processing:
```sh
python generate_opcodes_file.py 6.30h 6.30h.diff.json Ipcs.6.30h.h
# TODO: Need a script to resolve opcodes for handlers with multiple opcodes
python generate_act_format.py Ipcs.6.30h.h
```
###