If I protect methods in my code, can a hacker decompile the rest, change some things, and then recompile it with the same calls to the obscured methods? It certainly seems like the code protector makes it extremely difficult for a hacker to understand the obscured code, but I am wondering if the obscured code can be used even if the rest of the app changes. For example, suppose I obscure code related to some fancy proprietary algorithms but do not protect any calls that ensure license compliance. Can a hacker decompile the app, take out the license compliance, and recompile it using calls to the obscured methods? The hacker won't know how the obscured methods work, but they can possibly make an app that does the same thing without any license compliance.
Unprotected portions of the code can be decompiled. I would recommend protecting the calling points to ensure license compliance and code that you do not want used by anyone else. Also protect method calls in cases where it's easy for a hacker to figure out the purpose and value of the method. That way, if a hacker copies your code decompiles it they cannot compromise your license checks or critical IP. That way, if they take that code and do calls like your original code to the transformed code and try to run it on a different machine without a valid license, it will not work. The calls to the transformed code are calls to our Secure Virtual Machine (SVM) and the SVM checks for a valid license being in place before running the code.