75 lines
1.6 KiB
Markdown
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
|
|
```
|
|
|
|
### |