44c8ee8480bf65e75885181babaece6a54f90cfc
Rewrite the diff generation to generate a similarity matrix instead
opcodediff
A set of tools for matching opcodes across different versions of the FFXIV binary.
Prerequisites
-
Ensure you have python >= 3.7 installed.
-
Set up a python venv:
python -m venv /path/to/venv/dir -
Activate the venv
Linux:
source venv/bin/activate # csh or fish variants available as wellWindows:
venv\Scripts\activate -
Install dependencies
pip install -r requirements.txt -
Ensure you have radare somewhere on your path
-
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:
python vtable_diff.py ffxiv_dx11.6.30.exe ffxiv_dx11.6.30h.exe > 6.30h.diff.json
Post-diff processing:
python generate_opcodes_file.py 6.30 6.30h 6.30h.diff.json Ipcs.6.30h.h
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:
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:
python generate_opcodes_file.py 6.30 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
Languages
Python
91%
HTML
9%