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 


Value syncing problem

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
zm0d
Master Cheater
Reputation: 7

Joined: 06 Nov 2013
Posts: 423

PostPosted: Mon Aug 24, 2015 2:03 am    Post subject: Value syncing problem Reply with quote

Hi buddys,

currently trying to enable a feature for an online game, you can use offline but online it's disabled. So I figured out the address of the value and also got a valid static pointer. No problem so far. If the value is 0 the feature is disabled and if the value is 1 the feature is enabled. So far, so good... Creating offline game, change the value to 1 in CE and voilą, it works like a charm. My feature got enabled with not using the internal game menu.
Now, when starting an online game and changing value to 1 in CE, the game disconnects after a few seconds with a syncing problem. I thought that something like this will happen, so going to attach debugger with "Find out what accesses this address" and starting offline game... a dozen opcodes appeard... nothing special so far.. now letting debugger attached and checking wat access this address in online mode. Right when the online game starts, 5-6 opcodes add to the list. Those are more interesting, cause there are some checks if my address-of-interest is 0... If it's not 0, it get's set to 0 and later on, if it's still not 0, then I get unsynced and the game disconnects... Was to simple... changing the value later in the online game, after lets say 1 minute of playing, where all checks were done.

Now... I still get unsynced, even when I change the value after the checks are done. I tried this a couple of times and the "Find out what accesses this address" doesn't show me any further calls or new opcodes to my interesting address, when the game is running. How can this be? How can they access their value, without letting the debugger recognize it? Do they probably do some server-sided checks? If so, how can they send my local value repeatedly without letting the debugger know that it gets accessed?

Edit:
Right when reading my text again, I came to the idea, that they probably create a copy of my interesting value and use this one to check if all is synced?! Rolling Eyes

Greetz,
zm0d
Back to top
View user's profile Send private message
Gniarf
Grandmaster Cheater Supreme
Reputation: 43

Joined: 12 Mar 2012
Posts: 1285

PostPosted: Mon Aug 24, 2015 10:15 am    Post subject: Reply with quote

It could be that one of the functions that read your flag in offline mode is shared, and also used in online mode.

Or your feature itself could check if the game is in online mode and self-kick if used online.

Lastly I don't think a debugger would notice if a program used ReadProcessMemory on itself. I'm not very competent in that area but there are probably other kernel functions that an userland/ring3 debugger wouldn't catch, same thing with (protection) drivers reading a process' memory.DBVM which is a ring0 debugger should spot all those though.

_________________
DO NOT PM me if you want help on making/fixing/using a hack.
Back to top
View user's profile Send private message
zm0d
Master Cheater
Reputation: 7

Joined: 06 Nov 2013
Posts: 423

PostPosted: Tue Aug 25, 2015 2:35 am    Post subject: Reply with quote

Okay, thanks for your reply.

I spend a few more hours yesterday on determining what's going on there. They create a copy of my interesting value and this copy gets checked on different location if its value is 0. On events (keypress) and different, time-scheduled checks... I was able to bypass all those checks, but my interesting value seemed to be wrong in online mode.
When I was able to change the value to 1 in online match, it didn't enable my feature like it does in offline match. I guess I bypassed a check wrong, with writing a hardcoded 0 in a register... They might use this register somewhere for my feature... Need to dig deeper in it... Nasty issue, but that's what makes it somehow interesting.

Edit:
Funny sidenote - I realized that, when I got unsynced and I'm host, I win the match and my opponent loses... The other way around, when my opponent is host, the game just disconnect and no one wins/loses, but only if you're not losing the game. Poorly coded imo.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking 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