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
2023-01-18 23:03:48 -08:00
2023-01-18 22:47:40 -08:00
2023-01-18 22:47:40 -08:00
2023-01-18 23:03:48 -08:00
2023-01-18 22:47:40 -08:00
2023-01-19 01:11:52 -08:00

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

S
Description
Scripts to compare opcodes across different FFXIV exe versions (mirrored from xivdev/opcodediff)
Readme MIT
545 KiB
Languages
Python 91%
HTML 9%