I am writing a Java application which will communicate with a remote server to send and receive files (users will have to login first). The source code will be open for public review.
To ensure a conflict-free user experience, the server should only accepts connections from clients which do not run an altered version of the original program.
How can I check that the binary files have not been changed ? For example, send some hash of the running executable (or even the executable itself) and the server will then see if it matches what it should be.
I've already seen this question but I think in 4 years things must have changed a little bit.