The new security requirement is that after three months the key expires and the software asks for another key. Is that possible? Is there any other way to implement a better security system?
Reverse engineering tools such as binary disassemblers allow license crackers to find the location in the code where the license check is enforced. Malicious users can then remove the check altogether or change the code so the check always returns a valid license. License crackers are able to use these tools to quickly sidestep any software-level license enforcement, even without access to the original source code for the application.
A simple license enforcement scheme that prevents casual pirating may be the best approach. Anything more complicated probably won't defeat determined software pirates.