Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


How to recover scripts from CE before closing after a crash

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Wed Jun 29, 2016 7:17 pm    Post subject: How to recover scripts from CE before closing after a crash Reply with quote

CE crashes every now and then, sometimes after you have created a few scripts but before saving.

If you are lucky, simply closing the game will give CE the kick back to life it needs to save the scripts. Other times, not so much.

So I opened the crashed CE in a fresh CE and scanned memory for things such as:
Code:
<?xml version="1.0" encoding="utf-8"?>

<CheatEntry>

<AssemblerScript>


but was only able to find the original scripts that were loaded into cheatengine.

So I searched for the script names of the crashed table and found names, but nothing I could parse into the script.

So I searched for the last viewable Address of my Pointers and found one unique address for each. Since CE was frozen, I couldnt trace anything to figure out how the address was being populated.

I tried searching for unique lines of code such as:
Code:
mov eax, [edi+4a4]

mov [edx+E0], (float)1


and found many instances of the line of code existing, but nothing that would show the other lines.

At this point, I gave up and decided to ask for help.
However, I'll see how CE populates them while running, and see if i can use that to reconstruct after it crashes.

Does anyone have any method of recovering unsaved scripts from a crash but before closing CE?

EDIT***
Tried again, but with a cheatengine that hadnt crashed.
Searching "[ENABLE]" (without unicode selected) gave me all of my recently edited scripts (even outdated versions)
Searching "[ENABLE]" (with unicode selected) gave me all of the original scripts

Hope this helps anyone who also has a cheat engine crash and doesnt want to redo their unsaved scripts
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Wed Jun 29, 2016 9:03 pm    Post subject: Reply with quote

I know this isn't what you're asking about, but here is an auto-save script.

As far as CE freezing up and becoming non-responsive, I have found that the best remedy is to just wait and do nothing.
Back to top
View user's profile Send private message
panraven
Grandmaster Cheater
Reputation: 55

Joined: 01 Oct 2008
Posts: 942

PostPosted: Wed Jun 29, 2016 9:49 pm    Post subject: Reply with quote

Here are some observation and speculation:

1. the real source is in acsii/utf8, not html escaped (as saved file content) ;
2. source begin at address alignment of 4 (source head);
3. somewhere before the source head, at address alignment of 4, there is a source length (backOffset) ; (tested backOffset can be as large as 56, max is set as 128)

So, if we know the exact text of the source head of a certain length, we can AOBScan for possible candidates and test with each backOffset.

Source head should be found by another instance of ce.
ie. found some unique source text, then scroll up.

The attached lua is trying to do this task.
Try made a Lua directory at ce dir, and put this lua there.


usage:
Code:

--To list possible candidates:
local findSrc = require 'findSrc'

-- one line
findSrc("--text of source head--")

--or if multiple crlf, note: the 1st crlf following long quite [[ is not count,
-- but last crlf just before closing ]] is count.
findSrc([[

--text of source head--]])

-- then it should list some candidates as:
Check aob:    0D 0A 0D 0A 2D 2D 31 32 33 35 35 37 37
Found possible, len=  1974, @ ( 0x03FB1540, 16 )
Found possible, len=     1, @ ( 0x03FB1540, 56 )
Found possible, len=  1974, @ ( 0x097C5CC8, 8 )
Found possible, len=  1152, @ ( 0x097C5CC8, 48 )

-- to see which candidate is the real source, run findSrc with the respective parameter,eg ( 0x03FB1540, 16 )

print(findSrc( 0x03FB1540, 16 ) )



It may not always work, as the backOffset is not fixed and too large, or the above speculation are wrong.

bye~


ADDED:
ah... I realized it only 'find' the lua source at main Lua Script Window, not the AA script for example. Sorry if I'm misunderstood~_~
ADDED:
work for AA script! Wink but has to recover 1 by 1.

ADDED:
ui version, same move the *.lua to lud directory of ce, then
Code:
local ui = require'findSrcUI'
ui.show()--to show
ui.hide()--to hide
ui.Destroy()--to destroy the form



findSrcUI.lua
 Description:
ui version, scan and Double Click candidates list.

Download
 Filename:  findSrcUI.lua
 Filesize:  3.85 KB
 Downloaded:  238 Time(s)


findSrc.lua
 Description:

Download
 Filename:  findSrc.lua
 Filesize:  1.36 KB
 Downloaded:  223 Time(s)


_________________
- Retarded.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites