Ingeniería inversa con java


Si alguna vez  ha tenido un proyecto java compilado en forma de fichero .class  o .jar   y necesita conocer como esta construido el código para  hacer ingeniería inversa o simplemente para investigar su  funcionamiento,  la herramienta que vamos a ver, lo hace de maravilla ! y además es gratuita!, veamos en detalle en que consiste.

En  efecto el «proyecto Java Decompiler» tiene como objetivo desarrollar herramientas para descompilar y analizar el «código de bytes» de Java 5 y las versiones posteriores siendo  JD-GUI la utilidad gráfica independiente que muestra los códigos fuente de Java de los archivos «.class».

Con esta herramienta puede explorar el código fuente reconstruido con la GUI de JD para obtener acceso instantáneo a los métodos y campos Incluso puede integrarse  con el IDE de Eclipse  gracias a  JD-Eclipse, que  es un complemento para la plataforma Eclipse.

La herramienta le permite mostrar todas las fuentes Java durante su proceso de depuración, incluso si no las tiene todas. JD-Core es una biblioteca que reconstruye el código fuente de Java de uno o más archivos «.class». JD-Core se puede usar para recuperar el código fuente perdido y explorar la fuente de las bibliotecas de tiempo de ejecución de Java.

Se admiten las nuevas características de Java 5, como anotaciones, genéricos o tipo «enum». JD-GUI y JD-Eclipse incluyen la biblioteca JD-Core. JD-Core, JD-GUI y JD-Eclipse son proyectos de código abierto publicados bajo la licencia GPLv3.

Veamos un poco algo sobre la historia de esta  interesante  herramienta:

  • En 2011, Alex Kosinsky inició una variante de JD-Eclipse que admite la alineación del código descompilado por los números de línea de los originales, que a menudo se incluyen en el Bytecode original como información de depuración.
  • En 2012, una rama de JDEclipse-Realign de Martin «Mchr3k» Robertson  extendió la funcionalidad mediante el control de descompilación manual y el soporte para Eclipse 4.2 (Juno).
  • Y llegamos a la actualidad    D (Java Decompiler) ,  es un decompilador para el lenguaje de programación Java.Se proporciona como una herramienta GUI, así como en forma de complementos para los entornos de desarrollo integrado Eclipse (JD-Eclipse) e IntelliJ IDEA (JD-IntelliJ).Es compatible con la mayoría de las versiones de Java desde 1.1.8 hasta 1.7.0, así como JRockit 90_150, Jikes 1.2.2, Eclipse Java Compiler y Apache Harmony y, por lo tanto, a menudo se utiliza donde anteriormente se operaba el popular JAD

Java decompiler

Instalación

Se puede descargar directamente desde  su pagina de Github

La versión ultima   disponibles  es la 1.5.2

Esta versión incluye los siguientes cambios:

  • Actualizando JD-Core a 1.0.3
  • Adición de soporte de archivos AAR (archivo de Android)
  • Adición de soporte de archivos JMOD (módulo Java 9)

Este   es el enlace para descargar el  jd-gui-windows-1.5.2.zip   que es la versión  que   funciona sobre windows.

Descomprimimos el  ficherpo zip ( https://github.com/java-decompiler/jd-gui/releases/download/v1.5.2/jd-gui-windows-1.5.2.zip)

Finamente lanzaremos la aplicación  jd-gui.exe

JD-GUI es una utilidad gráfica independiente que muestra los códigos fuente de Java de los archivos «.class»  y también  «.jar»  . Puede explorar el código fuente reconstruido con la GUI de JD para obtener acceso instantáneo a los métodos y campos.

Existe JD-Eclipse es un complemento para la plataforma Eclipse. Le permite mostrar todas las fuentes Java durante su proceso de depuración, incluso si no las tiene todas.

JD-GUI es una utilidad gráfica independiente que muestra los códigos fuente de Java de los archivos «.class». Puede explorar el código fuente reconstruido con la GUI de JD para obtener acceso instantáneo a los métodos y campos.

Mas  información en su sitio  http://java-decompiler.github.io/

Error ORA-03114


Hay aplicaciones que usan un cliente Oracle para gran parte de la funcionalidad ofrecidas ,  de modo que es vital en estos casos asegurar que el servicio de  acceso a la  BBDD este funcionando adecuadamente

Puede  que su aplicación  encuentre el siguiente error al ejecutar flujos de trabajo u otros procedimientos que requieran procesamiento dentro de la base de datos de Oracle:

25/01/2019 10:21:48: Sentencia sql: SELECT *  FROM  …………. 
25/01/2019 10:21:48: Error en el proceso de conversión. Error 5: ORA-03114: no conectado a ORACLE

Cuando esto ocurre, la conexión a la base de datos se perderá   lo cual  normalmente se traduce  que la  aplicación encuentra un error grave y probablemente se cerrara.

Este error puede  producirse  si su sesión de Oracle se ha quedado sin memoria.

Para reiniciar el valor de asignación de  memoria a una sesión de Oracle, lo mas fácil es seguir estos pasos:

  1. Cierre cualquier aplicación o servicio adicional  que pueda esta usando el cliente Oracle
  2. Reinicie  el cliente de Oracle  (en versiones antiguas puede llamarse oracleHome8ClientCache  )
  3. Para ello, en el menú Inicio de Windows, abra el panel de Control y vaya a Herramientas administrativas > Servicios. 
  4. Seleccione el cliente Oracle en la listen versiones antiguas puede llamarse oracleHome8ClientCache  ) y  pulse  en Detener el servicio.
  5. Vuelva al menú Inicio de Windows, abra el panel de Control y vaya a Herramientas administrativas > Servicios. 
  6. Seleccione el cliente  Oracle (en versiones antiguas puede llamarse oracleHome8ClientCache  ) en la lista y pulse en Iniciar  el servicio.

 

