[Source] Easy Edit Header (Editor de ejecutables)

Iniciado por ignorantev1.1, 6 Octubre 2010, 17:28 PM

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

ignorantev1.1

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://www.megaupload.com/?d=406Z32W9

Gracias!...

BlackZeroX

#1
.
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

Código (Vb) [Seleccionar]


Public Type IMAGE_DOS_HEADER
  Magic                As Integer
  NumBytesLastPage     As Integer
  NumPages             As Integer
  NumRelocates         As Integer
  NumHeaderBlks        As Integer
  NumMinBlks           As Integer
  NumMaxBlks           As Integer
  SSPointer            As Integer
  SPPointer            As Integer
  Checksum             As Integer
  IPPointer            As Integer
  CurrentSeg           As Integer
  RelocTablePointer    As Integer
  Overlay              As Integer
  ReservedW1(3)        As Integer
  OEMType              As Integer
  OEMData              As Integer
  ReservedW2(9)        As Integer
  ExeHeaderPointer     As Long
End Type
Public Type IMAGE_DATA_DIRECTORY
  DataRVA     As Long
  DataSize    As Long
End Type
Public Type IMAGE_OPTIONAL_HEADER
  Magic             As Integer
  MajorLinkVer      As Byte
  MinorLinkVer      As Byte
  CodeSize          As Long
  InitDataSize      As Long
  unInitDataSize    As Long
  EntryPoint        As Long
  CodeBase          As Long
  DataBase          As Long
  ImageBase         As Long
  SectionAlignment  As Long
  FileAlignment     As Long
  MajorOSVer        As Integer
  MinorOSVer        As Integer
  MajorImageVer     As Integer
  MinorImageVer     As Integer
  MajorSSVer        As Integer
  MinorSSVer        As Integer
  Win32Ver          As Long
  ImageSize         As Long
  HeaderSize        As Long
  Checksum          As Long
  Subsystem         As Integer
  DLLChars          As Integer
  StackRes          As Long
  StackCommit       As Long
  HeapReserve       As Long
  HeapCommit        As Long
  LoaderFlags       As Long
  RVAsAndSizes      As Long
  DataEntries(15)   As IMAGE_DATA_DIRECTORY
End Type

Public Type IMAGE_FILE_HEADER
  Machine              As Integer
  NumberOfSections     As Integer
  TimeDateStamp        As Long
  PointerToSymbolTable As Long
  NumberOfSymbols      As Long
  SizeOfOtionalHeader  As Integer
  Characteristics      As Integer
End Type

Global DosHeader            As IMAGE_DOS_HEADER
Global OptionalHeader       As IMAGE_OPTIONAL_HEADER
Global Header               As IMAGE_FILE_HEADER


Sub main()
Dim Str As String
    Str = "c:\InfraExplorer_Servidor.exe"
    If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then
        Dim StartOffset As Double
        Open Str For Binary As 1
            Get 1, , DosHeader
            '   //  Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
            Get 1, DosHeader.ExeHeaderPointer + 5 + LenB(Header), OptionalHeader
            MsgBox OptionalHeader.Checksum & vbNewLine & Hex(OptionalHeader.Checksum)
        Close 1
    Else
        MsgBox "Archivo no encontrado"
    End If
End Sub



Dulces Infierno Lunar!¡.
The Dark Shadow is my passion.

ignorantev1.1

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!

ssccaann43 ©

Excelente source, Me gusto mucho...! buen aporte
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

BlackZeroX

#4
Cita de: 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!

* 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 (Vb) [Seleccionar]


    Get 1, , DosHeader
' //     Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
    Get 1, DosHeader.ExeHeaderPointer + 5 + lenb(header) , OptionalHeader

   MsgBox OptionalHeader.Checksum & vbnewline & hex(OptionalHeader.Checksum)



YA CORREGI EL CODIGO SUPERIOR...

Cita de: ignorantev1.1 en  6 Octubre 2010, 22:09 PM
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!¡.
The Dark Shadow is my passion.

ignorantev1.1

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...

BlackZeroX

@ignorantev1.1

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

Dulces Lunas!¡.
The Dark Shadow is my passion.

ignorantev1.1


BlackZeroX

.
@Ignorantev1.1

modifique el codigo que te deje arriba:

asi se llama

Código (vb) [Seleccionar]


Sub main()
Dim Str As String
    Str = "c:\InfraExplorer_Servidor.exe"
    If Dir(Str, vbArchive) <> "" Or Str = "" Or Len(Str) < 4 Then
        Dim StartOffset As Double
        Open Str For Binary As 1
            Get 1, , DosHeader
            '   //  Get 1, DosHeader.ExeHeaderPointer + 5, Header ' // este es el Header
            Get 1, DosHeader.ExeHeaderPointer + 5 + LenB(Header), OptionalHeader
            MsgBox OptionalHeader.Checksum & vbNewLine & Hex(OptionalHeader.Checksum)
        Close 1
    Else
        MsgBox "Archivo no encontrado"
    End If
End Sub



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

Dulce Infierno Lunar!¡.
The Dark Shadow is my passion.

cobein

Pasaba por aca y me llamo la atencion esto

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" 
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.