by ASH1138 » January 14th, 2013, 7:00 am
by wgfunstormcontest » January 14th, 2013, 7:05 am
by Henrik » January 14th, 2013, 11:05 am
ASH1138 wrote:See if you can find a way to hack past this firewall!
by ASH1138 » January 14th, 2013, 1:29 pm
Henrik wrote:
Your game runs on my machine. No matter how you try to lock down the game, you also have to give me the key to unlock it, otherwise I can't play the game. This means that no matter what you do in the client, I can figure out exactly what you are doing, and change it, hack it, fix it, cheat.
.
by dreamora » January 14th, 2013, 1:40 pm
by ASH1138 » January 14th, 2013, 1:46 pm
by ASH1138 » January 14th, 2013, 1:57 pm
dreamora wrote:What he means is: If you encrypt data, then your client must be able to decrypt them to use them.
if the client can do it, you can reverse engineer what the client does and replicate it to missuse it in any other form too.
In short: The only form of 'secure' that exists is the one where your critical data never leaves the area thats solely under your access -> the server
Any data that goes to the client and any data the client can modify is 'open to be modified' by cheaters and hackers.
by Henrik » January 14th, 2013, 2:59 pm
ASH1138 wrote:I could obfuscate the code. That would make it difficult for the hacker to modify anything without corrupting the game.
ASH1138 wrote:I could also download the game from GameFS as a bytearray, and add a PRNG encyrpted timestamp to restrict authentication to one play only.The timestamp will be added on the server.
When the hacker decompiles the game and plays it without downloading it again, its timestamp would no longer be valid,and he would not be allowed to enter.
ASH1138 wrote:I could also download a encryption hash from the playerIO server for bigDB objects every few seconds. Every time the hacker intercepts the hash, it would require a few seconds to store it somewhere and decipher the code, and create a new message/apply a modification based on that code. By then, a new hash code will be sent and it would no longer be relevant. The problem is, I need to understand how bigDB encodes its objects.
ASH1138 wrote:I could also add code on the server to listen for the interval between messages. Basically, my clients send messages every 500ms. They should therefore be received 300ms later on the server , with roughly the same interval. Whenever a message is received that bucks the trend, for example, received 50ms after the previous message, I can be sure someone else wrote it or intercepted and modified it.
by Henrik » January 14th, 2013, 3:13 pm
ASH1138 wrote:There exist certain series in mathematics that are easy to encode, but extremely difficult to inverse. These would make the ideal encyrption function.
by ASH1138 » January 15th, 2013, 2:07 pm
The game runs in the ActionScript Virtual Machine, which means I have full access to your game as it is running, I can debug it live, I have access to your objects, data structures, everything.
When the hacker decompiles the game and plays it without downloading it again, its timestamp would no longer be valid,and he would not be allowed to enter.
I download your game, extract the timestamp, put that in my hacked client, and I can play with that. How do I decrypt your timestamp? Well, your game has to be able to decrypt it, so you have to put the decryption key in the game, which I have full access to, which means I can grab it myself.
This makes no sense. If your game can receive some sort of encryption key for BigDB data and apply it, then my hacked client can do exactly the same, in exactly the same amount of time.
You can't be sure of anything regarding the timing of network traffic. The internet is a big and scary place, and packets routinely get lost, re-routed, or dropped, and the whole point of TCP is to ensure you get all the data in the correct order, but it makes no guarantees on timing whatsoever. Which means that messages from legit game clients will arrive randomly at the server.
by ASH1138 » January 15th, 2013, 2:22 pm
by dreamora » January 15th, 2013, 3:00 pm
by ASH1138 » January 16th, 2013, 10:10 am
dreamora wrote:that solution does not help much.
Your loader knows where to get the swf -> hacker knows it -> hacker gets the real swf -> game begins again
or alternatively
hacker starts wireshark -> starts your loader -> looks at the http request -> knows where to get the game
this kind of stuff is trivial and an absolute nobrainer. Even script kiddos can do that, you do not even need anyone with dedication and skill for this kind of stuff
by ASH1138 » January 16th, 2013, 10:13 am
by ASH1138 » January 16th, 2013, 10:20 am
dreamora wrote:that solution does not help much.
Your loader knows where to get the swf -> hacker knows it -> hacker gets the real swf -> game begins again
or alternatively
hacker starts wireshark -> starts your loader -> looks at the http request -> knows where to get the game
this kind of stuff is trivial and an absolute nobrainer. Even script kiddos can do that, you do not even need anyone with dedication and skill for this kind of stuff
by skipgamer » January 17th, 2013, 9:42 am
ASH1138 wrote:If i cant move my game code to the server because of certain reasons, then what do you think is the best way to protect the client from hack?
by ASH1138 » January 17th, 2013, 11:41 am
skipgamer wrote:ASH1138 wrote:If i cant move my game code to the server because of certain reasons, then what do you think is the best way to protect the client from hack?
What are the certain reasons would be a better question?
by Benjaminsen » January 18th, 2013, 8:31 pm
by ASH1138 » January 20th, 2013, 7:25 am
Benjaminsen wrote:In short, as you have learned yourself, security is hard boring work. However there is no way to secure a game efficiently besides removing the users ability to interact with it locally. (E.g. run things on the server).
This is the same reason that DRM does not work, if you cannot trust the user, there is nothing you can do on the users computer to prevent them from cheating.
by Benjaminsen » January 20th, 2013, 7:41 pm
ASH1138 wrote:Benjaminsen wrote:In short, as you have learned yourself, security is hard boring work. However there is no way to secure a game efficiently besides removing the users ability to interact with it locally. (E.g. run things on the server).
This is the same reason that DRM does not work, if you cannot trust the user, there is nothing you can do on the users computer to prevent them from cheating.
No offense, but you havent answered the question. The sources on the books and web say there are ways to prevent most hackers from hacking simply because its not worth their while, as in DRM. Its only worth hacking DRM if you can make money by selling pirated copies, but it isnt worth it to hack DRM just to gain a game advantage. But you guys keep saying its impossible. I know its impossible to hack proof something, but how do you have it so tedious that its not worth it to hack?
For example, making hacking a five hour job instead of a five minute job? Or dont tell me all hackers can hack something within 5 mins?
by ASH1138 » January 23rd, 2013, 1:25 pm
by waleeed12 » March 25th, 2016, 7:11 am
by asdarty12 » February 16th, 2022, 2:46 pm
Henrik wrote:ASH1138 wrote:There exist certain series in mathematics that are easy to encode, but extremely difficult to inverse. These would make the ideal encyrption function.
Yes, you can easily encrypt your game client or the data sent betwen your game and Player.IO in such a way that it is impossible to brute-force decrypt it.
But your game has to be able to decrypt itself and the data, otherwise I can't play your game. And to do that, your game has to have the decryption key and the code for decrypting. Which means that I have everything I need to decrypt your data, and then your encryption is useless.
So, the only way to secure your game is to assume that the client is compromised, restrict access client-side, and move the game logic that needs to be protected to the server-side.