Press Alt+Shift+S on an instruction and this goes to x64dbg’s log, with the x64dbg form already on the clipboard. This is real output, from a function in the tutorial that ships with Pointer Lab.
[Signature Lab] pointerlabtutorial.exe+0x1670 (7FF7C43E1670) forward 20 bytes, 4 wildcards, unique x64dbg 48 89 5C 24 08 57 48 83 EC 20 48 8B 05 ?? ?? ?? ?? 48 8B D9 IDA 48 89 5C 24 08 57 48 83 EC 20 48 8B 05 ? ? ? ? 48 8B D9 code+mask "\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x20\x48\x8B\x05\x00\x00\x00\x00\x48\x8B\xD9" "xxxxxxxxxxxxx????xxx" Pointer Lab aobscanmodule(INJECT, pointerlabtutorial.exe, 48 89 5C 24 08 57 48 83 EC 20 48 8B 05 ?? ?? ?? ?? 48 8B D9) wildcards bytes 13-16 RIP-relative displacement instructions 7FF7C43E1670 mov [rsp+08], rbx 7FF7C43E1675 push rdi 7FF7C43E1676 sub rsp, 20 7FF7C43E167A mov rax, [00007FF7C440DBF0] 7FF7C43E1681 mov rbx, rcx copied x64dbg form to the clipboard
The four masked bytes are the displacement of mov rax, [rip+…],
which changes whenever the code or the global it reads moves. Everything
else is the shape of the function, which does not.
ret, into int3 padding or past a tail jmp is matching whatever the linker put next. Signature Lab flags it rather than handing it over as if it were safe.call, lea or mov that refers to it and prints the C++ expression that turns the match back into the address.??, IDA ?, code-style bytes and mask, a C++ array and a Pointer Lab aobscanmodule line, all logged at once. The clipboard gets the one you choose..dp64 and .dp32aobscanmodule lines$result for scriptsIntended use. Signature Lab is for studying software you own or are authorized to analyze: your own programs, single-player games, CTF binaries, and the Handbook’s lab targets. Using a debugger against online or competitive games will very likely trip anti-cheat software and get the account banned, and modifying software you do not have permission to modify may be illegal where you live. This is a research tool.
One pattern syntax trap. In x64dbg’s own pattern
syntax a single ? is half a byte, so an IDA-style pattern such
as 48 8B 05 ? ? ? ? finds nothing in x64dbg’s Find
Pattern. Use the x64dbg form, with ??, inside x64dbg. Signature
Lab’s own tester reads both.
The binaries are unsigned. x64dbg loads them without complaint, but antivirus software may flag a debugger plugin that reads process memory. Build it from source if you would rather not take a binary on trust.
Names that will not change. The Handbook quotes Signature Lab’s menu entries, hotkeys, commands and settings, so all of them are pinned for the whole 1.x series. A change to any of them would be a 2.0.