Digital Signatures and preventing hacking
<p>I have developed a system using Digital Signatures</p>

<p>The program is written in <strong>Java</strong></p>

<ul>
<li>Provider = "BC"</li>
<li>SIGNATURE_ALGORITHM = "SHA256withRSA"</li>
</ul>

<p><strong>Keys</strong></p>

<ul>
<li>The Client holds the public key</li>
<li>The Server holds the private key</li>
</ul>

<p><strong>License Generation</strong></p>

<ul>
<li>Clients request a license from the server</li>
<li>Server decides if they should get a licenses</li>
<li>Creates a signed object and sends it back to the client</li>
</ul>

<p>I am wondering about easy ways to hack a system like this and what I can do to prevent it.</p>

<p>How can I prevent a user from decompiling my code and inserting their own code? (I am aware of proguard but hear that it can be worked around).  I am also a little worried about a user creating a false licensing server and somehow modifying the source code to point to their server (because I will be releasing the licensing and server code to the public).</p>
