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 


Reverse Engineer a trainer?

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

Joined: 21 Mar 2011
Posts: 46
Location: Canada

PostPosted: Mon Jan 19, 2015 6:05 pm    Post subject: Reverse Engineer a trainer? Reply with quote

Hi,

I was for a while interested in gamehacking and am now getting back into it. I've found a decent game to practise on, DuckTales Remastered, since values are easy to find and manipulate.
What I really wanted to achieve was a ghost or coin mode. The former being after a hit you flash and cannot be hit again, the latter being the mode you are in from collecting an invincible coin.
I have found a trainer that does the former (the latter only available at cheat happens). What I would like to do is see what the trainer is doing so that I can learn from it and then apply that knowledge to other games.
Back to top
View user's profile Send private message
Krampus
Cheater
Reputation: 0

Joined: 22 Nov 2014
Posts: 41

PostPosted: Mon Jan 19, 2015 8:50 pm    Post subject: Re: Reverse Engineer a trainer? Reply with quote

Attack wrote:
Hi,

I was for a while interested in gamehacking and am now getting back into it. I've found a decent game to practise on, DuckTales Remastered, since values are easy to find and manipulate.
What I really wanted to achieve was a ghost or coin mode. The former being after a hit you flash and cannot be hit again, the latter being the mode you are in from collecting an invincible coin.
I have found a trainer that does the former (the latter only available at cheat happens). What I would like to do is see what the trainer is doing so that I can learn from it and then apply that knowledge to other games.


It'd be easier to find these things yourself heh. For ghost mode, just search for an unknown value, then get hit and pause really fast, then search for increased, let the game go back to normal and search for decreased, etc.

As for coin mode, I'm not sure. If there are other pickups, such as coins themselves, you could reverse the pickup-item function and hope that they might be connected. Using C++, or any other high-level language, you can then call the game's pickup-item function with your own parameters, though that's pretty advanced. Maybe there's a value/timer when it's on that you could freeze?

_________________
There is no spoon.
Back to top
View user's profile Send private message
atom0s
Moderator
Reputation: 205

Joined: 25 Jan 2006
Posts: 8587
Location: 127.0.0.1

PostPosted: Tue Jan 20, 2015 12:17 am    Post subject: Reply with quote

It depends on the trainer and how it is coded. In some cases it can be something very simple, others it can be something a bit more involved.

A. Simple Trainers

In the case that the trainer is very simple and has no protection, you can set a breakpoint on WriteProcessMemory and ReadProcessMemory while debugging the trainer. Enable the option you want to find the information for and your debugger should hit one of the breakpoints. Dump the arguments from the stack to find the data being written/read and the size of the data etc.

However, not all trainers make use of these API and can sometimes go lower-level and use the NT calls instead to bypass typical trainer spying applications and methods.


B. Harder Trainers

Harder trainers may resort to DLL injection or protecting their work thoroughly through packers / protectors, anti-debugging tricks, use of non-common API (NT calls etc.) and so on. If this is the case then you are going to have to do a bit more work to find the data you want.

First, you can try unpacking the trainer out of whatever protection is being used, if any. Then try the above method I explained. Next, if the trainer is using dll injection, you can dump the dll being injected and then disassemble and analyze it in a disassembler like IDA.

Another method you can resort to if you fail to find what you need is load the game and Cheat Engine. In Cheat Engine pause the process fully so that the game does not alter any memory. Make a dump of the full process memory using your favorite dumping tool etc. Then enable the trainer option you want. Make another full dump of the process memory and compare the two dumps together. This will show you what was altered then you can find what you want.


Overall you should try to avoid just looking at others trainers / work and look into tutorials that show how to find things like this. However, referencing others work sometimes is a way for some to learn and understand what is happening. But if you land up stealing the option from the trainer and releasing it yourself, people will tend to check on other trainers and see if their work is being used etc to find rippers.

_________________
- Retired.
Back to top
View user's profile Send private message Visit poster's website
Geri
Moderator
Reputation: 111

Joined: 05 Feb 2010
Posts: 5627

PostPosted: Tue Jan 20, 2015 6:50 am    Post subject: Reply with quote

Ghost mode is usually achieved by searching for an increasing or decreasing timer, that stores how much time do you have until your ghost mode expires. If you freeze the timer, your ghost mode will last forever.

Eg the value may be 0, then you take a hit, it will "jump" to 200 and count down until 0. Once you reach 0, ghost mode ends. You freeze the value to 200 and you are a ghost forever.

Sometimes you can find a flag value, where the value is usually 1 if you are a ghost, 0 if you are not a ghost, but it may work the opposite way too, etc.

_________________
My trainers can be found here: http://www.szemelyesintegracio.hu/cheats

If you are interested in any of my crappy articles/tutorials about CE and game hacking, you can find them here:
http://www.szemelyesintegracio.hu/cheats/41-game-hacking-articles

Don't request cheats or updates.
Back to top
View user's profile Send private message
Attack
Cheater
Reputation: 0

Joined: 21 Mar 2011
Posts: 46
Location: Canada

PostPosted: Tue Jan 20, 2015 11:50 pm    Post subject: Reply with quote

Ok, so the best approach is to start from 0. I usually just learn faster by analyzing code.

As for stealing someone's work, I am only interested in making trainers for myself, for fun. No interest in competing with cheathappens and the like.


Thanks for the advice guys.
Back to top
View user's profile Send private message
Pingo
Grandmaster Cheater
Reputation: 8

Joined: 12 Jul 2007
Posts: 571

PostPosted: Wed Jan 21, 2015 8:37 am    Post subject: Reply with quote

I have this game on my pc. I've never scanned it for anything but I could start.
Want to to PM you things to try if I find anything? Or is this something you would rather do on your own. I don't mind either way.

_________________
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