Cómo utilizar el ofuscador proguard, por favor avise
Entonces, ¿cómo proteger nuestro código fuente? De hecho, deberían existir los siguientes métodos: 1. Usar un ofuscador de código 2. Recargar el cargador de clases del servidor de aplicaciones
Para el Primero, hay muchas herramientas de código abierto disponibles en el mercado y, personalmente, creo que la mejor de ellas es proguard. Lo principal es que es fácil de usar y aprender. Y proporciona muchas funciones. La siguiente es mi experiencia personal
(1) Descargue la herramienta proguard de Internet. La herramienta proguard contiene principalmente varios archivos jar y algunos ejemplos. La dirección de descarga es mon-2.jar
<. p> -libraryjars d:/j2ee.jar-libraryjars struts.jar
-libraryjars commons-lang.jar
-libraryjars d:/0working/ coreproject/ byislib/jasperreports-0.6.1.jar
-libraryjars commons-beanutils.jar
-printmapping proguard.map
-sobrecarga agresiva
-paquete predeterminado ''
- permitir modificación de acceso
-dontoptimize
-mantener clase pública *
{
público protegido *;
}
-mantener la clase pública org.**
-mantener la clase pública it.**
Relacionado Para conocer el significado de cada parámetro, consulte el documento de proguard, que es muy detallado y fácil de usar
Ok, la ofuscación del código se ha completado. Abra el jar generado y podrá verlo allí. son muchos a, b, c, etc. Esto muestra que el resultado de la ofuscación ha sido exitoso. Elimine el jar original, ejecute el paquete jar ofuscado generado y ¡todo estará bien!
Preguntas frecuentes: Personalmente encontré varios problemas durante el uso y al principio me llevó mucho tiempo encontrar la solución.
Excepción de desbordamiento de memoria: causada principalmente por proguard. comiéndolo cuando estaba confundido Mucha memoria, por lo que cuando ejecuta el ofuscador, puede aumentar la memoria, como java -mx512m....
b. Excepción de desbordamiento de pila: principalmente porque proguard lo hará. Realice algunos cambios de código al ofuscar la optimización; si encuentra algunos métodos relativamente complejos, se puede generar esta excepción. La solución es agregar el parámetro de configuración -dontoptimize, como se muestra en el ejemplo de configuración anterior.
Para el segundo método, el principio de sobrecargar el cargador de clases del servidor es así. Primero, ciframos los archivos de clases con un algoritmo específico y luego escribimos nuestro propio cargador de clases para reemplazar el cargador de clases del servidor. De esta manera podemos leer el archivo de clase, cifrarlo de forma inversa a la clase correcta mediante nuestro propio algoritmo y volver a cargarlo. Este método aún no se ha aplicado, lo estoy investigando personalmente estos días. Resumiré algunos resultados nuevos aquí.
ProGuard es un proyecto de código abierto, página de inicio: /, la última versión es 3.3.2.
Cargar el ofuscador es muy simple, simplemente descomprima proguard3.3.2.zip y seleccione el directorio de instalación de Proguard en la pestaña J2ME->Embalaje->Obfuscación. Como se muestra en la figura siguiente, puede configurar los nombres de clases que deben conservarse durante el proceso de ofuscación. El nombre de la clase MIDlet debe conservarse para que Java Runtime Environment (JRE) del dispositivo pueda encontrar el punto de entrada para la ejecución.
/20050726/image027.jpg, relacionado con la imagen de arriba.
Otro documento
ProGuard es una herramienta gratuita de compresión, optimización y ofuscación de archivos de clase Java. Puede encontrar y eliminar clases, campos, métodos y propiedades inútiles. También optimiza el código de bytes y elimina instrucciones inútiles. Finalmente, también cambia el nombre de clases, campos y métodos con nombres simples y sin sentido. El archivo jar después de estas operaciones se volverá más pequeño y más difícil de realizar ingeniería inversa. Las características principales de ProGuard mencionadas aquí son la compresión, la optimización y la ofuscación, por lo que presentaré estos conceptos a continuación y luego presentaré el uso básico de ProGuard.
l ¿Qué es la compresión?
El código fuente de Java (archivos .java) generalmente se compila en código de bytes (archivos .class). Los programas o bibliotecas completos generalmente se comprimen y distribuyen como documentación Java (archivos .jar). El código de bytes es más conciso que los archivos fuente de Java, pero aún contiene mucho código muerto, especialmente si se trata de una biblioteca. La operación del compresor de ProGuard analiza el código de bytes y elimina clases, campos y métodos inútiles. El programa conserva sólo los equivalentes funcionales, incluida la información necesaria para la descripción de la pila de excepciones.
l Qué es la ofuscación:
Por lo general, el código de bytes compilado todavía contiene mucha información de depuración: nombre del archivo fuente, número de línea, nombre de campo, nombre del método, nombre del parámetro, nombre de la variable. etc. Esta información hace que sea muy fácil descompilar y aplicar ingeniería inversa al programa completo. A veces, esto puede resultar molesto. Por ejemplo, ofuscadores como ProGuard eliminan esta información de depuración y reemplazan todos los nombres con secuencias de caracteres sin sentido, lo que dificulta la ingeniería inversa y simplifica aún más el código de forma gratuita. El programa conservará sólo equivalentes funcionales, excepto el nombre de la clase, el nombre del método y los números de línea necesarios para la información de la pila de excepciones. En resumen, debes entender por qué es necesaria la ofuscación.