Skip to content

Is a Cheat Table Safe? How to Check a .CT File Before You Use It

Cheat-Engine.net By Cheat-Engine.net 8 min read 35 views

A .CT file is plain XML, but it can carry Lua and Auto Assembler scripts and embedded files. Learn what to look for, which functions deserve caution, and how to review a table first.

A cheat table is a small text file, so it is easy to assume it cannot do any harm. That is mostly true while it sits on your disk. Once you load it into Cheat Engine, though, a table can run code, and that code runs with the same permissions as Cheat Engine. Most shared tables are exactly what they claim to be, but nobody can promise that about a file without reading it. This guide shows you what a table can contain, which parts deserve a closer look, and how to review one before you use it.

What a .CT file is

A .CT file is XML: structured plain text that you can open in any text editor. A minimal table looks roughly like this:

<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Gold"</Description>
      <VariableType>4 Bytes</VariableType>
      <Address>"game.exe"+01A2B3C0</Address>
      <Offsets>
        <Offset>18</Offset>
        <Offset>10</Offset>
      </Offsets>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Opening a table in a text editor, or in our online CT viewer, which runs entirely in your browser, does not execute anything. Reviewing a table this way is always harmless.

What a table can contain

  • Value and pointer entries. An address, a type and a description. These only read and write the game's memory. The main risk is to the game: a wrong value can crash it or end up in your save.
  • Auto Assembler scripts. Script entries that patch the game's code when enabled. Normally they only touch the game process, but the Auto Assembler can also load DLLs into the game and can contain embedded Lua blocks, written as {$lua} ... {$asm}, that run as Lua when the script is enabled.
  • A table Lua script. A Lua script attached to the table as a whole, stored in a LuaScript section of the file. It can run when the table is loaded, before you tick anything. Lua in Cheat Engine is a full scripting language with access to files, other programs and the network.
  • Embedded files. A table can carry files inside it, stored in encoded form. Authors use this for images, sounds or helper data, but a script can also write an embedded file to disk and run it.
  • Forms and structures. Custom windows (for trainer-style interfaces) and data structure definitions. Forms are usually driven by Lua, so they come with Lua code to review.

How Cheat Engine asks before running a table's Lua script

When you load a table that contains a table Lua script, Cheat Engine shows a prompt asking whether you want to execute it. This prompt exists precisely so you can decide after reading the script, not before. Good habits:

  • The first time you load a table, decline. The entries still load; only the table script is skipped.
  • Read the script. You can view it from inside Cheat Engine through the Table menu, or more comfortably in the CT viewer or a text editor.
  • If the script looks fine, reload the table and accept.
  • Leave Cheat Engine's setting that asks before running table scripts on. Switching it to always run removes your chance to check.

Note that this prompt covers the table script. Lua blocks inside Auto Assembler scripts run when you enable that entry, which is another reason to review scripts before ticking them.

What deserves caution

None of the following is automatically malicious. Several have legitimate uses. But each one gives a table abilities beyond changing game values, so when you see one, make sure you understand why it is there.

Function or featureWhereWhat it can do
shellExecuteLuaOpen a file or run a program on your PC
os.execute, io.popenLuaRun system commands
io.open with a write mode such as "w" or "wb"LuaCreate or overwrite files
getInternet and its download functionsLuaFetch data or files from the internet
loadstring, loadLuaRun code built from a string, which may be hidden or downloaded
package.loadlibLuaLoad a native DLL into Cheat Engine
injectDLL, loadlibraryLua / Auto AssemblerLoad a DLL into the game process
decodeFunction, long encoded blobsLuaRun compiled or obfuscated code you cannot read
Embedded files plus code that saves themTable files / LuaDrop a file on disk, possibly to run it
{$lua} blocksAuto AssemblerRun Lua when a script entry is enabled

Obfuscation is the clearest warning sign

Of everything above, code you cannot read deserves the most caution. A long string of random-looking letters fed into load, loadstring or decodeFunction, or a script that decodes text and then executes it, hides what the table does. Some authors obfuscate to protect their work, but you cannot tell the difference from the outside. If you cannot review it, do not run it.

Context matters

A table that calls getInternet to check for a newer version of itself and shows a message is not the same as one that downloads an executable and runs it with shellExecute. Read what the surrounding code does with the result. Values written to the game, messages shown to you and small settings files are normal. Programs run, files fetched from unknown addresses and DLLs loaded from unexpected locations are not things a cheat table for a single-player game normally needs.

A review routine before you enable anything

  1. Open the table in the CT viewer or a text editor. Check the list of entries against what the table page promises.
  2. Read the table Lua script, if there is one. Look for the functions in the table above.
  3. Search all Auto Assembler scripts for {$lua}, injectDLL and loadlibrary.
  4. Check for embedded files and find out what uses them.
  5. Load the table in Cheat Engine and decline the Lua prompt if you have any doubt. Plain value entries still work without it.
  6. Back up your saves, then enable entries one at a time, so that if something goes wrong you know which entry caused it.

The guide on how to use a cheat table covers loading, activation and troubleshooting in detail.

What a review does not tell you

Checking a table for risky functions is about protecting your PC. It does not guarantee the table works, and it cannot rule out game crashes or a corrupted save, which is why backups matter. It also changes nothing about where tables belong: single-player and offline games only. Using memory editing in online or multiplayer games affects other players and can lead to account bans, and no review makes that acceptable.

Get Cheat Engine itself from the official site

All of this assumes Cheat Engine itself is genuine. Download it only from the official site, cheatengine.org, read each installer screen and decline optional bundled offers. Cheat-Engine.net is an independent community site for cheat tables and is not affiliated with Dark Byte, the developer of Cheat Engine. Be wary of "Cheat Engine" downloads elsewhere, and of anything presented as a cheat table that is actually an .exe file. Cheat Engine can also produce standalone trainers and protected trainer files; these are much harder to inspect than a plain .CT file, so treat them with extra care.

Summary

  • A .CT file is readable XML; reading it is harmless, running it in Cheat Engine is not automatically so.
  • Value entries are low risk to your PC; scripts, Lua and embedded files deserve review.
  • Decline the Lua prompt until you have read the script.
  • Be most careful with code that runs programs, writes files, downloads, loads DLLs or is obfuscated.
  • Back up your saves and stick to single-player and offline games.

Comments

0
Replying to

Never shown publicly.

Comments are reviewed by a moderator before they appear.

No comments yet

Be the first to share your thoughts.