Mr. Prepper Cheat Table. It's in progress right now.
God Mode fills Stamina, Health and Preparedness
Unlimited Money only works at the mailbox when buying stuff. Keep your Gold in a drawer and keep only one on you.
The mailbox gold will be 999 and you can buy anything. After, your one gold will be gone. Unlimited Money is an AOB scan, Give it some time. (may have issues)
Found Quick Naps that fills Stamina without using time, God Mode Should be Disabled.
Walk/Run Faster, also a AOB scan, Give it some time.
Unlimited Inventory Space again a AOB scan, Give it some time.
Agent Detections, It seems they can still see water usage, but electricity seems to be okay.
Unlimited Power should be enabled before blackouts occur - Also works for the story blackouts.
Instant Room Builds, Build new bunker rooms instantly.
CheatTables.net is going through frequent updates on the front and backend. If your revisiting, be sure to clear the cache your web browser keeps by pressing the CTRL and F5 key together to make sure your being served the latest of CheatTables.net!
Once development slows down, it will become a standard announcement when you should clear the website cache files
These are the Member Roles and Groups that are achievable to any active member of our community.
(this probably will be moved to its own page eventually)
⠀
⠀
⠀
⠀ Administration Roles:
Administrator — Achievable to pre-existing moderators that provide consistent excellences to our community.
Moderator — Achievable to any active, highly rated member of the community. Pre written exam is required for acceptance.
Member Roles:
Leet Member — Prove your skills go beyond the basics... ⠀
Perks:
Can hide online status
Can add a website in the UserCP
Can give/take more rep to/from members (+3)
Can give more rep per day (15)
Can use a custom user title (e.g. Newbie)
Can add a custom profile banner
Table Master — Provide exceptional, highly rated cheat tables to the community and provide consistent updates. ⠀
Perks:
Can hide online status
Can add a website in the UserCP
Can give/take more rep to/from members (+3)
Can give more rep per day (15)
Can use a custom user title (e.g. Newbie)
Can add a custom profile banner
Table Maker — Provide consistent cheat tables to the community. ⠀
Perks:
Can hide online status
Can add a website in the UserCP
Can give/take more rep to/from members (+3)
Can give more rep per day (15)
Can use a custom user title (e.g. Newbie)
Can add a custom profile banner
Educator — Provide educational tutorials to the community. ⠀
Perks:
Can hide online status
Can add a website in the UserCP
Can give/take more rep to/from members (+3)
Can give more rep per day (15)
Can use a custom user title (e.g. Newbie)
Can add a custom profile banner
Reserved:
VIP Members — Reserved for certain members. ⠀
Perks:
Can hide online status
Can add a website in the UserCP
Can give/take more rep to/from members (+3)
Can give more rep per day (15)
Can use a custom user title (e.g. Newbie)
Can add a custom profile banner
(Beta)
Members can establish their own groups/teams at any point so long as one of the member roles has already been achieved by the group leader. Member Groups is a way to stand out from the rest showing collaboration as a team to make custom products/services or cheats of any form.
Requirements:
Be established within the community offering value to other members.
Be active daily in some way, either posting new forums or answering members questions.
Must have a trusting track record.
Have a community reputation of at least +20
Perks:
Can make and use the groups custom badge.
Can make and use the groups custom stars.
Can make the group member usernames custom; fonts/colors.
Groups own private sub forum for group members.
Ability to promote products and services (pinned threads for x days).
Ability to add a custom page to the forum promoting products or services (coding experience required).
Backlinks to websites in the group members signatures.
Posted by: Do0ks - 04-18-2024, 01:31 AM - Forum: Tables
- No Replies
Still so much to add, but here's some fun things to get you started. I think it'll be best if you freeze anything you want to stick when transitioning between scenes.
Updates:
Added Current Equipped Item, Some Fun Tweaky stuff, and fix gravity. Renamed many values.
Real quick, I wanted to post a guide on how to quickly identify the engine the game your reversing uses. I'll keep this thread alive and update other engines as time goes by.
Unreal Engine
Unity Engine
Unreal Engine: A quick way to see if the game uses Unreal Engine is by checking the properties in the file system. I'll show a demo with steam, but the method will apply to all game managers or manually navigating to the games directory.
In Steam, navigate to the game in your library, right-click -> Manage -> and click "Browse local files"
A new folder will appear, this is the directory the game is stored in.
Now just right click the .exe file, and select Properties.
In the Properties window, click Details in the top tabs and in the product version, it will list UE4 along with the version number.
(You can also navigate: \Engine\Extras\Redist\en-us and see the Unreal Engine prerequisites setup installer further confirming the Engine(It may vary based on the game)).
Unity Engine:
A easy way to see if the game is running on the Unity Engine is to check if the "Assembly-CSharp" data is present in the games directory. Another good indicator is if you see the word "mono" within the directory of the game. The example will be on steam, but the method will apply to all game managers or manually navigating to the games directory.
In Steam, navigate to the game in your library, right-click -> Manage -> and click "Browse local files"
A new folder will appear, this is the directory the game is stored in.
Right off the bat we see key words indicating Unity Engine, but lets find the csharp dll. Navigate into the _Data folder, for me its "Escape Academy_Data" -> Managed and there we should be able to locate the Assembly-CSharp.dll.
Note: I have seen the Assembly-CSharp.dll in different locations before, you may have to do some clicking around to find it. * Unreal Engines method can be used as another way of confirming Unity.
Posted by: Do0ks - 04-13-2024, 02:48 AM - Forum: Cheat Engine
- No Replies
I wanted to make a quick tutorial on a widely practiced technique for identifying new memory locations that link back to the original target of our injection process and different methods we can preform to find them. A common challenge arises when attempting to locate a primary address that, for example, directs us to the player class. However, upon inspecting this address, we encounter a complication such as every single value is routed through a singular address, single level pointers that render our efforts to inject here virtually unfeasible, and conducting a scan for commonalities results in the discovery of addresses that are both irrelevant and realistically unchangeable. We will be going over failed a scenario, then find the solution with some helpful tools while gaining a higher understanding of the game we are reversing.
In this tutorial I will be demonstrating on the game Bum Simulator. Assuming you have already found the address from something you want to manipulate (health, ammo, whatever), we should be looking at something like this:
Note: Some interesting points about the address, hunger.
First, we don't see any offsets indicating its a single level pointer.
We also see RAX is pointing to the same address as Hunger, so that's not our player class.
Scenario: Find Out What Addresses This Instruction Accesses:
If you don't already, It's a good habit to check to see if any other addresses use the instruction you're thinking about injecting into. Assuming we can just inject into an instruction and not gaining a fair understanding on how the game is operating will only lead to problems down the road. For this failed scenario, lets still see what instructions accesses this address. As this example demonstrates, we're "thinking" about injecting into the Hunger address, which will not work as expected.
In the memory viewer, click "Find out what addresses this instruction accesses" and let it scan.
After giving it a bit to gather the data, in hopes we can just inject into this instruction we find 10,000 addresses passing through this one instruction and it keeps climbing, so clearly that isn't going to work in our favor. Even trying to compare out instructions would be way to much effort and time consuming with a high probability we would fail. We could also look into the data dissect to try finding a new address, just to find out every address in there is also being passed through the same instruction and run circles around this, or we can take our note above into consideration.
Solution: Reversing Unreal Engine Games:
In Unreal Engine, several core object types and structures are frequently targeted and manipulated in the context of game hacking. Understanding these objects is crucial for anyone trying to reverse-engineer or modify Unreal Engine games. Here is a brief overview of the primary objects and their roles:
UObject: UObject is the base class for all objects in Unreal Engine. It provides the fundamental means for object management such as lifecycle management, serialization, and type information. UObject includes a wide range of game elements, from actors and components to data assets. Manipulating these objects can affect almost every aspect of the game.
UClass: UClass is a subclass of UObject that represents the metadata for an object class in Unreal Engine. It describes the structure of its instances, including their properties and functions. Understanding UClass objects is essential for dynamically creating instances or modifying class definitions at runtime.
UActorComponent and USceneComponent: UActorComponent is the base class for components that define functional behavior, while USceneComponent, a subclass of UActorComponent, includes transformation information such as location and rotation. Modifying these components can alter how actors behave and interact with the game world.
AActor: AActor is a primary element used to represent characters, props, and other entities within the game world. Actors are complex objects that interact with the game environment and other actors. Actors are central in game hacking for modifying game dynamics or behavior, such as changing character abilities or attributes.
UPackage: UPackage contains all the objects that are serialized together. This typically includes assets and all related data that Unreal Engine loads as a group. Understanding and manipulating packages can be crucial for modifying game content, loading custom assets, or unpacking game data for analysis.
UWorld: UWorld is an object that encapsulates all data required to create a game world, including levels, actors, and environmental settings. Manipulating UWorld can affect global game settings and behaviors, such as changing game maps or the state of the game world.
UFunction: UFunction, a subclass of UObject, represents a function in the scripting language of Unreal Engine (Blueprints or C++). It encapsulates executable code. Functions can be hooked or redirected to change game behavior dynamically, a common technique in cheat development.
UMaterial and UTexture: These objects are used for graphical elements. UMaterial defines the surface appearance of objects, and UTexture is used for texture mapping. Altering these can change how objects appear in the game, which can be used for both aesthetic mods and practical cheats (like making walls transparent).
Blueprints: Blueprints are a visual scripting system based on UObject that enables designers and developers to create complex game logic without writing code. Relevance in Hacking: Reverse engineering or modifying Blueprints can significantly change game logic and behavior.
*I will make a full tutorial on each object and how to find them in later tutorials.
There's a lot of options here, where would we even start? How would we start to explore these object to miniplate values in our favor? Thankfully, we have some very talented developers within the game hacking community. The best part they took the time to make awesome tools at no cost to use. I am a huge fan of these developers, as it really shows they're here for the community, and not necessarily the dollar.
Lets take a moment to talk about the differences between paid tools and free tools. Besides the obvious, over the years of game hacking I have found free, open source tools to be more useful than paid ones. The problem with paid tools is they're just "re-skinning" the UI or functionality on the tool, then calming to be superior over their competition as if they are reinventing the wheel. Free tools have the same functionality as paid tools and in my experience are overall higher quality and have higher development rates.
Paid:
Can revoke your access at any time.
Premium prices for essentially the same tools.
Tend to have lower development rates.
Free:
Higher development rates due to being open-source.
You can use the tool without fears of loosing access.
A developer who actually cares about the advancement of the industry as a whole.
I'm not saying paid tools are horrible. I have enjoyed paid tools in the past. I tend to gravitate to the open-source for the reasons above and I have found paid tools essentially do the same thing as free tools.
Anyway, the tool of choice for this task is a Unreal Engine Dumber by a user named Cake-san over at FearLess Cheat Engine Forum. You can download it Here. I take no credit for this tool and a true thanks to Cake-san for taking the time to make this tool for all of us to use. *You can confirm if your game is using Unreal Engine by following this guide Here.
Scanning with Unreal Engine Dumper:
First, Open a new Cheat Engine and load in the dumper you've downloaded and attach the unreal engine game your targeting.
I have downloaded every version that Cake-san has made. For some reason, sometimes older versions work on newer games, and vice versa. For this instances, I'll be using Dumper V7.3. Download and try the versions that work best for you.
Click "Unreal Engine" and navigate down and click "4 LocalPlayer", and look for "Pawn". As you can see, we have a new address, (2565925F340) pointing to our real player class... That was too easy.
Lets copy that address, add it to our cheat table and see what accesses to that address.
All we have to do is find any instruction that is writing with our base player address, 2565925F340. For me, its instruction that moves rax into rdx. You may have to scroll down comparing but once you find something with the base address, we can show that in the disassembler, and find out what addresses that instruction accesses.
To make sure that our base player address is the only address that is being passed through.
As you can see, 2565925F340 is the only address being passed. Now you can inject into this address and point out based on whats in your dissect data/structures which is explained in the tutorials listed above.
One last side note, with Cake-sans dumper, they have added a really handy option "Enable UE Structure Lookup". This will add names to your structure so you can more easily identify pointers.
Posted by: Do0ks - 04-10-2024, 12:47 AM - Forum: Announcements
- No Replies
MyBB's "MyCode" is a feature that allows users to apply various formatting options to their posts using simplified versions of HTML enclosed in square brackets. It includes basic formatting such as bold, italic, and underline; text alignment; links and images embedding; and even more complex formatting like lists and color changes. MyCode is designed to be user-friendly for those familiar with HTML, and it can also be customized by administrators to add new types of MyCode tailored to their forum's needs, which brings me to this post. As new MyCodes are added, this will be updated to reflect.
I have added the ability to link steam games to your threads by using the markup:
Code:
[steam]Steam_URL[/steam]
You can find complete documentation on MyCode in the help documents at the top, or by clicking Here
Posted by: Do0ks - 04-01-2024, 12:08 AM - Forum: Cheat Engine
- No Replies
I've decided to split this thread into two parts, as its daunting reading through the whole thing in one thread. Here is the continuation to How To Find Pointers With Cheat Engine (Tutorial). This tutorial covers how to point though opcodes to set a foundation to making your own cheat tables.
Step 3.2.0: Pointing through opcodes This is an more advanced method of pointing to a address. Forgive me because I'm sure I'll butcher this explanation. I usually try this method first, and if I have to, I'll use the above method second. This also sets you up for making a pretty decent cheat tables, especially because you'll be pointing to the class which may point to other things. For example, if we found health, that is probably in the player class and it should contain other objects like stamina, ammo, etc. For this example, I want to find things regarding my car in the game. Repeating Step 2: Finding the Initial Address of a value I can see (gas), I right click the value and select "Find out what writes to this address" and agree to attach the debugger.
Step 3.2.1: Displaying opcodes A new window will pop up, you may instantly see something, other times nothing will show up. If something shows up, that means something, somewhere is constantly writing to the address. This could be anything from shared addresses, to game ticks, to something always checking the address. If nothing shows, you'll have to force that value to be written to. For example, ammo. You'll have to fire a bullet for it to be invoked. Either way is fine. For me, I had something always writing to the address so I didn't have to drive the car in game to get the gas value to change.
Step 3.2.2: Evaluating the Opcode The image above has a lot going on with it but its actually pretty easy to understand. Lets brake it down. At the top, we see similar instructions, but focusing on the top instruction, "18E8D44CEDD - F3 0F11 6E 48" we see the instruction "movss [rsi+48],xmm5" which is the assembly code saying "move the value that's in the register xmm5 into rsi at the offset of 48". Okay, so we have to figure out what rsi is, and what's in xmm5. Moving down, we can see rsi is actually an address to something. Further, we can see that xmm5 holds the value of 99.96 (to see registers values click "More information", in the new window click "F"). When comparing the xmm5s value to our gas value, we can safely assume that xmm5 does hold the gas value and the fact our gas value is being written to the address in rsi, we can assume that's our base class address to the car... Makes sense? Next, lets see what's going on in the rsi address.
Step 3.2.3: Evaluating the base address (PRO TIP: I guess i should have mentioned this earlier, but now is better than never! Cheat Engine has a "Mono" Dissect feature that really is a blessing for unity games. Usually, unity games ships with the "source" called "Assembly-CSharp" that can be stripped down and you can view the raw c# code, make modification to, etc. Cheat Engine has the ability to take that and give meaningful names to opcodes address. If you're playing with a unity game you can enable this on the main Cheat Engine window at the top menu bar under "Mono". Click "Activate mono fetures")
Anyway... Lets copy the address in rsi dropping all the 0's in the beginning "18F8F632D20" and click "show disassembler" which will prompt with the memory viewer window. In the memory viewer, in the top menu bar navigate to "Tools -> Dissect data/structures"
A new window will pop up, place your address of rsi into "Group 1" and again, at the top menu bar select "Structures -> Define new structure". A new window will pop up, just hit okay here and Cheat engine will display every offest that address controls... Here, you may have a bunch of pointers depending on how big your game is. Remembering the quote from step 3.2.2, ""movss [rsi+48],xmm5" which is the assembly code saying "move the value that's in the register xmm5 into rsi at the offset of 48"". We know our gas to the car is at offset 48, so lets try to find it.
Cool... we found our address again, in the structure that controls the car. You will also see other good things in here like the total capacity of the fuel tank, the consumption rate to even the durability of the car. Lets not get ahead of ourselfs and actually do what we really wanted to do in the first place, a pointer to the opcode. (You'll wanna keep this window open.)
Step 3.2.4: Foundation for Pointer to Optcodes Head back to your memory viewer. The opcode should be selected already from the previous step but if its not, you can repeat steps 3.2.0 to the first part of 3.2.3 that states "Lets copy the address in rsi dropping all the 0's in the beginning "18F8F632D20" and click "show disassembler" which will prompt with the memory viewer window". In the memory viewer, navigate to the top menu and select "Tools -> Auto Assemble". In the new window, again, in the top menu select "Template -> Cheat Engine framework code" then yet again, in the top menu select "Template -> Code Injection". In the new window that popped up, click okay. You should see something similar to this.
Step 3.2.5: Editing the Optcodes Now to dip into the coding aspect. We have 5 things we have to add so we can point out to other addresses. We have to allocate some memory to hold our base address in, register a new symbol so our code can be used outside of this script, declare a value in our new variable, move our address into our new variable and finally, if we shut off the script deallocate our memory so it doesn't linger around. I always like to follow suit of the code that is already there.
First, allocate memory with "alloc(car,4,CarGasTank:FuelConsumption+7d)" I called it "car" so i can remember it easily, I gave 4 bites of memory as we are just storing a address, and then told cheat engine to find memory as close to CarGasTank:FuelConsumption+7d as possible.
Now, right below that I register a symbol with "registersymbol(car)"
Now declare your new variable with "car: dd 0"
Now in newmem: lets move the address from rsi to our newly made car:
Finally, lets remove everything if and when the script is disabled.
In the end, your script should look something like this
If you're still here, 1s in the comments. Soooo much! Good job. The last thing we need to do with the coding part is add this script to our cheat table. In the menu bar click "File -> Assign to current cheat table", close out of the Auto assemble code and navigate back to Cheat Engines main screen. There you will see your newly added script labeled "Auto Assemble script". You can rename this to whatever you want, or just leave it.
Step 3.2.5: Adding our pointers. Now the fun part. Lets add our gas back into the cheat table that's pointed to our newly coded script. Right above the cheat table, where your script is, to the right click "Add Address Manually". A new window will pop up. Here we can click the "Pointer" check box, in the bottom box, we would place the word "car" and above that we can add our pointer to the gas, 48. Click "Okay".
In the main Cheat Engine all we have to do now is enable our script and well see the value generate! (remember, if you didn't have anything constantly writing to the address in step 3.2.1, you will have to invoke it for a opcode to run through that address. There's other methods to finding a constantly writing value but I wont cover that in this)
That's all! Hope someone finds this useful and if anyone else has anything to add, or has a better method, please, let us know! (P.S, Remember the window I told you you're going to want to leave up in 3.2.3? What other values can you add? )