Files
opcodediff/README.md
T
Flawed d3320a4677 Update opcode file reader to only apply changes lines with old version
- Also updates readme with this change
- And switch from minor_patch_diff vtable_diff in the recommended
  workfloww for minor patches
2023-03-06 23:55:39 -08:00

1.6 KiB

opcodediff

A set of tools for matching opcodes across different versions of the FFXIV binary.

Prerequisites

  1. Ensure you have python >= 3.7 installed.

  2. Set up a python venv:

    python -m venv /path/to/venv/dir
    
  3. Activate the venv

    Linux:

    source venv/bin/activate # csh or fish variants available as well
    

    Windows:

    venv\Scripts\activate
    
  4. Install dependencies

    pip install -r requirements.txt
    
  5. Ensure you have radare somewhere on your path

  6. 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