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 


[BUG]Cheat Engine 7.7 unregistersymbol(*) does not work

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
cannonfodderex
Advanced Cheater
Reputation: 0

Joined: 30 Oct 2012
Posts: 70

PostPosted: Wed Jul 01, 2026 8:23 am    Post subject: [BUG]Cheat Engine 7.7 unregistersymbol(*) does not work Reply with quote

I have a script which register 2 symbols
when I disable it , the unregistersymbol(*) does not unregister any of them.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 474

Joined: 09 May 2003
Posts: 25956
Location: The netherlands

PostPosted: Thu Jul 02, 2026 2:10 am    Post subject: Reply with quote

do you register them using the auto assembler registersymbol or do you use lua?

this code works fine:
Code:

[ENABLE]
label(symbola)
label(symbolb)
label(symbolc)
registersymbol(symbola)
registersymbol(symbolb)
registersymbol(symbolc)

//code from here to '[DISABLE]' will be used to enable the cheat
00400500:
symbola:


00400600:
symbolb:


00400700:
symbolc:
 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat

unregistersymbol(*)

_________________
Tools give you results. Knowledge gives you control.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
cannonfodderex
Advanced Cheater
Reputation: 0

Joined: 30 Oct 2012
Posts: 70

PostPosted: Fri Jul 03, 2026 6:42 pm    Post subject: Reply with quote

I rechecked the whole process.
It's not unregistersymbol(*) failed, but script enable failed in a weird way.

How to reproduce:
Enable the script, which is successful
Then disable the script, checked in memory view, both symbol is unregistered, it shows normal address in their former position, and I can't use goto address with them.
uncheck activate mono features, close cheat engine
restart cheat engine, load table , auto activate mono features by the table option
try to enable the script, it fails and shows an error as below pic.
I checked in memory view, both symbols are registered, but code inject did not happen.

It might be caused by cheat engine 7.7 activate mono features in consistency.
It behaves like this:

Start game
Start cheat engine 1st time, activate mono features always fail, and a dialog "failure to launch" pops up, sometimes even mono menu will not show. If I execute LaunchMonoDataCollector() in table lua screen, the output will print "Library Injection failed or invalid module".
Close cheat engine and start it the 2nd time, activate mono features will success, and everyting works fine.
Close cheat engine again and start it the 3rd time, activate mono features will success, I can view .net info and jump to function in memory view by double click function name, But script will fail to enable, symbols are registered, but code inject did not happen.
Close cheat engine again and start it the 4th time, activate mono features will success, sciprt can be successfully enabled if I didn't try to enable and fail in the 3rd time.

While cheat engine 7.6 on the same machine can always activate mono features successfully.

This is my script:

Code:

{ Game   : Silence of the Siren.exe
  Version:
  Date   : 2026-07-01
  Author : CannonFodder
  Description :

  <Optional info>
}

[ENABLE]

aobscanfunction(PlayerGetFogOfWarInject,Hosaf.Player:GetFogOfWarLayer,48 8B 47 30 0F B6 40 78 85 C0 0F 84 ** ** ** ** 48 B8 ** ** ** ** ** ** ** **)  // should be unique in this function
alloc(newmem,$1000,PlayerGetFogOfWarInject)

label(code)
label(return)
registersymbol(playerAddr)

newmem:
  mov [playerAddr],rdi
code:
  mov rax,[rdi+30]
  movzx eax,byte ptr [rax+78]
  jmp return

playerAddr:
  dq 0

PlayerGetFogOfWarInject:
  jmp newmem
  nop 3
return:
registersymbol(PlayerGetFogOfWarInject)

[DISABLE]

PlayerGetFogOfWarInject:
  db 48 8B 47 30 0F B6 40 78

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Hosaf.Player:GetFogOfWarLayer+16

