.iretable project file: the address list, its pointer
chains, the value types, structures and scripts. iretable-tools works
with those files from the command line. It converts a Cheat Engine
.CT table into one, and exports back to .CT
where the fields map. Every field that does not carry across is listed,
so a lossy import is never silent. It also diffs two tables, shifts
fixed addresses after the main module moves, and lints a file for
problems before you open it. It touches files on disk only. It never
opens a process.
iretable.exe needs nothing else installed
Point iretable lint at a table and it lists every problem it
finds, then exits with a non-zero code. This is real output, from
tests/fixtures/malformed.iretable, a deliberately broken
table the tests use.
$ iretable lint broken.iretable
line 2: orphan-field: Field comes before any struct record; ignoring it.
line 3: bad-hex: Unreadable id or address; skipping that entry.
line 4: unknown-type: Unknown value type "weirdtype"; skipping that entry.
line 5: malformed-chain: Malformed pointer chain; keeping the entry as a fixed address.
duplicate-id: Duplicate entry id 4.
frozen-no-value: Entry 4 is frozen but has no frozen value.
6 problem(s) found.
$ echo $?
1
Each line names the problem and what the reader does about it: ignore
the field, skip the entry, or keep it as a fixed address. The exit code
is 1 when a file has problems, so lint drops straight into
a script or a pre-commit check.
lint reports them as notes, not problems.convert reads a .CT address list and keeps descriptions, value types, static addresses and pointer offset chains. Cheat Engine groups become entry groups, and the offsets Cheat Engine stores in reverse are put back base-first. export writes a .CT where the records map.lossy: line. On import these are usually hotkeys, freeze state and auto-assembler scripts. On export they are symbols, scripts, structures, freeze state and hotkeys.diff matches entries by description and location and names each changed field. diff and lint return 1 when there are differences or problems and 2 on a read error. --json on show, diff and lint gives the same results as JSON. On convert it prints the entry count and the lossy notes as JSON..iretable project files.iretable (headers 1, 2 and 3) and Cheat Engine .CT.CT reader is a small hand-written XML parser. The tests use Catch2 3.5.2iretable-tools-v1.0.1-windows-x64.zip, with iretable.exe.iretable versions 1, 2 and 3.CT import.CT--json outputIntended use. iretable-tools is for tables made while studying software you own or are authorized to analyze: your own programs, single-player games and CTF binaries. The tool itself never opens a process, but the tables it edits are for Pointer Lab, which does. Using a memory scanner against online or competitive games will very likely trip anti-cheat software and get the account banned. This is a research tool.
A file tool only. It does not attach to, read or modify any process. It does not resolve a pointer chain to an address either. That needs the live target, which is Pointer Lab’s job.
Cheat Engine tables carry more than an address list.
convert takes the address list and its pointer chains. It
does not convert auto-assembler scripts, hotkey bindings or Lua, and it
says so for each entry.
The binary is unsigned. Antivirus software or SmartScreen may warn on first run. Build it from source if you would rather not take a binary on trust.