[Lua] Cheat Engine – Plugin | Instruction Finder

Utilities and third party tools used as an external or internal application for specific programs and games


Moderator: Table Moderator

Post Reply
User avatar
mul0
Novice Hacker
Novice Hacker
Posts: 36
Joined: Tue Dec 30, 2025 1:00 am
Answers: 0
x 52

[Lua] Cheat Engine – Plugin | Instruction Finder

Post by mul0 »

πŸ”Ž Instruction Finder β€” Plugin for Cheat Engine πŸ”Ž


Instruction Finder is a Lua plugin for Cheat Engine that helps you search the Memory Viewer β†’ Disassembler for matching instructions, then trace selected rows to collect accessed addresses, live values, hit counts, and unique access counts.

When debugging, reverse engineering, or creating trainers, it is often necessary to find which instructions access specific memory values. In large functions or noisy disassembly blocks, manually checking each instruction can take a lot of time.

This plugin makes the process easier by letting you scan a custom disassembly range, use wildcard-based instruction filters, select interesting instruction rows, and trace them directly from the result table.

It is especially useful when you need to quickly identify which instructions access which addresses during gameplay or runtime behavior.


Image


Image


πŸ“Œ Plugin Information


πŸš€ Plugin Features

  • βœ… Custom Disassembly Range Scan β€” Scan only the selected start/end address range.
  • βœ… Wildcard Instruction Search β€” Search instructions using *, **, ?, and @ tokens.
  • βœ… Instruction Presets β€” Quickly choose common scan patterns from the instruction field right-click menu.
  • βœ… Trace Selected Instructions β€” Trace one or more selected instruction rows with execute breakpoints.
  • βœ… Accessed Address Collection β€” Collect memory addresses accessed by traced instructions.
  • βœ… Live Value Display β€” View accessed values as bytes, integers, floats, doubles, or array of bytes.
  • βœ… Hit and Unique Counts β€” Track how many times an instruction is hit and how many unique addresses it accesses.
  • βœ… Access Filters β€” Filter stack-offset rows, single-access rows, shared-access rows, and duplicate accessed addresses.
  • βœ… Auto Refresh β€” Refresh accessed values in small batches.
  • βœ… Save and Load Results β€” Export and restore instruction/access tables as TSV files.

πŸ” Search Syntax

  • * or ** β€” Matches any text fragment.
  • ? β€” Matches one unknown character.
  • @ β€” Matches any general register except stack/base/instruction pointer registers such as esp, ebp, eip, rsp, rbp, and rip.

Examples:

  • mov al,[e**

Can match instructions such as mov al,[esi+000005A5] or mov al,[eax+10].

  • mov al,[@

Can match memory reads through different registers.

  • movss xmm?,[e**+00

Can match movss instructions with unknown XMM register numbers.


🧩 Built-In Instruction Presets

  • fld dword ptr [e+00

  • fstp dword ptr [e**+00

  • movss xmm?,[e+00

  • movss [e**+00*],xmm?

  • mov e**,[e+0

  • mov [***+0

  • cmp [e+

  • cmp byte ptr [e**+

  • test e,e


🧠 How It Works

  • Open Cheat Engine and attach it to the target process.

  • Open the Memory Viewer.

  • Open Search β†’ Instruction Finder or press Ctrl+Shift+E.

  • Set the start/end address range and enter an instruction filter.

  • Click Scan to find matching disassembly instructions.

  • Select one or more instruction rows that contain bracketed memory expressions.

  • Click Trace selected.

  • Run or trigger the target code so the breakpoints can collect accessed addresses.

  • Review the accessed addresses, live values, hit counts, and unique counts in the access table.


⌨️ Hotkeys and Shortcuts

  • Ctrl+Shift+E β€” Open Instruction Finder from the active Memory Viewer.
  • Ctrl+A β€” Select all rows in the active result table.
  • Ctrl+C β€” Copy selected rows from the active result table.
  • Delete β€” Delete selected rows from the instruction table.
  • Double-click instruction row β€” Jump to that instruction in the disassembler.
  • Double-click access row β€” Jump to the instruction address.
  • Shift + double-click access row β€” Jump to the accessed address in the hexadecimal view.

πŸ’Ύ Save / Load Support

  • Save instruction and access results as TSV files.
  • Saved files include plugin version, save time, value type, scan range, instruction filter, found instructions, and accessed addresses.
  • Load saved TSV files later to continue reviewing previous scan and trace results.

βš™οΈ Installation

  • Download "MiMemory Viewer - Instruction Finder.lua".
  • Place the file inside the Cheat Engine autorun folder:
    Cheat Engine\autorun\
  • Start or restart Cheat Engine.
  • Open Memory Viewer.
  • Select Search β†’ Instruction Finder or press Ctrl+Shift+E.

⚠️ Important Notes

  • Tracing uses Cheat Engine's debugger breakpoint API.
  • Only instruction rows with bracketed memory expressions can be traced.
  • The target code must run while tracing so the plugin can collect real accessed addresses.
  • Large scan ranges can take longer, so it is better to start with a focused range around the code you are researching.
  • Use Max unique and Max hits to control when tracing should stop.

πŸ’¬ Feedback & Support

  • Have suggestions, bug reports, or ideas for improvement? Leave a comment on the blog β€” feedback is always welcome! πŸ™Œ

Attachments
MiMemory Viewer - Instruction Finder (v1.0).zip
v1.0
- Initial release.
(122.64 KiB) Downloaded 4 times

Post Reply