When you deliver a working system into the hands of your attacker, you cannot prevent them from reverse-engineering it. There are no exceptions.
But with clever distribution of keys and certificates, you can alleviate some of the trouble. If each user gets his own key and certificate (signed by you), then you can uniquely identify that user by anything he signs. Sharing his key would reveal the identity of the person who shared it.
Likewise, by distributing public keys for encrypting outbound data, you can limit decryption to only those machines that possess the associated private key.
IN RESPONSE TO COMMENT
only need the strictly confidential data somehow stored on the harddrive encrypted and the decryption should be only possible through my software.
You lost at "decryption should only be possible through my software". This is 100% absolutely positively impossible. What you've described is, exactly, DRM. Read Cory Doctrow's explanation of this from almost a decade ago. Some of the smartest and most financially-motivated individuals have worked on this, and continue to work on this to this day, and at no point has it ever actually worked. Because it can't.
What you can instead do is have decryption done only on your server, or a similar solution. The way (the ONLY way) to prevent the client from decrypting your data is to not give him the key. Which means he can't be the one decrypting it.