Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Escribano

injection de .exe

Recommended Posts

Fala pessoal,

 

Estou tentando criar um programa em java que faça um "Injection" dentro de um .exe

 

 

A idéia é "simples", meu programa ao abrir vai procurar o processo "client.exe", e se encontrar ele tem que fazer esse programa mandar uma mensagem UDP para o servidor que ele esta conectado!

 

Eu consegui fazer a detecção do PID do programa (Process ID), e consegui fazer a classe que "envia o pacote" mas não atravéz do client.exe... e sim direto do java! (o que nao eh o que eu quero, quero fazer um programa mandar o outro falar com o servidor)

 

Na teoria o que eu nao consigo é fazer o java manipular o programa X. Tentei criar uma thead na memória do client.exe mas tb não consegui.

 

Segue o código que cheguei até agora.

 

 

Muito obrigado,

abraços

 

package guardian.pkg2013;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.StringTokenizer;

/**
*
* @author João Escribano e André Viana
*/
public class Guardian2013 {

   public static void main(String[] args) {
       try {
           Process p = Runtime.getRuntime().exec("tasklist");
           ProcessBuilder pb = new ProcessBuilder("");
           InputStream input = p.getInputStream();
           InputStreamReader inputReader = new InputStreamReader(input);

           BufferedReader reader = new BufferedReader(inputReader);
           String line;

           boolean hasClient = false;
           int PID;

           while ((line = reader.readLine()) != null) {
               if (line.toUpperCase().contains("CLIENT.EXE")) {
                   hasClient = true;

                   StringTokenizer tokenizer = new StringTokenizer(line, " ", false);
                   tokenizer.nextToken(); // Fix para ir pra pular uma coluna

                   PID = Integer.parseInt(tokenizer.nextToken());
                   System.out.println("PID: " + PID);

                   String packet = "0x03";
                   System.out.println("Enviando o pacote: "+packet);
                   new Guardian2013().sendPackage(packet);
               }
           }
           if (hasClient == false) {
               System.out.println("Client não encontrado!");
           }
       } catch (Exception e) {
           System.err.println(e);
       }
   }

   public void sendPackage(String mensagem) throws IOException {
       try {
           String host = "127.0.0.1";
           int port = 2593;

           byte[] message = mensagem.getBytes();

           InetAddress address = InetAddress.getByName(host);
           DatagramPacket packet = new DatagramPacket(message, message.length, address, port);
           DatagramSocket dsocket = new DatagramSocket();

           dsocket.connect(address, port);

           if (dsocket.isConnected()) {
               System.out.println("Conectado com o host " + host + "," + port);
           }

           dsocket.send(packet);
           System.out.println("Packet Enviado!");
           dsocket.close();
       } catch (Exception e) {
           System.err.println(e);
       }
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas uma ideia:

 

Você pode capturar a comunicação entre o cliente e o servidor com algum sniffer e depois simular com o seu programa em java.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.