¿Cómo puedo leer los encabezados de un archivo ejecutable portátil WinNT usando Perl?

StackOverflow https://stackoverflow.com/questions/1418855

  •  07-07-2019
  •  | 
  •  

Pregunta

Quiero trabajar con archivos PE en Perl y no encontré un módulo, así que creo que escribiré el mío (ya lo hice en Delphi una vez).

Solo tengo un problema, al asignar el ejecutable a un búfer, ¿cómo puedo buscar octales como 0x00004550 (IMAGE_NT_SIGNATURE), convertirlos nuevamente en cadenas grabables, etc.?

¿Fue útil?

Solución

Hay hay un módulo Perl para manipular ejecutables portátiles: < code> Win32 :: Exe .

No tengo ni idea de su pregunta exacta, pero si aún desea escribir su propia biblioteca, Win32 :: Exe podría ser una buena referencia.

Otros consejos

Para convertir ese valor en una representación de cadena de bytes, use pack . La constante que está tratando es un valor little-endian de 32 bits, entonces 'V' en la plantilla.

$ perl -e 'print pack q[V], 0x00004550' | hd
00000000  50 45 00 00                                       |PE..|
00000004

Ver perldoc -f pack para más detalles.

Probablemente no necesite buscar cadenas como " PE \ 0 \ 0 " ;, solo úselas para verificar si el archivo que está leyendo es realmente un archivo PE. La sección 'PE' generalmente viene justo después de la sección DOS ('MZ') que tiene su propio campo de longitud.

(Estoy de acuerdo en que Win32 :: Exe puede valer la pena, dependiendo de lo que quieras hacer).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top