Cheat Engine Changelog

What's new in Cheat Engine 7.3

Nov 9, 2021
  • Additions and changes:
  • Added dark mode support (restart CE when you change the setting)*
  • All saved results are now shown in the foundlist (can be turned off)*
  • Groupscan now supports pointer wildcards. (only valid if the field is a proper pointer)*
  • Hotkeys can be repeated by releasing the key and repressing if the repeat timer hasn't finished yet*
  • Structure dissect add to addresslist uses the addressstring instead of number, so symbols will be preserved*
  • Structure dissect now has a option to save the previous state of a column and show changes easier*
  • Middle-mouse clicking now copies the value of a structure element to your clipboard*
  • Added {$LUACODE} blocks for inline Lua coding*
  • Added a c-compiler to CE*
  • Added {$C} blocks to the auto assembler. all {$C} blocks get combined into one script before execution*
  • Added {$CCODE} blocks for inline C coding (Check the forum, wiki, CE patreon discord or CE's youtube)*
  • Added a C# compiler (compilecs)*
  • Added routines to do .NET(and mono) method detouring. .NET info has a new contextmenu where you can create a detour template for the autoassembler*
  • Added invoke method to the .NET Info window as well*
  • [Disable] sections can now reference labels, defines, AOBScan results, and allocs created in the [ENABLE] section*
  • Userdefined symbollist has a secondary list for CCode symbols*
  • The change address window now also supports relative offsets*
  • DBVM speed improvements*
  • DBVM has an extra security level, and added dbvm_setKeys to easily change the access codes*
  • DBVM has now some basic support for nested VM's (only so you can run them, not yet modify)*
  • New debugger interface: DBVM-level debugger*
  • Improved performance of "Find what access/writes this address"*
  • Dissect code now lets you specify custom ranges*
  • Addresslist value sort now sorts values by alphabet if the record is a string type*
  • The dropdown list of multiple entries can now be changed at the same time*
  • Standalone register window now shows flags values as well*
  • Value Between scans now autoswap the order if the first value is bigger than the 2nd*
  • Fixes:
  • fixed some games freezing CE when symbols where accesses*
  • Lua debug now shows for loop variables*
  • several windows now save their position, and won't get corrupted if you don't show them the first time running CE*
  • fixed createthreadandwait when using a timeout*
  • fixed disassembling vcvtsi2ss*
  • fixed compare to first scan if it's a large block, and made it more efficient*
  • ceshare: logout fixed*
  • fixed assembling movsq*
  • fixed ultimap ret filter*
  • fixed luapipe never calling OnError*
  • fixed vehdebug in 64-bit CE zeroing out the FPU registers in 32-bit targets*
  • fixed DBVM find what access/writes sometimes skipping entries on AMD*
  • fixed undo not working on memory records when using the single line editor*
  • fixed hide children group option when loading a table*
  • fixed some font issues in the break and trace window*
  • fixed pasting the other types in hexadecimal view*
  • fixed the symbolloader fully crashing on unknown pdb symboldata*
  • lua:
  • changes:*
  • saveTable won't ask to sign the table anymore*
  • messageDialog will work if you omit the buttonlist. (Defaults to mbOK then)*
  • added more customizabe button*
  • registerSymbol no longer errors out the whole script on failure. It now overwrites existing symbol*
  • .. much more. check celua.txt

New in Cheat Engine 7.1.0 (Nov 1, 2020)

  • Additions and changes:
  • Added support for il2cpp (mono)
  • Added support for .NET dll plugins
  • Change register on breakpoint now also affects FP and XMM registers
  • Added CEShare, a way to share your tables with other people
  • Improved disassembling
  • copy bytes+addresses now only does bytes+addresses
  • call filter can now use the unwind data for functions to get a decent list of instructions
  • structure dissect shows the pointerpath at the bottom
  • Follow register while stepping (rightclick the register to show the option)
  • registersymbol and label now support multiple definitions in one line
  • improved the speed of the structure list when getting data from a pdb
  • hexview: doubleclicking a non-byte value now shows in the type you set
  • added sorting to the found code dialog
  • added filtering to the changed addresses window
  • the debugger settings won't lock from changing anymore, still needs you to reopen a process to have an affect
  • added always hide children groupoption
  • group headers can act as address now
  • AA command createthreadandwait now has a timeout parameter
  • Assembler scanning improvement
  • Added an AVX2 version of CE, which will speed up all those floating point operations CE does so much...
  • Improved structure lookup for PDB files
  • Symbolhandler can now have the following types in front of pointers : (BYTE), (WORD), (DWORD), (QWORD), (CHAR), (SHORT), (INT), (INT64) to typecast the pointer to a value of that type
  • Structure dissect can detect vc++ and object pascal classnames now
  • Dissect code now also detects references to strings
  • Sorting the addresslist now sorts faster and more properly with regards to groups (depends on the level your current selection is)
  • Rightclick the addresslist header to bring up a menu which allows you to disable sorting
  • Improved the processlist responsiveness
  • The chosen floating point rounding type is now saved in the registry
  • You can now use (addresslist description) as an address
  • Improved autocomplete
  • Changes:
  • DBVM doesn't activate the TSC hook by default. You can still activate it by using dbvm_enableTSCHook()
  • Fixes:
  • Fixed memoryleak when opening a file for hexediting again
  • Fixed utf8 display of the dissect windows window
  • Clear the taskbar progress when using a custom scan
  • Hexview: Fixed changing the address when pressing a non char key
  • Hexview: Fixed changing the address when doubleclicking and then canceling
  • alloc with a prefered base is now more aggressive in getting the range you want
  • fixed mono symbol lookup while dlls are still being loaded
  • fixed the structure compare not giving a proper errormessage
  • fixed improper error messages in structure dissect
  • fixed opening process in XP
  • fixed potential deadlock with the symbolhander
  • fixed issue with using the process var as symbol
  • fixed default form size for some windows when using high DPI
  • fixed DBVM on systems that have the default MTRR set as 6 (e.g Asus systems)
  • fixed DBVM find what accesses with large datasets
  • Lua
  • New functions:
  • function onTableLoad(before)
  • sendMessageTimeout
  • createTimer(delay,function())
  • createStructureFromName()
  • createSynEdit()
  • changes:
  • fixed executeCodeLocalEx with certain parameter definitions
  • fixed openFileAsProcess
  • checkSynchronize has a timeout now
  • OnGetDisplayValue now also works on AA records(<script>)

New in Cheat Engine 7.0.0 (Aug 21, 2019)

  • Additions and changes:
  • Icons
  • Added a way to dissect and show a function's working using a diagram
  • Auto repeat option for unchanged value scans
  • Added lua formula scans
  • Moved the compare to first/saved from scan type to a checkbox
  • Added a scanner that can detect and undo memory changes in the target process code sections (patch scanner under tools in memview)
  • The tutorial now has a link to online help for each step
  • Added a toolbar for stepping while debugging
  • When a memoryrecord fails to activate, you can rightclick it and see why it failed
  • AutoAssembler will now cut down on the nop's used
  • Better error reporting in autoassembler scripts
  • DBVM can now dynamically adjust the TSC. This can be disabled if it causes performance issues with dbvm_setTSCAdjust(disable)
  • speedhack now also hooks gettickcount64
  • added dw 'utf16string' support
  • implement VPID support in DBVM (performance increase)
  • kernelmode->driverlist now also shows driver exports
  • kernelmode symbols now also show in the enum dll's and exports
  • change the way slow symbol lookup is handled
  • several small updates to the codecave scanner
  • several small updates to the hexview find window
  • Use defered pdb loading instead of waiting for it
  • Several more windows have been made DPI Aware
  • Add option to show processid's as decimal in the processlist
  • When pressing shift+space instead of space to follow an instruction you will now open a new memview window
  • Added *:undefined support for dropdown lists
  • Added init.lua files for translations to use
  • Stackview now shows symbolnames as well
  • Some extra windows will now save their location
  • Exe trainer generator now lets you change the default files
  • The description of conditional jumps is better to understand now
  • Ultimap2 can now keep the tracer files and scan kernelmode memory as well if desired
  • Groups now get created afgter the selected item
  • Smartedit can now also 'smart'-edit children
  • You can now pick a breakpoint type without having to go to settings, and once picked it will be the default type for Toggle breakpoints until changes again
  • Floating point screen will now stay within the screen
  • Clicking execute in the lua engine will now change focus back to the editor field
  • Debugger interface settings will now only lock after a succesful attach
  • Some translation improvements here and there
  • DBVM changeregonbp's are now displayed in CE's interface as well
  • The foundlist colors can be customized now
  • Improved DBVM cloak performance when more than 20 regions are cloaked
  • Implemented DBVM based execute watch and "find what addresses this code accesses"
  • Implemented DBVM breakpoints (They always execute afterwards, including execute bp's)
  • Improved autocomplete so it now doesn't delete old code
  • Added hotkeys to ultimap2
  • Fixes:
  • fixed BSOD in recent windows updates
  • fixed VEH debug not handling breakpoints when a thread is created/destroyed right at the same time as a breakpoint
  • fixed the stacktrace in 64-bit targets
  • fixed rounded Extreme for float and double scans
  • speedhack now waits for proper dll injection
  • several disassembler instructions
  • some assembler instructions
  • improved the stability of dbvm find what * routines
  • fixed the hit counter in dbvm find what * routines
  • fixed kernelmode symbol loading
  • fixed DBVM memoryleak when disabling watches
  • fixed DBVM internal memory manager (more stable now)
  • fixed internal VirtualToPhysicalCR3 when dealing with 2MB+ pagesizes
  • fixed using megajmp's in cloaked regions
  • fixed speech when using async records
  • fixed executeCodeEx for more than 4 parameters
  • fixed static field script in mono by adding 64-bit codegeneration
  • fixed mono process crashing in some cases
  • fixed megacall following
  • fixed NO_CACHE memory being scanned anyhow even if it was disabled
  • fixed dealing with floating point values that are too big to be useful
  • fixed setting DR7 to a strange value when using global debug
  • fixed clearing DR6 when in the wrong process in kernel debug
  • fixed triggering kernelmode breakpoints in locations you can not properly break (no interrupts)
  • fixed loading dbvm inside dbvm inside dbvm inside dbvm
  • fixed autoassembler replacing words in quoted strings
  • fixed processwatcher not getting a proper PID
  • fixed hotkeys triggering changed/unganged for types they aren't supposed to
  • fixed showing dr2, dr3 and dr4 types in the threadlist
  • lua: New functions:
  • compareMemory
  • encodeFunctionEx
  • enableKernelSymbols
  • waitForExports
  • waitForDotNet
  • waitForPDB
  • waitforsymbols
  • searchPDBWhileLoading
  • duplicateHandle
  • getScreenDPI
  • extendedToByteTable
  • byteTableToExtended
  • executeCodeLocalEx
  • executeMethod
  • allocateSharedMemoryLocal
  • (un)registerCreateCallback
  • (un)registerFirstShowCallback
  • (un)registerCreateCallback
  • dbk_usePhysicalMemoryAccess
  • dbk_setSaferPhysicalMemoryScanning
  • dbk_readPhysicalMemory
  • dbk_writePhysicalMemory
  • dbvm_addMemory
  • dbvm_removechangeregonbp
  • dbvm_speedhack_setSpeed
  • dbvm_setTSCAdjust
  • changes:
  • getWindowList now returns the results just like ce's window list
  • documented OnChangeBounds for the Control class (was already there, now documented as well)
  • executeCodeEx can now also taker just parameters without typedefs
  • added Data field to ListItem's
  • added description field to memrec.createHotkey method
  • added clear method to the menuItem class
  • readStringEx() can now deal with partial memory reads
  • executeCodeEx: Fixed more than 4 parameters
  • added Point type
  • fixed editbox selstart/sellength types, and added CaretPos
  • added HeaderSection class and document HeaderSections
  • added roundRect, drawFocusRect and textRect to the Canvas.
  • added ansicode character support for textRect
  • added loadFromStream and saveToStream to the RasterImage class
  • added readAnsiString and writeAnsiString to the Stream class
  • Better document the mode field of createFileStream
  • Expose the handle of the LuaPipeServer
  • Publish frmTracer
  • Publish frmUltimap2
  • Publish frmCodeFilter
  • Publish imagelist
  • Added the DrawItemEvent general GUI property to Lua's callback system
  • Added the MenuDrawItemEvent general GUI property to Lua's callback system
  • Added the ContextPopupEvent general GUI property to Lua's callback system
  • Created a new Diagram class group which can allow you to create graphs and diagrams
  • Memoryrecord.DropDownValue and DropDownDescription work now (still RO)

New in Cheat Engine 6.8.2 (Dec 27, 2018)

  • Fixes:
  • Disassembler: Several disassembler instructions had a comma too many or too few ,fixed those
  • Disassembler: Fixed the description for ret #
  • Disassembler/Debug: Fixed the address that is being edited when a breakpoint hits while editing an instruction
  • Assembler: Fixed assembling reg*2/4/8+unquotedsymbol
  • Plugin: Fixed the SDK for C plugins that use the disassembler callback
  • Hotkeys: Fixed the attach to foreground hotkey
  • Memory Scan: Fixed the percentage scan
  • Memory Scan: Fixed a rare situation that could cause an error
  • Memory Scan: Simple values now works with groupscan
  • Memory Scan Lua: Scanfiles now also get deleted if the memory scan object is freed before the scan is fully done
  • Fill Memory: Now allows 64-bit addresses
  • Structure Dissect: Fixed the popupmenu "change type" so it now affects all selected entries instead of just the first
  • PointerOrPointee window: Fix the debug pointer or pointee window button text when using access instead of writes
  • GUI: Fixed and restored the DPI Aware option in setting
  • GUI: Some DPI fixes/adjustments here and there
  • Graphical Memory view: Fixed DPI issues
  • Symbolhandler: When the symbolhandler now waits till it's done, it won't wait for the structures to be parsed anymore
  • Additions and changes:
  • Lua Engine: Added autocomplete
  • DLL injection: On DLL injection failure CE tries to fall back on forced injection methods
  • Assembler: Added multibyte NOP
  • Plugins: Plugins can now have side dll's that are statically linked in their own folder (Windows 7 with updates and later)
  • Debugging: Improved the FPU window editing when single stepping, allowing you to change the FPU registers
  • Debugging: Threadview now updates when single stepping and cnanges made there will affect the currently debugged thread (before it didn't)
  • Debugging: Added Code Filter. This lets you filter out code based on if it has been executed or not (Uses software breakpoints)
  • Debugging: Added an option to chose if you wish to break on unexpected breakpoints, and if CE should break on unexpected breakpoints, or only on specified regions (like AA scripts)
  • Disassembler: The comments now show multiple parameters
  • Pointerscan: Add option to allow negative offset scanning
  • Pointerscan: Add extra types to the display
  • Advanced Options/CodeList: Now uses symbolnames
  • Tutorial Game: Added a levelskip option when you've solved a step
  • Tutorial Game: Added a secondary test
  • Compare memory: Added a limit to the number of address values shown per row (can be changed)
  • Address List: When the option to deactivate children is set, the children will get deactivated first
  • Memory Scan: Add a lua script in autorun that lets you specify which module to scan
  • lua:
  • ExecuteCodeEx(Let's you execute code in the target and pass parameters)
  • Added 2 new parameters to getNameFromAddress (ModuleNames and Symbols)
  • Added addModule and deleteModule to the symbollist class
  • Added the ModuleLoader class which can force load dll's
  • Fixed endUpdate for the listview

New in Cheat Engine 6.8.1 (Jun 23, 2018)

  • Mostly a bugfix version of 6.8, but it does have a few minor additions
  • Fixes:
  • Fixed several issues with the structure compare
  • Fixed the commonality scanner from picking up unrelated registers for comparison
  • Fixed speedhack hotkeys
  • Fixed ultimap 1
  • Fixed a bunch of random access violations
  • Fixed Lua dissectCode.getStringReferences now also returns the string
  • Fixed Lua breakpoints that specify a specific function
  • Fixed Lua toAddress when the 2nd parameter is an address
  • Fixed assembling xmm,m32
  • Fixed issue when disassembling AVX instructions
  • Fixed rightclicking r8-r9 in the registers window
  • Fixed the plugin system for DBVM
  • Fixed DBVM memory allocations when smaller than 4KB
  • Additions and changes:
  • Added translation strings for the all type settings
  • You can now drop files into the auto assembler
  • auto assembler commands allocnx (allocate no execute) and allocxo (allocate execute only)
  • The memoryview windows's hexadecimalview now shows the allocationbase as well, and can be doubleclicked to go there
  • Added support for mono dll's that do not export g_free
  • Improved DBVM speed slightly
  • lua:
  • added RemoteThread class object

New in Cheat Engine 6.7 (Feb 15, 2018)

  • Fixes:
  • Fixed some DPI issues at some spots
  • Fixed the "Not" scan for ALL
  • "simple values" now also applies to the All type
  • Fixed not adding the 0-terminator to strings when the option was set to add it
  • Fixed ultimap hotkeys
  • Fixed ultimap2 filtering
  • Changing pointers in the change address dialog won't set/override global memrec and address anymore (local now)
  • Fixed show as signed not working for custom types
  • Fixed several issues with the structure spider
  • Fixed 64-bit registers in the tracer getting truncated on doubleclick, and fix r8 to r15
  • Fixed copy/paste in the scanvalue
  • Fixed kernelmode QueryMemoryRegions for windows build 1607
  • Fixed some disassembler errors
  • Fixed lua command fullAccess
  • Fixed text to speech if launched from a different thread
  • Fixed clicking on checkboxes when the dpi is different
  • Fixed the found code dialog count size
  • Fixed mono freezing Cheat Engine when it crashes/freezes
  • Additions and changes:
  • Changed the processlist and added an Applications view similar to the taskmanager
  • Small change to the tutorial first step wording
  • Structure Dissect: Added RLE compression (by mgr.inz.player) and other things to improve filesize
  • Structure Dissect: If setting a name, it will also be shown in the header
  • The symbolhandler can now deal with complex pointer notations
  • Added support for single-ToPA systems for ultimap2
  • Added some more spots where the history will be remebered in memoryview
  • Memoryrecords with auto assembler scripts can now execute their code asynchronous (rightclick and set "Execute asynchronous")
  • Kernelmode memory reading/writing is safer now
  • Added an option to filter out readable paths in the pointerscan rescan
  • Added "codePage" support
  • Added font/display options to several places in CE
  • Added a search/replace to the script editors
  • You can now delete addresses and reset the count from "Find what addresses this code accesses"
  • Added a statusbar to the hexview in memoryview
  • Pointerscan for value scans now add the results to the overflow queue
  • Opening a file and changing bytes do not change them to the file anymore (you need to explicitly save now)
  • Added an option to the processlist to filter out system processes
  • Added a system to let users sign their tables so you know you can trust their tables.
  • Memory record dropdown lists can now reference those of others. USe as entry text: (memoryrecorddescription)
  • Added an option to notify users of new versions of Cheat Engine
  • lua:
  • Custom Types can now be referenced from Lua
  • Auto assembler lua sections now have access to "memrec" which is the memory record they get executed from. Can be nil
  • stringToMD5String now support strings with a 0 byte in them
  • autoAssemble() now also returns a disableInfo object as 2nd parameter. You can use this to disable a script
  • added Action and Value properties to MemoryRecordHotkey objects
  • added screenToClient and clientToScreen for Control objects
  • added readSmallInteger and writeSmallInteger
  • added enableDRM()
  • added openFileAsProcess/saveOpenedFile
  • added saveCurrentStateAsDesign for CEForm objects
  • added disableWithoutExecute and disableAllWithoutExecute
  • added OnCustomDraw* events to the listview
  • added being/endUpdate for the Strings class
  • added SQL support
  • added color overrides to the disassembler text
  • added OnPaint to the CustomControl class
  • added autoAssembleCheck to syntax check an AA script
  • fixed the addresslist returning nil for PopupMenu (while popupMenu did work)
  • added an timeout option for pipes
  • added some graphical options
  • added some low level system functions