As soon as I find out exact manner of communication between the server and the software. I realized how easy it is to use programs to intercept it, analyze it and then send malicious (or rather illegal) query through.
So. I was wondering is there a way to make sure that the query is sent by a legal program that was meant to send these queries and not a fakey.
I know it sounds obscene, these days everything can be corrupted, broken, taken apart. And interception of connection (HTTP(S) queries in this case) is everyday-bread for even the most empty-headed scriptkiddies.
But how do great companies detect/block such a thing? I was playing an online video game, it's quite popular and out there. On some day, a programmer released his very own version of the launcher (with buttons, shop, and ways to enter a game (which still would open the original "battle arena .exe")). Owners of game didn't like it. And even though program sent exactly same query as the original launcher, still, majority of users of this "new launcher" got banned for 3rd party software (as it was forbidden in ToU).
What could be the way they detected it? I mean, of course they could've updated their client to send additional token with HTTP(S) which the newly-forged program wouldn't send, and then ban everybody who didn't send that token (honey token).
But even then, the developer of his own new launcher, could've detected differences in patch version (from 4.2 => 4.3) and then block usage of it (through piece of code in launcher which would detect new version) and find out how the latest version works, update the code a bit, and keep being stealthy.
Is there really nothing that can be done? Is there other way to make it "more protected", more "legal"?
I know that server can block queries which are illegal. But I don't want someone else to create bridge to my program and then use the server to answer that one program's commands.
I'm not asking about particular programming language, let it even be Java, C++, C#, Python. Whatever. I'm not asking for code, rather for concept, I'd like to understand, if there is a better way to "protect it more".