Para asignar más memoria a una sesión de Oracle se requiere conexión en el propio  servidor de BBDD  así como tambien a los clientes que estén usando esos servicios.Si es su caso puede seguir estos pasos:

  1. Cierre cualquier aplicación o servicio que pueda estar usando el cliente Oracle
  2. Detenga los servicios de Oracle en  Servicios de Windows. Para ello, en el menú Inicio de Windows, abra el panel de  Control y vaya a Herramientas administrativas > Servicios. Seleccione Oracle en la lista y detener el servicio.
  3. Asegúrese de que el servicio «OracleService» se ha detenido. De lo contrario, aparecerá un mensaje de error.
  4. Asegúrese de que los clientes no están conectadon al servidor.
  5. Cada sesión de Oracle tiene una cantidad limitada de memoria disponible. Para ver la memoria actual, escriba el  siguiente comando en la máquina en la que reside el servidor de Oracle :  orastack oracle.exe
  6. El resultado será como se indica a continuación, que muestra la asignación de memoria en el equipo:   Corriente de reserva memoria; PerThread = 1048576  y  Corriente de memoria asignada  = 4096 
  7. Nos situamos desde  [ORACLE_HOME] en la  subcarpeta bin. El siguiente comando aumentará la memoria para cada sesión (hasta 5 MB):           orastack oracle.exe 5000000 
  8. Reiniciar la los servicios de Oracle.
  9. Inicie la aplicación que usa  el cliente Oracle

 

 

Para asignar más memoria a una sesión de Oracle también se puede hacer desde los  clientes  que están usando  esos servicios.Si es su caso puede seguir estos pasos:

  1. Cierre cualquier aplicación o servicio que pueda estar usando el cliente Oracle
  2. Detenga los servicios de Oracle en  Servicios de Windows. Para ello, en el menú Inicio de Windows, abra el panel de  Control y vaya a Herramientas administrativas > Servicios. Seleccione Oracle en la lista y detener el servicio.
  3. Asegúrese de que el servicio «OracleService» se ha detenido. De lo contrario, aparecerá un mensaje de error.
  4. Asegúrese de que los clientes no están conectadon al servidor.
  5. Como el   servidor no es el mismo que  la máquina , este  se denomina con un nombre de servicio (p. ej. GISTEST) y, a continuación, el comando siguiente desde  [ORACLE_HOME] en subcarpeta bin  : orastack tnslsnr.exe 5000000
  6. Cuando el  servidor se reinicie o se reinicie la instancia  los  parámetros se pierden y se tienen que volver a aplicar.

 

 

Resultado:

Con esta opció, cada sesión de Oracle reserva 5 MB de memoria lo cual debería bastar para no dar problemas.

 Windows (32 bits) sólo puede direccionar 2 GB de memoria para cada proceso, lo que  significa que Oracle tiene un máximo de 2 GB de memoria, independientemente de la cantidad de memoria del servidor.Como el valor por defecto del parámetro de Oracle asigna 892 MB de área SGA (sistema global) más 297 MB de programa global PGA (área) por ejemplar.,por tanto, aproximadamente se  tiene 1,2 GB de memoria asignada para el proceso de Oracle, sin ninguna sesión de usuario. lo cual significa  que hay  aproximadamente 800 MB disponibles para sesiones de usuario

Con 5 MB por usuario  se pueden permitir un número máximo de 160 usuarios o 150 usuarios .Para estar seguros si se ejecuta con más de 150 usuarios simultáneos, puede considerar la posibilidad de reducir la memoria total por sesión de usuario.