primer lugar, este es el escenario de “DRM”: en última instancia, alguien lo suficientemente determinado puede derrotar a cualquier protección que se aplican por mediante el suministro de un tiempo de ejecución modificado funky o otras cosas. El escenario inverso, donde el tiempo de ejecución es confiable pero algunos de los paquetes no lo son, se aborda adecuadamente mediante Java mediante el uso de las restricciones adecuadas ClassLoader
, pero eso solo puede funcionar cuando hay algo que puede hacer cumplir las restricciones de manera confiable; es por eso que su escenario está básicamente condenado.
Sin embargo, si asumimos que el tiempo de ejecución en sí es confiable entonces usted podría intentar, en su método de súper secreta, para obtener el seguimiento de la pila de la pila se está ejecutando actualmente (ver stackoverflow.com/questions/1069066/… para saber cómo) y las pruebas para ver si el llamador del método actual es uno en el que confía para obtener acceso. Un administrador de seguridad sería aún más adecuado, pero no puede confiar en que el entorno tenga uno de los instalados que desee (está mucho más claramente bajo el control del atacante). ¡Tenga en cuenta que no he probado las opciones en este párrafo!
La otra alternativa es poner sus secretos en un servicio que usted controla y solo ofrecer acceso remoto a ellos. O deje de preocuparse por el uso de mecanismos técnicos para tratar un problema que es fundamentalmente sobre cuestiones comerciales y legales (por ejemplo, ¿por qué se trata de personas en las que no puede confiar?)
Puede valer la pena editar su título para que no lo haga No use la palabra "protegido" dado que tiene un significado muy específico. –