Ayuda con crypter sencillo en vb.net

Iniciado por lessionone, 9 Abril 2012, 18:04 PM

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

lessionone

Hola buenas, antes de empezar os pido por favor algo de paciencia.
Estoy acostumbrado a escribir en vb.net y me gustaria aprender a hacer un crypter lo mas sencillo posible en vb.net
He realizado el diseño grafico con dos botones (examinar, cifrar) y un textbox. Os pongo el codigo:

Public Class Form1
Dim ventanaabrirarchivo As New OpenFileDialog
Dim original As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Sytem.EventArgs) Handles BtnExaminar.Click
        ventanaabrirarchivo.ShowDialog(Me)
        TextBox1.Text = ventanaabrirarchivo.FileName
        original = Leerlosdatosdearchivo(TextBox1.Text) 'funcion mas abajo
    End Sub

    Public Function Leerlosdatosdearchivo(ByRef rutaarchivooriginal As String) As String
        Dim cadenaenblancoreserva As String
        Dim canallibre
        canallibre = FreeFile()
        FileOpen(canallibre, rutaarchivooriginal, OpenMode.Binary)
        cadenaenblancoreserva = Space(LOF(canallibre))
        FileGet(canallibre, cadenaenblancoreserva)
        FileClose(canallibre)
        Return cadenaenblancoreserva
    End Function
End Class

Ahora tengo en la variable "original" el ejecutable leido de forma binaria.
1º Deberia de leer solo un elemento del ejecutable o todo el ejecutable como lo esta haciendo?
2º Despues de esto deberia de dar la vuelta al string "original" o meterle cada 3 letras un espacio o algo para que el codigo no sea detectado?
3º Que es lo siguiente que deberia de hacer ?
Por favor ayudarme poco a poco para lograr hacer uno en vb.net muy sencillo aunque sea detectado por los antivirus.

$Edu$

No es tan facil como pensas.. mira.. vb.net es mas o menos parecido a vb6, asi que si te bajas codigos de crypters en vb6 podras entender mejor y tratar de "traducirlo" a .net, porque encontraras mas facil codigos en vb6 que en .net para que puedes entender como funcionan. Fijate que no es asi nomas como piensas, ya veras.

lessionone

Gracias $Edu$ por responder tan rapido.
Ya se que no es tan facil y lo que no quiero es intentar copiar de un codigo ya echo, esto ya lo he intentado pero al final me quedo pillado.
Lo que desearia es que me dijierais, "el siguiente paso es pasar el string a una direccion de memoria" o lo que sea y yo intentar hacerlo

Elemental Code

un crypter es asi:

El builder (Crea el archivo cifrado)

abre el binario a cifrar.
Abre el "stub" (ver mas adelante)
Cifra con algun algoritmo el binario original
Pega en un nuevo archivo el Stub + separador + binario cifrado original.


El STUB (Pedazito de programa)
Se abre a si mismo
Separa su codigo del binario cifrado (para eso es el separador que pusimos arriba)
Descifra el binario
Lo ejcuta desde memoria (Crypter RUNTIME) o bien lo escribe a un archivo y lo ejecuta (Crypter SCANTIME)


Puede variar, pero basicamente asi funcionan todos.
Suerte :)

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

lessionone

1º abre el binario a cifrar.
Dim original As String
TextBox1.Text = ventanaabrirarchivo.FileName
original = Leerlosdatosdearchivo(TextBox1.Text) 'funcion mas abajo
End Sub

    Public Function Leerlosdatosdearchivo(ByRef rutaarchivooriginal As String) As String
        Dim cadenaenblancoreserva As String
        Dim canallibre
        canallibre = FreeFile()
        FileOpen(canallibre, rutaarchivooriginal, OpenMode.Binary)
        cadenaenblancoreserva = Space(LOF(canallibre))
        FileGet(canallibre, cadenaenblancoreserva)
        FileClose(canallibre)
        Return cadenaenblancoreserva
    End Function

