Página 1 de 1

Función Ejecutable Valido

Publicado: 07 Nov 2012, 16:38
por Pink
Bueno les dejo esta funcion para saber si un ejecutable es valido partiendo de las Firmas MZ y PE.



Código: Seleccionar todo

#cs -------------------------------------
AutoIt Version: 3.3.8.1
Author..........: Pink
Script Function...: EValido() "Verifica si es un Ejecutable Valido"
Uso..............: Evalido("C:\Users\Usuario\Desktop\File.exe")
retorno:.........: booleano  1|0
#ce -------------------------------------


;Ejemplo
$PE=Evalido("C:\Users\Usuario\Desktop\M1.exe")
if $PE Then
	msgbox(0,"","SI")
Else
	MsgBox(0,"","NO")
	EndIf
; fin del ejemplo


;>>>>>>>>>>>>> Funcion Evalido <<<<<<<<<<<<<<<<<<
Func Evalido($file)

local $datos=fileread($file,300);buffer binario
local $MZ=binarymid($datos,1,2) ;MZ
local $PEPOST=binarymid($datos,61,4) ;e_lfanew Posición
local $PE=binarymid($datos,dec(StringReplace(OLE($PEPOST),"0x",""))+1,4) ;firma PE


if $MZ="0x4D5A" AND $PE="0x50450000" Then ;comparamos que ambos sean correctos con una compuerta logica AND
	return 1
Else
	return 0
EndIf

EndFunc ;==>Evalido()


;>>>>>>>>>>>>> Funcion OLE <<<<<<<<<<<<<<<<<<
Func OLE($data)
local $ar[4]
$ar[0]=stringmid($data,1,2)
$ar[1]=stringmid($data,3,2)
$ar[2]=stringmid($data,5,2)
$ar[3]=stringmid($data,7,2)
$ren=($ar[3]&$ar[2]&$ar[1]&$ar[0])
return $ren
EndFunc;==>OLE()

Saludos