Comment verrouiller les classes Java compilées pour empêcher leur décompilation ?
Je sais que ce sujet doit être très bien discuté sur Internet, mais je n'ai pu parvenir à aucune conclusion après les avoir consultés.
De nombreuses personnes proposent des obfuscateurs, mais ils se contentent de renommer les classes, les méthodes et les champs avec des séquences de caractères difficiles à mémoriser, mais qu'en est-il des valeurs constantes sensibles ?
Par exemple, vous avez développé le composant de cryptage et de décryptage basé sur une technique de cryptage par mot de passe. Dans ce cas, n'importe quel utilisateur moyen de Java peut utiliser la technique de cryptage par mot de passe. JAD pour décompiler le fichier de classe et récupérer facilement la valeur du mot de passe (défini comme une constante) ainsi que le nom de l'utilisateur. sel et peut à son tour décrypter les données en écrivant un petit programme indépendant !
Ou bien ces composants sensibles doivent-ils être construits en code natif (par exemple, VC++) et être appelés par l'intermédiaire de la fonction JNI ?