Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ignorantev1.1 en 6 Octubre 2010, 17:28 pm



Título: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 6 Octubre 2010, 17:28 pm
Bueno, pues, cuando intente meterme a eso del malware y esas cosas, decidi crearme un programa para editar las cabeceras de los ejecutables, y como siempre no es nada nuevo, pero la verdad que me gusto tanto y me fue muy util (dejando atras el ego  :silbar:) la verdad que me agrado mucho por que lo adapte a mis necesidades, el codigo esta completamente desarrollado por mi, clases y controles, etc...

La verdad no esta terminado por que tenia pensado un soporte de scripts... pero como muchas veces dejo las cosas a medias...

Pues a ver que les parece...

(http://i53.tinypic.com/mrcq5y.jpg)

http://www.megaupload.com/?d=406Z32W9

Gracias!...


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: BlackZeroX en 6 Octubre 2010, 19:53 pm
.
Ese control que pintas en el Picture se ve bueno...

Pero bueno... te lias mucho extrayendo informacion.
yo lo hago mas facil.

Este es un Extracto de mi codigo fuente ListarAPIS Proyectos VB6 (http://infrangelux.sytes.net/FileX/?file=Basic_API_Decompiler.exe&dir=/BlackZeroX/programas/Semi%20Decompiladores)

Código
  1.  
  2. Public Type IMAGE_DOS_HEADER
  3.   Magic                As Integer
  4.   NumBytesLastPage     As Integer
  5.   NumPages             As Integer
  6.   NumRelocates         As Integer
  7.   NumHeaderBlks        As Integer
  8.   NumMinBlks           As Integer
  9.   NumMaxBlks           As Integer
  10.   SSPointer            As Integer
  11.   SPPointer            As Integer
  12.   Checksum             As Integer
  13.   IPPointer            As Integer
  14.   CurrentSeg           As Integer
  15.   RelocTablePointer    As Integer
  16.   Overlay              As Integer
  17.   ReservedW1(3)        As Integer
  18.   OEMType              As Integer
  19.   OEMData              As Integer
  20.   ReservedW2(9)        As Integer
  21.   ExeHeaderPointer     As Long
  22. End Type
  23. Public Type IMAGE_DATA_DIRECTORY
  24.   DataRVA     As Long
  25.   DataSize    As Long
  26. End Type
  27. Public Type IMAGE_OPTIONAL_HEADER
  28.   Magic             As Integer
  29.   MajorLinkVer      As Byte
  30.   MinorLinkVer      As Byte
  31.   CodeSize          As Long
  32.   InitDataSize      As Long
  33.   unInitDataSize    As Long
  34.   EntryPoint        As Long
  35.   CodeBase          As Long
  36.   DataBase          As Long
  37.   ImageBase         As Long
  38.   SectionAlignment  As Long
  39.   FileAlignment     As Long
  40.   MajorOSVer        As Integer
  41.   MinorOSVer        As Integer
  42.   MajorImageVer     As Integer
  43.   MinorImageVer     As Integer
  44.   MajorSSVer        As Integer
  45.   MinorSSVer        As Integer
  46.   Win32Ver          As Long
  47.   ImageSize         As Long
  48.   HeaderSize        As Long
  49.   Checksum          As Long
  50.   Subsystem         As Integer
  51.   DLLChars          As Integer
  52.   StackRes          As Long
  53.   StackCommit       As Long
  54.   HeapReserve       As Long
  55.   HeapCommit        As Long
  56.   LoaderFlags       As Long
  57.   RVAsAndSizes      As Long
  58.   DataEntries(15)   As IMAGE_DATA_DIRECTORY
  59. End Type
  60.  
  61. Public Type IMAGE_FILE_HEADER
  62.   Machine              As Integer
  63.   NumberOfSections     As Integer
  64.   TimeDateStamp        As Long
  65.   PointerToSymbolTable As Long
  66.   NumberOfSymbols      As Long
  67.   SizeOfOtionalHeader  As Integer
  68.   Characteristics      As Integer
  69. End Type
  70.  
  71. Global DosHeader            As IMAGE_DOS_HEADER
  72. Global OptionalHeader       As IMAGE_OPTIONAL_HEADER
  73. Global Header               As IMAGE_FILE_HEADER
  74.  
  75.  
  76. Sub main()
  77. Dim Str As String
  78.    Str = "c:\InfraExplorer_Servidor.exe"
  79.    If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then
  80.        Dim StartOffset As Double
  81.        Open Str For Binary As 1
  82.            Get 1, , DosHeader
  83.            '   //  Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
  84.            Get 1, DosHeader.ExeHeaderPointer + 5 + LenB(Header), OptionalHeader
  85.            MsgBox OptionalHeader.Checksum & vbNewLine & Hex(OptionalHeader.Checksum)
  86.        Close 1
  87.    Else
  88.        MsgBox "Archivo no encontrado"
  89.    End If
  90. End Sub
  91.  
  92.  

Dulces Infierno Lunar!ˇ.


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 6 Octubre 2010, 22:09 pm
Oye BlackZeroX, me da error en tiempo de ejecucion al intentar arrancar tu programa... y la verdad no entiendo como funciona tu codigo, me podrias explicar por favor?, y a cual control de refieres?
Gracias por responder man!


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ssccaann43 © en 6 Octubre 2010, 22:35 pm
Excelente source, Me gusto mucho...! buen aporte


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: BlackZeroX en 7 Octubre 2010, 04:07 am
Oye BlackZeroX, me da error en tiempo de ejecucion al intentar arrancar tu programa... y la verdad no entiendo como funciona tu codigo, me podrias explicar por favor?, y a cual control de refieres?
Gracias por responder man!

* Lo del programa en tiempo de ejecucion es raro xS...

--->

En el proceso main() hay llamados a procesos que no puse, solo eliminalos..., en si lo que hace es Extraer la infocacion en la estructura guardada...


en si solo tendrias que jalar las estructuras asi:

Código
  1.  
  2.    Get 1, , DosHeader
  3. ' //     Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
  4.    Get 1, DosHeader.ExeHeaderPointer + 5 + lenb(header) , OptionalHeader
  5.  
  6.    MsgBox OptionalHeader.Checksum & vbnewline & hex(OptionalHeader.Checksum)
  7.  
  8.  

YA CORREGI EL CODIGO SUPERIOR...

y a cual control de refieres?

Al que parece ListView al que se dibuja en el PictureBox a ese me refiero xD, haber si me animo depsues y hago un ctl <-/-\-> UC.


Dulce Infierno Lunar!ˇ.


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 7 Octubre 2010, 04:18 am
Cita de: BlackZeroX link=topic=306986.msg1524869#msg1524869
Al que parece ListView [b
al que se dibuja en el PictureBox[/b] a ese me refiero xD, haber si me animo depsues y hago un ctl <-/-\-> UC.

Jaja, no es control, nada mas es "pintura" xD...


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: BlackZeroX en 7 Octubre 2010, 04:41 am
@ignorantev1.1

lo se... ppor ello dije que se pinta en el PictureBox ¬¬"

Dulces Lunas!ˇ.


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 7 Octubre 2010, 05:55 am
@BlackZeroX
Ok ok ta bueno, no te esponjes  :o


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: BlackZeroX en 7 Octubre 2010, 07:51 am
.
@Ignorantev1.1

modifique el codigo que te deje arriba:

asi se llama

Código
  1.  
  2. Sub main()
  3. Dim Str As String
  4.    Str = "c:\InfraExplorer_Servidor.exe"
  5.    If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then
  6.        Dim StartOffset As Double
  7.        Open Str For Binary As 1
  8.            Get 1, , DosHeader
  9.            '   //  Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
  10.            Get 1, DosHeader.ExeHeaderPointer + 5 + LenB(Header), OptionalHeader
  11.            MsgBox OptionalHeader.Checksum & vbNewLine & Hex(OptionalHeader.Checksum)
  12.        Close 1
  13.    Else
  14.        MsgBox "Archivo no encontrado"
  15.    End If
  16. End Sub
  17.  
  18.  

Como veras te da el mismo Checksum que el que te da ese APP, el Exe Explorer... y cualquier otro.

Dulce Infierno Lunar!ˇ.


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: cobein en 7 Octubre 2010, 08:29 am
Pasaba por aca y me llamo la atencion esto

Código:
 If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then

no esta mal pero la logica que se utiliza para filtrar con Len(Str) < 4 dejaria de lado posibles archivos existentes con rutas validas, ejemplo una ruta relativa como ser "\<archivo>" siendo el nombre del archivo menor o igual a 2 caracteres en total, que podria ser el eqivalente a "c:\a" o como ruta relativa "\a" 


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 7 Octubre 2010, 16:26 pm
@cobein

Pero len("c:\a")<4 = false asi que si aplica...

@BlackZerox

Esta muy bueno tu codigo   ;-), ya lo entendi  :rolleyes:



Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: cobein en 7 Octubre 2010, 17:15 pm
@cobein

Pero len("c:\a")<4 = false asi que si aplica...
Pasaba por aca y me llamo la atencion esto

Código:
 If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then

no esta mal pero la logica que se utiliza para filtrar con Len(Str) < 4 dejaria de lado posibles archivos existentes con rutas validas, ejemplo una ruta relativa como ser "\<archivo>" siendo el nombre del archivo menor o igual a 2 caracteres en total, que podria ser el eqivalente a "c:\a" o como ruta relativa "\a" 






Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: ignorantev1.1 en 7 Octubre 2010, 17:29 pm
Demonios  :¬¬
Aprendere a leer mas detenidamente lo prometo...


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: Sanlegas en 9 Octubre 2010, 22:28 pm
Pasaba por aca y me llamo la atencion esto

Código:
 If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then

no esta mal pero la logica que se utiliza para filtrar con Len(Str) < 4 dejaria de lado posibles archivos existentes con rutas validas, ejemplo una ruta relativa como ser "\<archivo>" siendo el nombre del archivo menor o igual a 2 caracteres en total, que podria ser el eqivalente a "c:\a" o como ruta relativa "\a" 

entonces asi seria lo correcto
Código:
If Len(Str) > 3 And Len(Dir(Str, vbArchive)) Then
  :P
(creo que no tiene caso comparar si la cadena esta vacia y luego volver a comparar si es mayor a 3)


Título: Re: [Source] Easy Edit Header (Editor de ejecutables)
Publicado por: fary en 10 Octubre 2010, 10:26 am
Bastante util tu programa, yo segun voi aprendiendo el PE tambien voi creando mis funciones en VB y C :)

salu2!