Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Danyfirex

#461
Scripting / [Autoit] Get_EOF Ejemplos
27 Agosto 2012, 15:19 PM
bueno aquí una pequeña contribución para los que les gusta Autoit  ;D

Les dejo dos ejemplos uno con estructura y el otro sin estructura.

Código (php) [Seleccionar]
#cs -------------------------------------------------------
AutoIt Version: 3.3.8.1
Author..........: Pink
Script Function...: Get_EOF
Uso..............: Get_EOF(Runta Archuivo)
Retorna : "Posicion EOF"
Gracias: EON-Karcrack-The Swash
#ce -------------------------------------------------------


;Ejemplo
$Path="C:\Users\Usuario\Desktop\Anotador.exe"
msgbox(0,"",Get_EOF($Path))


Func Get_EOF($MyFile)
Local $File = FileOpen($MyFile,16)
If @error Then
Msgbox(0,"Error","No se Pudo leer el Archivo")
Endif

Local $FileLen = FileGetSize($MyFile)
Local $Binary = DllStructCreate("byte["& $FileLen &"]")
DllStructSetData($Binary,1,FileRead($File))
FileClose($File)
Local $BinaryPtr = DllStructGetPtr($Binary)




Local Const $I_N_H_Len = 248
Local Const $I_F_H_Len = 20
Local Const $I_O_H_Len = 224
Local Const $I_S_H_Len = 40

Local $IMAGE_DOS_HEADER = DllStructCreate( _
"WORD e_magic;WORD e_cblp;WORD e_cp;WORD e_crlc;WORD e_cparhdr;WORD e_minalloc;WORD e_maxalloc;"& _
"WORD e_ss;WORD e_sp;WORD e_csum;WORD e_ip;WORD e_cs;WORD e_lfarlc;WORD e_ovno;"& _
"WORD e_res[4];WORD e_oemid;WORD e_oeminfo;WORD e_res2[10];WORD e_lfanew",$BinaryPtr)


If Not DllStructGetData($IMAGE_DOS_HEADER,"e_magic") = 23177 Then
Msgbox(0,"Error","Firma MZ Si Encontrado " )
EndIf



$BinaryPtr += DllStructGetData($IMAGE_DOS_HEADER,"e_lfanew")

Local $IMAGE_NT_HEADERS = DllStructCreate( _
"DWORD signature;CHAR ifh["& $I_F_H_Len &"];CHAR ioh["& $I_O_H_Len &"]",$BinaryPtr)

If Not DllStructGetData($IMAGE_NT_HEADERS,"signature") = 17744 Then
Msgbox(0,"Error","Firma PE No Encontrada")
Endif

Local $IMAGE_FILE_HEADER = DllStructCreate( _
"WORD machine;WORD numberofsections;DWORD timedatestamp;DWORD pointertosymboltable;DWORD numberofsymbols;"& _
"WORD SizeOfOptionalHeader;WORD characteristics",DllStructGetPtr($IMAGE_NT_HEADERS,"ifh"))

local $IMAGE_OPT_HEADER = DllStructCreate( _
"WORD magic;BYTE majorlinkerversion;BYTE minorlinkerversion;DWORD sizeofcode;DWORD sizeofinitializeddata;"& _
"DWORD sizeofuninitializeddata;DWORD addressofentrypoint;DWORD baseofcode;DWORD baseofdata;DWORD imagebase;"& _
"DWORD sectionalignment;DWORD filealignment;WORD majoroperatingsystemversion;WORD minoroperatingsystemversion;"& _
"WORD majorimageversion;WORD minorimageversion;WORD majoresubsystemversion;WORD minorsubsystemversion;"& _
"DWORD win32versionvalue;DWORD sizeofimage;DWORD sizeofheaders;DWORD checksum;WORD subsystem;WORD dllcharacteristics;"& _
"DWORD sizeofstackreserve;DWORD sizeofstackcommit;DWORD sizeofheapcommit;DWORD loaderflags;DWORD numberofrvaandsizes;"& _
"DOUBLE datadirectory[16]",DllStructGetPtr($IMAGE_NT_HEADERS,"ioh"))

$BinaryPtr += $I_N_H_Len

$InicioINT=DllStructGetData($IMAGE_DOS_HEADER,"e_lfanew")
$NS=DllStructGetData($IMAGE_FILE_HEADER,'numberofsections')-1
$UTLS=$NS*$I_S_H_Len

$BinaryPtr += $UTLS

Local $IMAGE_SECTION_HEADER = DllStructCreate( _
"CHAR name[8];DWORD virtualsize;DWORD virtualaddress;DWORD sizeofrawdata;DWORD pointertorawdata;DWORD pointertorelocations;"& _
"DWORD pointertolinenumbers;WORD numberofrelocations;WORD numberoflinenumbers;DWORD characteristics",$BinaryPtr)




$RawSize=dec(Hex(DllStructGetData($IMAGE_SECTION_HEADER, "SizeOfRawData")))
$RawOffset=dec(Hex(DllStructGetData($IMAGE_SECTION_HEADER, "PointerToRawData")))


Return $RawSize+$RawOffset

EndFunc 







Código (php) [Seleccionar]
#cs -------------------------------------------------------
AutoIt Version: 3.3.8.1
Author..........: Pink
Script Function...: Get_EOF
Uso..............: Get_EOF(Runta Archuivo)
Retorna : "Posicion EOF"
Gracias: EON-Karcrack-The Swash
#ce ------------------------------------




