title: Techniques to prevent non-genuine clients from interacting with a server
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/3774128/how-to-ensure-a-net-application-is-genuine">How to ensure a .Net application is genuine?</a>  </p>
  </blockquote>
  
  
  
  <p>I can't seem to find any good articles on this. In a client/server environment, is there any way to ensure that the clients connecting have not been tampered with?</p>
  
  <p>The only two things I can think of doing are:</p>
  
  <ol>
  <li><p>include a secret key in the genuine client, that is used in
  authentication, to prevent complete rewrites of the client</p></li>
  <li><p>monitor the clients for behaviours that I believe deviate from
  what the genuine clients do</p></li>
  </ol>
  
  <p>[1] does not prevent hacking, only rewrites. Plus presumably you can eventually find the key by looking through the bytecode?</p>
  
  <p>[2] can be quite very tricky and sometimes subjective</p>
  
  <p>Are there known techniques beyond the two above?</p>
  
  <p>Thanks</p>