elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:28  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [JARs] Como modificar un archivo que esté en un mismo jar?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [JARs] Como modificar un archivo que esté en un mismo jar?  (Leído 1,791 veces)
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
[JARs] Como modificar un archivo que esté en un mismo jar?
« en: 23 Mayo 2011, 06:25 »

Buenas, tengo el siguiente problema con los archivos.jar

¿Como podría modificar los archivos que están compresos en el mismo jar con una aplicacion en java?

Por ejemplo, tengo mi archivo.class en una carpeta, en esa misma carpeta tengo una carpeta con archivos *.txt y la carpeta con el manifest, ok si compilo y ejecuto a nivel de linea de comandos puedo modificar el contenido de cualquier archivo.txt que esté en dicha carpeta, ahora bien, si comprimo y ejecuto el ejecutable.jar al tratar de trabajar con el directorio actual me toma el directorio donde está el .jar y no el directorio que está dentro del .jar, entonces mi duda es: ¿se puede trabajar con los archivos que están compresos dentro del .jar? ¿como?

No quisiera llegar a tener que depender de archivos externos  :-\

De antemano, gracias  :D

Saludos  ;)


En línea

Darhius


Desconectado Desconectado

Mensajes: 427


Divide y vencerás.


Ver Perfil
Re: [JARs] Como modificar un archivo que esté en un mismo jar?
« Respuesta #1 en: 23 Mayo 2011, 20:49 »

Hola

Interesante tema.

No sé muy bien que intentas hacer como para querer modificar el .txt

Hasta donde sé no se puede de una forma tan fácil.

Investiga sobre la clase ZipFile tal vez contenga algún método que pueda ayudarte, ya que el jar es como un .zip.

Si no, la única solución es hacer lo que tenga que hacer tu aplicación y al momento de querer modificar el .txt crear una copia del jar,extraer el contenido, modificar el .txt, terminar la aplicación, volver a crear el jar, renombrarlo e iniciar de nuevo la aplicación.

Explica mejor que es lo que intentas hacer y a ver si encontramos una mejor solución.

Saludos.



En línea

"Cuenta mi historia... a quienes pregunten, cuéntala con verdad, las cosas malas junto con las buenas  y permite que sea juzgado apegado ellas... el resto... es silencio." Dinobot (Beast Wars Transformers)
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: [JARs] Como modificar un archivo que esté en un mismo jar?
« Respuesta #2 en: 28 Mayo 2011, 08:44 »

Intentaba hacer un programa que me logeara en paginas, resolví hacerlo de la siguiente forma:

> Un método que escribe archivos, lo uso para escribir un vbs que envíe pulsaciones de teclas, como no supe llamar al vbs desde java resolvi usar este mismo metodo para escribir un bat que llame al vbs y le pase los argumentos con cscript

> Un metodo que reciba los argumentos necesarios para escribir el bat y que llame al vbs

> Esop, el resto lo hace el vbs, luego de abrir el navegador con la url especificada, muestra un msgbox y cuando se le da aceptar espera tres segundos y envía las pulsaciones de teclas.

Dejo el code de los métodos que uso, dejaría el code completo pero la gui la hice en netbeans, ya no me da el ánimo para codear en bloc de notas Xd

para escribir un archivo:

Código
void writer(String[] args, String file, boolean rewrite, boolean delete_on_exit){
 
       /**
        *
        * El primer argumento indica
        * las palabras que se agregaran al archivo de
        * texto plano.
        *
        * El segundo argumento indica la ruta de
        * dicho archivo.
        *
        * Si el tercer argumento
        * es true el archivo
        * se sobreescribe
        *
        * Si el cuarto argumento es true
        * el archivo se borra al cerrar
        * el programa
        *
        *
        */

 
   String[] in=this.reader(file).split("\n");
 
   Writer w=new Writer(file, delete_on_exit);
 
   if(rewrite){
 
       w.touch();
 
   }else{
 
   for(String val:in){
 
       w.write(val);
 
   }
 
   }
 
   for(String val:args){
 
       w.write(val);
 
   }
 
   w.close();
 
   }
 
 

Y la clase writer:

Código
class Writer {
 
   java.io.BufferedWriter bw;
 
   String file="";
 
   Writer(String foo, boolean delete){
 
       this.file=foo;
 
       try{
 
           File f = new File(this.file);
 
           if(delete){
 
           f.deleteOnExit();
 
           }
 
           bw=new BufferedWriter(new FileWriter(f));
 
       }catch(IOException ex){
 
       }
   }
 
   public void write(String line){
 
       try{
 
       bw.append(line);
 
       bw.newLine();
 
       }catch (IOException ex) {
 
           ex.printStackTrace();
 
       }
 
       }
 
 
 