;Ejemplo


local $myfile="C:\Users\Usuario\Desktop\Anotador.exe"

msgbox(0,"",Get_EOF($myfile))

Func Get_EOF($file)
    Const $l_fanew=60
    Const $PEsize=4
    Const $I_F_H=20
    const $SizeS =40
    local $LFvalue ;offset Entrada IMAGE_NT_HEADERS firma PE
    local $Size_O_H ;izeOfOptionalHeader
    local $NofS  ;NumberOfSections
    local $fin_I_S_H ;IMAGE_SECTION_HEADER


;leyendo archivo y cargando buffer
    $hfile=fileopen($file)
    $binary=fileread($hfile,1000)


;offset Entrada IMAGE_NT_HEADERS firma PE
   $LFvalue=binarymid($binary,$l_fanew+1,4)
   $LFvalue=Dec(OLE(Stringreplace($LFvalue,"0x","",1,0)))



     ;NumberOfSections
    $NofS=$LFvalue+$PEsize+2
    $NofS=BinaryMid($binary,($NofS+1),2)
    $NofS=Dec(OLE(Stringreplace($NofS,"0x","",1,0)))


    ;Tamaño SizeOfOptionalHeader
    $Size_O_H=$LFvalue+$PEsize+16
    $Size_O_H=BinaryMid($binary,($Size_O_H+1),2)
    $Size_O_H=dec(OLE(StringReplace($Size_O_H,"0x","",1,0)))


$fin_I_S_H=($LFvalue+$PEsize+$I_F_H+$Size_O_H)+($NofS*$SizeS)



$RawSize=binarymid($binary,$fin_I_S_H-24,4)
$RawSize=dec(StringReplace($RawSize,"0x","",1,0))

$RawOffset=binarymid($binary,$fin_I_S_H-20,4)
$RawOffset=dec(StringReplace($RawOffset,"0x","",1,0))


fileclose($hfile)

return $RawSize+$RawOffset




EndFunc


;Funcion OLE "Orden Little Endian"
Func OLE($Var)
Local $len=stringlen($Var)/2
local $Array[$len+1]
local $Char
local $A=1
local $Result
for $i= 1 to $len
    $Char=stringmid($Var,$A,2)
    $A+=2
    $Array[$i]=$Char
    next
for $x = $len to 1 Step -1
    $Result&=$Array[$x]
Next
Return $Result
EndFunc 



Saludos cualquier dura aquí estoy :)
#462
Si Señor    :rolleyes:


Primero aprender como trabaja el RunPE. luego veras lo fácil que es bajar las detecciones.
#464
Cita de: The Swash en 18 Agosto 2012, 04:13 AM
Hola,

Danyfirex, para encontrar dicho campo debes primero:

  • Encontrar el valor de e_lfanew.
  • Sumarle 0x24 que corresponde a PE_SIGNATURE + SIZE_IMAGE_FILE_HEADER.
  • Luego súmale la posición del campo SizeOfInitializedData que es 0x08.
  • Ya estás en el campo que requieres.

Un saludo,
Iván Portilla.


Gracias. hasta ahi lo entiendo. pero realmente quiero saber como haces para actualizarlos.

Osea como lo hace to Realing PE. que parámetros tomo en cuenta para actualizarlo.

Saludos perdón por liarte tanto :S
#465
Esta muy Bueno el Código, Gracias  ;-). voy a estudiarlo  a fondo.
#466
Hola Compas.  Por aqui ando otra vez con una duda que no he podido resolver.

he leido sobre la PE. pero realmente no entiendo de donde salen los valores SizeOfCode, SizeOfInitializedData & SizeOfUninitializedData, osea que parametros tomo para obtener sus valores..

En el manual de la PE version Español "The Swash" habla un poco de eso aquí.

SizeOfCode, SizeOfInitializedData & SizeOfUninitializedData:
Estos tres campos se ven relacionados en cuanto a cómo obtener su valor y el
único cambio es la procedencia de cada uno. Al igual que el ejecutable, sus
secciones también presentan características y para relacionarlas con estos tres
campos las características serían:
CONSTANTE VALOR
IMAGE_SCN_CNT_CODE 0x00000020
IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
Estos campos son acumuladores de la suma del SizeOfRawData de las secciones
que presenten su característica. Por ejemplo tengo 2 secciones que tienen
IMAGE_SCN_CNT_CODE entonces el campo SizeOfCode tendrá como valor la
suma del SizeOfRawData de las 2 secciones.




Pero Realmente no me quedo claro. se supone que la suma de los valores RSize de la Imagen



Debería obtener los valores mostrados en esta Imagen




hasta ahí creo que estoy en lo correcto.

Entonces como sacaría esos parámetros?  porque sumando todos los RSize me daría 00004000? y los valores de SizeOfCode, SizeOfInitializedData & SizeOfUninitializedData son distintos.

saludos y gracias por la ayuda que brindan.







#467
tengo una duda :S

como podria obtener el valor de SizeofinitializedData.

Osea no se que parametros tomar para actualizarlo.


Perdon por la doble respuesta.  saludos The Swash



#468
Excelente Taller. muy Bien explicado.  ;-)  Felicidades Crack
#469
The forum is to solve Questions.  :rolleyes:

ask here.
#470
Cita de: Harmmy en  9 Agosto 2012, 16:03 PM
Does it work on my project after restarting the computer?

Yes. work even if you close session.