I actually wouldn't care about a perfect copy (my program is free)being used, I just can't allow someone to use a copy to communicate with my server.
I came accross this subject where the OP seemed to have the same problem as I do, so I will try another reasonning.
I understand the client doesn't send a "myself.money += 1000€", the server is waiting for input, when he gets one it checks for integrity, then it compares with previous inputs to see if new input makes sense, and then computes the result and send it back to client.
So I wonder: how big MMO companies make sure at the end of a game who won for example? Let's take "League of Legends" as an example. If you don't know it, it's a 5vs5 game format, I thought maybe the server would check if the 5 clients from the first team would send "win" and the players from the second team "lose", all at then same time, and if it doesn't match this pattern, then someone is cheating (if 5 wins from the first team are received but only 4 loses and 1 win from the second team then the cheater is the one that sent "win" in the second team). I'm thinking htis way this because in this game, if the 10 people disconnect at the same time, the game ends. This never happens so I thought that maybe server use real life logical and time to know if one of the player is cheating?
Am I "not totally wrong" or did I came too far with my reasonning?
Because if my reasonning is alright, it would mean the answer to my question and to the question I linked below is simply creativity?