Besides all this, the launcher already verifies the game client is up to date and complete, but doesn't do that every time you launch the game or even while playing. The game is more than 60 GB in size, which take some time to verify and monitor, evenon modern SSDs.
Also you don't really need certificates or something like that for addons. The game's UI code, based on Lua, already knows two different layers of code: trusted and untrusted. By default, most code runs in the untrusted mode, including large parts of the game's own original UI code. Untrusted code won't be able to do certain things, such as sending chat messages, trigger character actions, etc. to prevent people writing bots.
Anti-cheat measures, preventing hacks, etc. is something you can never perfect. It's always a race between developers (of the game and the tools/hacks).
TL; DR: Waste of time, because there'll always be some way or another to modify/change a game, because even anti anti-cheat tools can run at elevated levels and manipulate the code meant to protect the game, especially if there are bugs somewhere.
Anti-cheat measures, preventing hacks, etc. is something you can never perfect. It's always a race between developers (of the game and the tools/hacks).
And a wise developer would never discuss changes they make to prevent hacks and cheats.
Due to the forgotten, poorly documented nature of some community modding, it may be necessary for players to update all their add-ons to the registered published version the patch client software checks are released.
This is true. And a wise developer would never discuss changes they make to prevent hacks and cheats. Further, checking the integrity of the game at launch does not detect third party software that alters game performance after launch. One of the best-known cheating scandals in the game involved third party software that overrode the client after everything had launched.
Edit: that is also why we have server-side checks. The game launched with a trusted client that had the check on important information. It is more open to exploits so OP's suggestion would likely have the reverse effect without any real benefit.
A wise developer does not hide his problems, it is was a lazy person does.
Security by obscurity is one of the worst things you can do. A truly good solution is provably safe and anything else is but a hack around the issue.
What are you talking about? Registered published version of add-ons? How exactly do you expect that to work? How are people supposed to test add-ons before they publish them? And a publishing process would be a giant headache for the publisher, in this case ZOS. Doing so does not only require quite a bit of work but also puts responsibility for safety on them.
This won't happen and also WILL never happen.
And it's not even like add-ons, in their current base form, can be used to hack anyways. They can only interact with the game through a rather limited API. You suggest draconian scrutiny test in an area that most likely won't even get used by malicious actors.
You can't change the functionality of the API without changing the client, so if you were to do that, it can be detected through means other than certification of add-ons. The API is less so a filter as it is an intersection between client and add-ons.
Only default, only things ZOS explicitly allows to be used can be interacted with.
A proper implementation of certifaction would boil down to one of the following:Spoiler-Server generates two RSA keys.
-Server sends one to the client
-Client hashes its add-ons and encrypts each hash with the received key.
-Clients sends a dictionary with the ID of each add-on and the corresponding encrypted hash value.
-Server decrypts the received hashes and compares them with the saved hashes in the database (obtained through verification)
-Server allows/denies access depending on success.
-Bamn, 100% safe system unless someone invents quantum computers just so he can cheat in ESO.
OR
-Allow client access to the database of certified add-ons.
-Do the first option and pray the client actually bothers with it. Reminder, the client can never be trusted to perform anything.
-Bamn, you now have a system that only relies on the determination of the attacker.
And this system I described is extremely inflexible. Since it forces the add-on creator to certify every! single! release! Something that might sound ok, until you consider that a lot of these things are hobby projects, open source and most importantly *free fricking software*.
If creators were allowed to change their creations without the need to re-certify, then there would be no way to prevent certificates from being misused as there is no way to uniquely identify the code anymore. Nothing but obscurity would stop people from just forging certificates if that were allowed.
I'm also not really sure on the "improve performance" as any sliver of processing power used for security is one that can't be used for, well, actual game processing. That's not to say that the effort is in vain but it is always something that must be kept in the back of ones head.
And lastly:
Any add-on with the capability to be distributed can only use the standard API, and as such, any add-on that only relies on the API is secure through transitivity. Well, assuming the API is secure.
As such any centralized automated procedure will can only tell you one thing: "It can be interpreted without error". You could just place this check in the client itself as it doesn't help anyone but the end user.
So basically: If you can ensure the integrity of the client, there is no need to ensure integrity of add-ons.
Dormiglione wrote: »One of the loopholes is, that I can create a hard- or soft-link to any kind of content in place of the real app or modification, and then replace them as wished, after they have passed the tests.
Another loophole: I can create a modification which passes the tests, but then does completely different things ... much like the VW Diesel Scandal
Yet another one: I can have a legit modification which accesses remote scripts by any means the modification provides. That was recently prohibited by Apple and Google Play Apps.
And last not least, the verification process is very messy and lengthy. The only true alternative is to provide a reduced command set for, say LUA, which at most can annoy the player.
Really OP is just asking if there's anyway to make a trusted client so that the game can start running smooth, and there totally is. People scream impossible here or there, but there's a way to secure the client on standard PCs and Macs. Pretty much you'd need to buy or make a jail broken computer in order to overcome my proposals. And I'll find a way to patch that too.
Nothing on the client can be trusted absolutely. This is especially true of PC clients, since the bar is much lower. Only a remote server can tell if a client has been compromised.
I think there are ways to achieve this. Windows marketplace programs are sandboxed and run as protected processes. I think one of the perks of this way of doing things is that it prevents other programs from messing with the game's process and memory, thus preventing cheat engine-like manipulation of game values.
I really don't want to get into details, so this is the last of it from me. ZOS cannot secure ESO against a determined local user. They have unlimited access to the hardware and software. All ZOS can do is raise the bar to the point that it is very hard to bypass the anti-cheat security, then hope that the people who do break it don't make it trivial to bypass by some process that anyone can follow.
Awe man, your leaving when things are getting good. Look at all the possibilities!
I'm looking at the this windows protected process, it looks very appealing as grounds for a new concept that would request of Apple and Microsoft to create a new shell for gaming. There constantly looking for ways to make their systems better. With the rise of virtual gaming comes contributions and challenges to all in the field. Like UPnP was developed so can this.
If someone big game developer were to reach out and make the suggestion, I'm sure they'd listen.
For now though lets look at what we can do as a third party:relentless_turnip wrote: »Really OP is just asking if there's anyway to make a trusted client so that the game can start running smooth, and there totally is. People scream impossible here or there, but there's a way to secure the client on standard PCs and Macs. Pretty much you'd need to buy or make a jail broken computer in order to overcome my proposals. And I'll find a way to patch that too.
Exactly what I am proposing, thank you for trying to understand.
Every computer is or should be a jailbroken computer. If you are proposing something else, you are proposing malware. I’m sure ZOS has looked at this and decided the number of players (like me) who refuse to install a rootkit on their PC on philosophical grounds for any reason, including their favorite game, is greater than the number of people turned off by the cheating. Most players don’t even PVP anyway.
I'm not looking to develop a rootkit if you check out my thread (Though that may be a good Idea to help guard memory stored variables,) but in fact the my proposal would work more like anti-virus or other anti-cheats and monitor the system, not hide from it. This monitoring should be mainly a local process, with little data sent back to the server. I may have to develop the process out a bit more to be effective and respect privacy, but who isn't surrendering that to free services nowadays anyway... I think the only time it should send data is when it finds a tampering or a clashing program.kringled_1 wrote: »Really OP is just asking if there's anyway to make a trusted client so that the game can start running smooth, and there totally is. People scream impossible here or there, but there's a way to secure the client on standard PCs and Macs. Pretty much you'd need to buy or make a jail broken computer in order to overcome my proposals. And I'll find a way to patch that too.relentless_turnip wrote: »
As I have stated several times over the course of this thread I believe cheating would be easier to detect in the absense of all files not sourced from the developer.
I see the position you are taken, but I don't believe it is based on an accurate assumption.
I don't think actual add-ons trigger any confusion or problems with detection of cheat software, except in forum discussions like this one.
Pinja's point is related, but I think also misses key issues.
I don't believe that cheats have to be installed in the game directory, and as long as users have the ability to install and run other software with administrator privileges, you cannot guarantee that the client is completely trusted. If you want console level security, you need console level control - i.e. users cannot install untrusted software (anywhere on the machine), users cannot run software with administrator privileges outside of well defined system utilities, etc. This is not achievable within the PC gaming environment. Pinja's discussion of jailbreaking points to a misunderstanding; PCs and Macs (as opposed to iOS devices) are in essence by default jailbroken - user can install and execute code from sources of their own choosing.
Very good discussion. You bring up a great point about code injection that I'll have to address in my own thread. While you don't really want to control what is installed on a system, programs can control what is run on a system. Would this mean you'd need to know the name of a hackers program? Not necessarily. Anti-cheats already work with a blacklist but they are easy to work around. What you'd need to do is make a program be aware of when it's data is being tampered with. Totally possible, but I'll do more research before I get back to you.
Does this mean I come without an immediate solution, no not all.
There's a program called Respondus Lockdown Browser I use for school. It's an anti cheat software that monitors and stops applications trying to run through the network drive, and prevents users from using other applications. It even warned me about a windows update saying it could interrupt me while testing. I don't believe it goes as far as to stop all background tasks. For my solution though, that is a developmental option worth testing followed by the developing of a large whitelist.
Another solution is to make the games stored data variables unique to each game license and client. (And or use that rootkit idea to conceal them <_< ) Pretty much you'd encode the variables for the game than use permutations and combinations to assign them to clients and licenses. On top of that make a custom compiler encrypting them so that the code can't be as easily de-compiled using standard de-compilers. What this does is make it harder for hackers and programs to find a a variable like current stamina, because they wont know what to search the memory for. You can change the codes and encryption every update like a really secure password so that if they do find it, it'll expire. Say they do find it, the code and value identifier will be unique so that they can't redistribute the hack and you can narrow down who's hacking depending on what variables codes are being sent back. The servers of course would have to take data and decrypt it license by license, but preform little in terms of calculations. For debugging purposes have an option for support to assign new license encryption.
From ones perspective it'd be easier to plead with Microsoft and Apple and have them do the work.
If anyone wants to help continue or challenge the development of Client Software Checks take a look at the thread. Otherwise I got to up date back and forth.