2º Abre el "stub" (ver mas adelante)
FileOpen(1, Application.StartupPath & "\Stub.exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Default) 'ABRE EL EJECUTABLE LLAMADO STUB.EXE EN LA MISMA RUTA QUE EL EJECUTABLE ABIERTO ANTERIORMENTE
        stub = Space(LOF(1))
        FileGet(1, stub)
        FileClose(1)
        Return stub

3º Cifra con algun algoritmo el binario original
FileOpen(1,rutaarchivooriginal,OpenMode.Binary,OpenAccess.ReadWrite,OpenShare.Default)
FilePut(1, rc4(original))
FileClose(1)
'AHORA EL ALGORITMO
Public Function rc4(ByVal binarioarchivoriginal As String) As String 'algoritmo a cifrar el original
        Dim password As String = "yo"
        Dim i As Integer = 0
        Dim j As Integer = 0
        .....
     

4ºPega en un nuevo archivo el Stub + separador + binario cifrado original.
Dim rutadelarchivonuevo As String = botonencryptar() 'DENTRO DEL EVENTO CLICK AL BOTON cifrar
Private Function botonencryptar()
        Dim x As New SaveFileDialog
        Dim rutadelarchivonuevo As String = ""
        If x.ShowDialog = Windows.Forms.DialogResult.OK Then
            rutadelarchivonuevo = x.FileName
        End If
        Return rutadelarchivonuevo
End Function
Private Sub creararchivonuevo(ByVal rutadelarchivonuevo As String)
        FileOpen(1, rutadelarchivonuevo, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
                FilePut(1, stub & "atomarvientos" & original)
        FileClose(1)
End Sub

De momento a ver si he echo bien el Builder. Si esta bien echo pues entonces lo escribo bien con sus llamadas a sus procedimientos y bien ordenado.
Yo estoy dispuesto a intentar hacerlo, pero siempre me falla que copio codigo de otros y me lio o que me pongo a leer documentos que acabo por perderme, asi que creo que esta es la mejor opcion, el ir poco a poco y por eso pido ayuda, para que me corrigais si me equivoco en los pasos a seguir. Graciassss

lessionone

Bueno como veo que nadie me contesta pues me he puesto a ordenar el codigo y aqui lo suelto para ver si alguien me dice al menos un "si esta bien echo" o un "no esta bien echo"
Public Class Form1   
   
    Dim original As String
    Dim originalencriptado As String
    Dim lecturastub As String
     
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnExaminar.Click
        'abrimos el cuadro de dialogo para seleccionar el archivo nuevo
         Dim ventanaabrirarchivo As New OpenFileDialog
         ventanaabrirarchivo.ShowDialog(Me)
         TextBox1.Text = ventanaabrirarchivo.FileName
         original = Leerlosdatosdearchivo(TextBox1.Text) ' LA VARIABLE ORIGINAL  TENDRA EL ARCHIVO BINARIO DEL ARCHIVO ORIGINAL
         originalencriptado = xEncryption(original, "batidora") 'funcion para encryptar el original
    End Sub

' LEEMOS EL ARCHIVO ORIGINAL Y LO DEVOLVEMOS EN LA VARIABLE CADENAENBLANCORESERVA
Public Function Leerlosdatosdearchivo(ByRef rutaarchivooriginal As String) As String
        Dim cadenaarellenar As String
        Dim canallibre As Integer

        canallibre = FreeFile()
        FileOpen(canallibre, rutaarchivooriginal, OpenMode.Binary)
        cadenaarellenar = Space(LOF(canallibre))
        FileGet(canallibre, cadenaarellenar)
        FileClose(canallibre)
        Return cadenaarellenar
End Function[/color]   

'CIFRAR CON ALGORITMO EL BINARIO ORIGINAL
  Public Function xEncryption(ByVal archivooriginal As String, ByVal batidora As String) As String
        Dim lonDataPtr As Long
        Dim strDataOut As String
        Dim temp As Integer
        Dim tempstring As String
        Dim intXOrValue1 As Integer
        Dim intXOrValue2 As Integer
        For lonDataPtr = 1 To Len(batidora)
            intXOrValue1 = Asc(Mid$(batidora, lonDataPtr, 1))
            intXOrValue2 = Asc(Mid$(archivooriginal, ((lonDataPtr Mod Len(archivooriginal)) + 1), 1))
            temp = (intXOrValue1 Xor intXOrValue2)
            tempstring = Hex(temp)
            If Len(tempstring) = 1 Then tempstring = "0" & tempstring
            strDataOut = strDataOut + tempstring
        Next lonDataPtr
        xEncryption = strDataOut
    End Function

    'LEEMOS LOS DATOS DEL STUB Y LOS GUARDAMOS EN LA VARIABLE LECTURASTUB
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FileOpen(1, "C:\Users\Administrador\Desktop\Stub.exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Default)
        lecturastub = Space(LOF(1))
        FileGet(1, lecturastub)
        FileClose(1)
    End Sub   

' CREA UN NUEVO ARCHIVO CON LOS DATOS DEL STUB + SEPARADOR + ORIGINAL CIFRADO
Private Sub BtnEncriptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEncriptar.Click

        'funcion para abrir cuadro de texto para guardar archivo
        Dim rutadelarchivonuevo As String = guardararchivo(rutadelarchivonuevo)
        ' ahora el pastel
        FileOpen(1, rutadelarchivonuevo, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
        FilePut(1, lecturastub & "atomarvientos" & originalencriptado)
        FileClose(1)
        MsgBox("Realizado")
  End Sub

    'FUNCION PARA GUARDAR UN ARCHIVO NUEVO QUE DEVUELVE LA RUTA DEL ARCHIVO NUEVO
Private Function guardararchivo(ByVal rutadelarchivonuevo As String) As String
        Dim x As New SaveFileDialog
        If x.ShowDialog = Windows.Forms.DialogResult.OK Then
            rutadelarchivonuevo = x.FileName
        End If
        Return rutadelarchivonuevo
   End Function

End Class

Si hicierais el favor de darme el visto bueno para poder meterme con el stub o corregir....

Elemental Code

pareceria estar bien.

arma tu stub, y probalo
si falla anda viendo.

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Karcrack

No puedes pretender hacer un crypter uniendo códigos que te dé la gente. Comprende la lógica de un crypter y sabiendo programar podrás hacer tú uno desde cero.

lessionone

Gracias Elemental Code por echarle una ojeada y darme tu visto bueno.
Probare con un stub ya quemado y si funciona lo estudio
Cita de: Karcrack en 11 Abril 2012, 13:18 PM
No puedes pretender hacer un crypter uniendo códigos que te dé la gente. Comprende la lógica de un crypter y sabiendo programar podrás hacer tú uno desde cero.
Perdona Karcrack pero yo no estoy copiando codigos, lo unico que he copiado es la funcion del algoritmo, es mas, estoy intentando desde el principio hacer lo que dices, comprender la lógica de un crypter, por eso pido que me echeis un ojo a lo que voy haciendo.
No se en que lugar te ha podido llegar a entender que quiero mirar codigos y copiar ejemplos, pero si es asi perdona y digo que mi intencion es comprenderlo y hacer el maximo codigo posible de mi parte.
Otra cosa es que mire ejemplos y la estructura sea mas o menos igual pero vamos que lo hago porque no soy una maquina, de todas formas lo que veo en los ejemplos lo voy estudiando o intentando comprenderlo.

$Edu$

Como que probaras con un stub ya quemado? el stub tenes q crearlo tambien, es el q se encargara de separar ahora el binario con usando tu mismo separador y desencriptarlo para luego ejecutar