Cómo extraer, modificar y crear un archivo JAR

Vamos a ver los pasos necesarios para extraer el contenido de un archivo JAR, modificar su contenido y después volver a empaquetarlo.

Extraer el contenido de un archivo JAR

El comando “jar” (Java Archive Tool) permite manipular los archivos jar. En el caso de OpenJDK está disponible en las versiones “devel” del paquete (p.ej java-1.7.0-openjdk-devel).

Para extraer el contenido de un jar utilizaremos los parámetros “xfv” seguidos del jar a desempaquetar.

    -x  extract named (or all) files from archive
    -v  generate verbose output on standard output
    -f  specify archive file name

Ejemplo:

# jar xfv catalina.jar
  created: META-INF/
 inflated: META-INF/MANIFEST.MF
  created: org/
  created: org/apache/
  created: org/apache/catalina/
 inflated: org/apache/catalina/LifecycleEvent.class
 inflated: org/apache/catalina/Manager.class
 inflated: org/apache/catalina/Group.class
 inflated: org/apache/catalina/Server.class
  created: org/apache/catalina/realm/
 inflated: org/apache/catalina/realm/GenericPrincipal.class
 inflated: org/apache/catalina/realm/Constants.class
 inflated: org/apache/catalina/realm/LocalStrings.properties
[...]

Una vez desempaquetado podemos crear nuevos archivos y directorios, modificar los desempaquetados, etc.

Empaquetar o crear un archivo JAR

Una vez que hemos terminado de manipular el contenido del jar debemos volver a empaquetarlo, para ello utilizamos los parámetros cfv:

    -c  create new archive
    -v  generate verbose output on standard output
    -f  specify archive file name

Ejemplo:

# jar cfv catalina2.jar jar/*
added manifest
adding: jar/META-INF/(in = 0) (out= 0)(stored 0%)
adding: jar/META-INF/MANIFEST.MF(in = 68) (out= 67)(deflated 1%)
adding: jar/org/(in = 0) (out= 0)(stored 0%)
adding: jar/org/apache/(in = 0) (out= 0)(stored 0%)
adding: jar/org/apache/catalina/(in = 0) (out= 0)(stored 0%)
adding: jar/org/apache/catalina/LifecycleEvent.class(in = 1101) (out= 494)(deflated 55%)
adding: jar/org/apache/catalina/Manager.class(in = 1469) (out= 627)(deflated 57%)
adding: jar/org/apache/catalina/Group.class(in = 563) (out= 313)(deflated 44%)
adding: jar/org/apache/catalina/Server.class(in = 762) (out= 360)(deflated 52%)
adding: jar/org/apache/catalina/realm/(in = 0) (out= 0)(stored 0%)
adding: jar/org/apache/catalina/realm/GenericPrincipal.class(in = 2816) (out= 1239)(deflated 56%)
adding: jar/org/apache/catalina/realm/Constants.class(in = 644) (out= 394)(deflated 38%)
[...]

Un comentario en “Cómo extraer, modificar y crear un archivo JAR

  1. Hola, el comando xfv lo que hace es extraer el contenido como si lo estuviera descomprimiendo verdad, ¿osea que podría usar algún des-compresor para extraer los archivos?

    quiero ver el contenido de un jar por que me lo están enviando a mi correo, ¿es posible esconder un virus dentro de un archvo jar?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *