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!...
.
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)
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!¡.
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!
Excelente source, Me gusto mucho...! buen aporte
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:
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!¡.
Cita de: BlackZeroX link=topic=306986.msg1524869#msg1524869
Al que parece ListViewb]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...
@ignorantev1.1
lo se... ppor ello dije que se pinta en el PictureBox ¬¬"
Dulces Lunas!¡.
@BlackZeroX
Ok ok ta bueno, no te esponjes :o
.
@Ignorantev1.1
modifique el codigo que te deje arriba:
asi se llama
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!¡.
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"
@cobein
Pero len("c:\a")<4 = false asi que si aplica...
@BlackZerox
Esta muy bueno tu codigo ;-), ya lo entendi :rolleyes:
Cita de: ignorantev1.1 en 7 Octubre 2010, 16:26 PM
@cobein
Pero len("c:\a")<4 = false asi que si aplica...
Cita de: cobein en 7 Octubre 2010, 08:29 AM
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"
Demonios :¬¬
Aprendere a leer mas detenidamente lo prometo...
Cita de: cobein en 7 Octubre 2010, 08:29 AM
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"
entonces asi seria lo correcto
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)
Bastante util tu programa, yo segun voi aprendiendo el PE tambien voi creando mis funciones en VB y C :)
salu2!