Crear ejecutables

Iniciado por Ertai, 5 Junio 2005, 00:47 AM

0 Miembros y 1 Visitante están viendo este tema.

Ertai

Buenas!

Tengo un pequeño problemilla. Tengo que hacer un programa que a partir de unos datos que se le dan, cree otro ejecutable.

El típico ejemplo sería el troyano que crea servidores personalizados a partir de ciertos datos.

Mi pregunta es la siguiente: Como lo hago?
Demasiado general.

Entonces más concreta:
Como empiezo? Lo meto en un editor hexadecimal y miro donde están los datos? Como creo el archivo en sí desde otro archivo?

Desde ya, gracias.

Saludos.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Slasher-K

Necesitas conocer la estructura de un ejecutable y luego es reletivamente sencillo. Leete el documento titulado "The portable executable file format from top to bottom" de Randy Kath.

Saludos.



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*

Ertai

Buenas Slasher Keeper!

He hecho lo siguiente:

He creado un programa de ejemplo, donde solo hay un Label que pone "HOLAAAAAAAAAAAAAAA". Luego lo abró con un editor Hexadecimal, y busco el Label. Sustituyo algunas A por algunas B y  guardo, ejecuto y funciona, sale HOLAAABBBBBBBB. Ok, si ahora pongo en cada A el byte 00, sale HOLA, es decir, anulo las A. Esto supongo que os parecerá lógico, si sabeis usar un editor de estos, jeje.
Bueno, pues mi idea era la siguiente:
Necesito crear un ejecutable, que coja otro ejecutable y le modifique una URL. Mi idea era poner una URL larguisima, para que el usuario, al poner la suya, sea más corta y el resto lo tapo con 00. Ahora bien, sé que tengo que rellenar con 00 y sé la cantidad, porque lo puedo hacer con Len(url), pero nosé como abrir el archivo en Visual Basic para hacer esto, donde localizar la cadena y como sustituirlo.

Gracias por adelantado.

Saludos,
Ertai
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Ertai

Por cierto... Alguien tiene el crack del WinHex 12.25?  ;D ;D

Saludos,
Ertai
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

byebye

no pidas cracks, hay editores gratuitos. por ejemplo:

open archivo for binary as #N

despues te desplazas hasta la posicion N y escribes tus datos.

Ertai

Y como sigo?

Es que en el editor, salen lineas con offsets y en cada línea hay diferentes bytes.

Pero es que no tengo ni idea de como leer y modificar esos bytes, y he buscado en Google y nada, no hay nada tan específico.

Saludos,
Ertai
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

byebye

si lo hay, lee sobre manejo de ficheros en vb y veras como si lo explica.

Ertai

#7
Valeeee, por fin lo encuentro y aparte he conseguido entender este editor hexadecimal!!!

Aquí dejo el código:

Sacado de la web del Guille y modificado por mí

Private Sub Command1_Click()
    Dim nFic As Integer
    Dim sFic As String
    Dim sCadena As String

    'sCadena tiene 20 caracteres
    sCadena = "Prueba de una cadena"

    sFic = "hola.exe"
    nFic = FreeFile
    Open sFic For Binary As nFic
    Put nFic, 4647, sCadena ' el 4647 es el offset donde se empieza a escribir
    Close nFic

    'leer los datos guardados
    nFic = FreeFile
    Open sFic For Binary As nFic
    Get nFic, , sCadena
    Print sCadena
    Close nFic
End Sub


Gracias Cara_Webo por insistir en que lo buscará, me podrías recomendar un editor hexadecimal libre? Es que el que tengo yo es de pago y el libre que me bajado es una *****.

Saludos,
Ertai
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

byebye

te puedo decir pero no te va a gustar. puedes usar uno comercial, pero aqui no pidas el crack.