1E25D21575A: 00 00                          - add [rax],al
1E25D21575C: 00 00                          - add [rax],al
1E25D21575E: 00 00                          - add [rax],al
Hosaf.Player:GetFogOfWarLayer: 55                             - push rbp
Hosaf.Player:GetFogOfWarLayer+1: 48 8B EC                       - mov rbp,rsp
Hosaf.Player:GetFogOfWarLayer+4: 48 83 EC 30                    - sub rsp,30
Hosaf.Player:GetFogOfWarLayer+8: 48 89 75 F0                    - mov [rbp-10],rsi
Hosaf.Player:GetFogOfWarLayer+c: 48 89 7D F8                    - mov [rbp-08],rdi
Hosaf.Player:GetFogOfWarLayer+10: 48 8B F9                       - mov rdi,rcx
Hosaf.Player:GetFogOfWarLayer+13: 48 8B F2                       - mov rsi,rdx
// ---------- INJECTING HERE ----------
Hosaf.Player:GetFogOfWarLayer+16: 48 8B 47 30                    - mov rax,[rdi+30]
// ---------- DONE INJECTING  ----------
Hosaf.Player:GetFogOfWarLayer+1a: 0F B6 40 78                    - movzx eax,byte ptr [rax+78]
Hosaf.Player:GetFogOfWarLayer+1e: 85 C0                          - test eax,eax
Hosaf.Player:GetFogOfWarLayer+20: 0F 84 3E 00 00 00              - je Hosaf.Player:GetFogOfWarLayer+64
Hosaf.Player:GetFogOfWarLayer+26: 48 B8 80 38 DD 7F E0 01 00 00  - mov rax,000001E07FDD3880
Hosaf.Player:GetFogOfWarLayer+30: 48 8B 00                       - mov rax,[rax]
Hosaf.Player:GetFogOfWarLayer+33: 48 8B C8                       - mov rcx,rax
Hosaf.Player:GetFogOfWarLayer+36: 83 39 00                       - cmp dword ptr [rcx],00
Hosaf.Player:GetFogOfWarLayer+39: 48 8B 80 F8 00 00 00           - mov rax,[rax+000000F8]
Hosaf.Player:GetFogOfWarLayer+40: 48 8B C8                       - mov rcx,rax
Hosaf.Player:GetFogOfWarLayer+43: 83 38 00                       - cmp dword ptr [rax],00
}



NoMono.png
 Description:
 Filesize:  6.23 KB
 Viewed:  44 Time(s)

NoMono.png



activate mono fail to launch.png
 Description:
 Filesize:  4.36 KB
 Viewed:  44 Time(s)

activate mono fail to launch.png



AddrSymbol.png
 Description:
 Filesize:  11.47 KB
 Viewed:  53 Time(s)

AddrSymbol.png



AOBInjectSymbol.png
 Description:
 Filesize:  34.66 KB
 Viewed:  53 Time(s)

AOBInjectSymbol.png



Error.png
 Description:
 Filesize:  8.76 KB
 Viewed:  53 Time(s)

Error.png




Last edited by cannonfodderex on Fri Jul 03, 2026 7:19 pm; edited 1 time in total
Back to top
View user's profile Send private message
Csimbi
I post too much
Reputation: 98

Joined: 14 Jul 2007
Posts: 3401

PostPosted: Fri Jul 03, 2026 6:50 pm    Post subject: Reply with quote

Put in front of registersymbol(playerAddr) this: label(playerAddr)
Back to top
View user's profile Send private message
cannonfodderex
Advanced Cheater
Reputation: 0

Joined: 30 Oct 2012
Posts: 70

PostPosted: Fri Jul 03, 2026 7:26 pm    Post subject: Reply with quote

Csimbi wrote:
Put in front of registersymbol(playerAddr) this: label(playerAddr)


You are right, I can successfully enable the script in the 3rd time I start cheat engine now.

The activate mono features still have inconsistency though, I edited the previous post and added those information before I see your reply.

Update:
Open process again will have effect like restart cheat engine, so the problem might be on the attach process part?
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