I know unreal engine has a massive problem with cheaters, cracking games and then creating cheating programs to boost health and stats and all that lovely stuff like damage etc, but I just had a cool idea, the only reason these cheaters are able to figure out what anything does is because we programmers have named everything in easy to understand lingo so as to aid us while we program, what if “you guys” at epic created an algorithm, that during the packaging process it automatically renamed all used variables to random letters and numerals ( understandable by the machines but not by us mere mortals ), now this might not prevent cheaters completely, not the really dedicated ones, but it would definitely make their jobs of cracking our games a lot harder, what do you think?
the code for that probably wouldn’t be that difficult either, get variable health, duplicate variable, rename variable health2 random integer ( if not previously used ), delete health ( original), replace all refrences to health with 1112022303302, see?
Game companies have been obfuscating and stripping shipped binaries for years, but no joy!
You can reverse engineer / debug just about anything, its just a matter of time / tools available.
Even the trickiest of self-modifying code / self-encrypting malware can be dissected eventually.
Take a look at the Stuxnet Zero-Days doc for example about how they broke apart that code etc.
ahh… just thought it was a good idea… too bad if they’ve already tried it… makes sense though logically, how else could they figure out what everything does? if all my code had weird names on all the variables I wouldn’t have a clue what was going on and that’s a fact… on a sidenote, why does it say I’m not authorised to view this page when I click on your reply in my message box???
There’s still ‘Branching’ at the Assembly level. Crackers can just set breakpoints same as in BP / C++!
I see these errors a lot too… Epic don’t seem to have fixed many of the ongoing bugs in the forums etc…
I see… thanks for pointing that out :), should have figured they would have already tried something like that, those guys are geniuses :)…
on a side note my weird messaging bug seems to have corrected itself??? dunno what’s going on there lol
Renaming variables won’t help. Take look at Cheat Engine, authors of trainers simply check what part of memory has changed after taking damage or healing. And this way they know how HP is stored.
You might be interested in following this and Burnz’s project:
Looks like you don’t have much knowledge about what a program is.
When you play a game, there’s no such thing as a “Health” variable. It’s just a place in memory with an adress with some value and the HUD just has an adress to that value
Naming Variables is just easier for the developer to recognize what you are working with. When compiling games (or programs in general) they get translated into native machine code.
(I don’t know how BP is compiled, probably into ByteCode for the BP VM)
Unreal has many mechanics to prevent cheating: Code should only run on Server, illegal RPCs are dropped etc.
The only problem are hacks that work locally (Aimbot for example. How do you want to check whether the mouse movements are real and valid?)
Actually I have a lot of knowledge about what a program is and how programs work, probably why i’m so fing deadly ;), but to be honest the variables are still accessible in ue4 from the console window, I’ve seen this in games such as skyrim, where people can call variables and functions the developer put in via the console, so my point is valid… sorry brah…
and yes… ffs… I know skyrim is made by Bethesda and uses their own engine, but same deal…
sorry if i’m coming across offensive, but I don’t like being told that I don’t know much about programs, when I’ve been learning about them and writing them for the vast majority of my life… I know that technically it’s just an address In memory… I already knew that… but there must be some naming conventions going on that link to the original code… for example… when you right a byte in binary it’s 8 bits and a bit is either a 1 or a 0… nothing gets removed… it just gets converted… so health variable is still health variable… it’s just been converted ultimately into 1 and 0’s… or at least that’s what I was taught in college… that all your variables end up converted and a string variable is just 255 bytes… can’t remember been a while since I learned all that stuff… anyway… it was just a suggestion… cause it seems unlikely they would be able to figure out what everything does from reading ram activity… very… very… unlikely… to be honest that seems superhuman… and we should question whether or not the machine overlords are the ones cracking our games… lol…
No, Raildex is correct. Naming conventions are totally irrelevant because variables names do not get carried forwards. It’s all memory addresses and values - as someone else rightly pointed out, a person wanting to identify which variables are held where in memory will use a memory scanner, and look at which addresses in memory change during the corresponding event - it takes some real patience but ultimately is not that difficult to do with a little experience.
Console commands almost never allow you to cheat in a multiplayer game; in UE4 the majority are server-authorative, if they’ve even been compiled -and those that exist are limited to which commands have been enabled in the first place. In the case of a singleplayer game like Skyrim, who the **** cares?
Cracking on the other hand is a totally unrelated activity.