   public void touch(){
 
 
 
       File f = new File(this.file);
 
       try{
 
           if(f.exists()){
           f.delete();
           f.createNewFile();
           }else{
           f.createNewFile();
           }
 
       }catch(IOException c){
 
       }
 
   }
 
   public void touch(String foo){
 
       try{
 
           File fi= new File(foo);
 
           if(fi.exists()){
 
               fi.delete();
               fi.createNewFile();
 
           }else{
 
               fi.createNewFile();
 
           }
 
       }catch(IOException c){
 
       }
 
   }
 
public void close(){
 
   try{
 
       this.bw.close();
 
   }catch(IOException ex){
 
   }
 
}
 
}
 

El vbs, este no cambia

Código
 
set wss=createobject("wscript.shell")
dim com
com=""""
wss.run("cmd /c start " + com + com + " " + wscript.arguments(0))
msgbox "pulsa aceptar para logear"
wscript.sleep 3000
wss.sendkeys wscript.arguments(1)
wscript.sleep 200
wss.sendkeys "{tab}"
wscript.sleep 200
wss.sendkeys wscript.arguments(2)
 
 
 

El bat, este se escribe con el método writer de java:

Código
 
@echo off
cscript /nologo "C:\Users\Zero\desktop\temp.vbs" "http://foro.elhacker.net/login.html" "user" "pass"
 
 
 

El metodo que llama al writer y escribe el bat (no recuerdo si fue este es que lo hice varias veces)

Código
 
public void cscript(String[] args, String vbs) {
 
       String temp = "";
 
       if (new File(System.getProperty("user.home") + "\\desktop").isDirectory()) {
 
           temp = System.getProperty("user.home") + "\\desktop\\temp.bat";
 
       } else if (new File(System.getProperty("user.home") + "\\escritorio").isDirectory()) {
 
           temp = System.getProperty("user.home") + "\\escritorio\\temp.bat";
 
       } else {
 
           temp = JOptionPane.showInputDialog("Dame el path de tu escritorio");
 
       }
 
       String args2 = "";
 
       for (String val : args) {
 
           args2 += " " + "\"" + val + "\"";
 
       }
 
       String com = "\"";
 
       String[] bat = {"@echo off", "cscript /nologo " + com + vbs + com + args2};
 
       this.writer(bat, temp, true, true);
 
       try {
 
           Runtime.getRuntime().exec("cmd /c " + temp);
 
       } catch (IOException ex) {
       }
 
 
 
   }
 
 

Y bueno, el programa me salió, pero dependo mucho de estos archivos temporales, si hay otra solución sería genial, desde ya gracias por leer este tema.

Saludos  ;)
En línea

kiriost

Desconectado Desconectado

Mensajes: 57


www.godsys.com.ar Hacking y Programación


Ver Perfil WWW
Re: [JARs] Como modificar un archivo que esté en un mismo jar?
« Respuesta #3 en: 28 Mayo 2011, 22:22 »

Amigo si deseas enviar pulsaciones de tecla usa la clase Robot que trae Java, en vez de hacer tanto lío.  ::)

Acá te dejo un ejemplo de la utilización de la clase Robot:
Código
import java.awt.Robot;
import java.awt.event.*;
 
public class Main {
   public static void main(String args[]) {
       Robot bot = new Robot();
       bot.keyPress(KeyEvent.VK_Q); //Presiona Q
   }
}
 

Espero que te sirva. Y si quieres crear un bot que te registre en diferentes páginas te recomendaría informarte sobre los comandos HTTP (GET y POST) y crear un bot mediante sockets (yo ya tengo el mío)
En línea

http://www.godsys.com.ar > Programación. Hacking y Cracking. Sistemas. Desarrollo Web.
Java, C/C++, PHP, Python, Perl, HTML, Game-Hacking, Defacing, Desarrollo Web, GNU/Linux, y más
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: [JARs] Como modificar un archivo que esté en un mismo jar?
« Respuesta #4 en: 28 Mayo 2011, 23:15 »

Sry me faltó decir que la razón por la que quiero modificar un archivo dentro de un jar es porque este programa escribe mis direcciones en archivo de texto plano, el contenido es como sigue:

url#user#pass

Entonces después lo lee con un buffereredreader y lo divide con String.split("#")
Con eso creo los archivos ya mencionados, investigaré sobre la clase robot, no la conocía, gracias, pero ahora lo que necesito es eso de modificar el txt que esté dentro del jar (si hay otra opcion, bienvenida sea).

Saludos y gracias por vuestra ayuda  ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines