Data-ParseBinary
view release on metacpan or search on metacpan
lib/Data/ParseBinary/Executable/PE32.pm view on Meta::CPAN
sub UTCTimeStamp {
my ($name) = @_;
return Data::ParseBinary::lib::ExecPE32::UTCTimeStampAdapter->create(ULInt32($name));
}
my $msdos_header = Struct("msdos_header",
Magic("MZ"),
ULInt16("partPag"),
ULInt16("page_count"),
ULInt16("relocation_count"),
ULInt16("header_size"),
ULInt16("minmem"),
ULInt16("maxmem"),
ULInt16("relocation_stackseg"),
ULInt16("exe_stackptr"),
ULInt16("checksum"),
ULInt16("exe_ip"),
ULInt16("relocation_codeseg"),
ULInt16("table_offset"),
ULInt16("overlay"),
Padding(8),
ULInt16("oem_id"),
ULInt16("oem_info"),
Padding(20),
ULInt32("coff_header_pointer"),
Anchor("_assembly_start"),
Field("code", sub { $_->ctx->{coff_header_pointer} - $_->ctx->{_assembly_start} } ),
);
lib/Data/ParseBinary/Executable/PE32.pm view on Meta::CPAN
ULInt32("address"),
ULInt32("size"),
)
),
mapping => {
0 => 'export_table',
1 => 'import_table',
2 => 'resource_table',
3 => 'exception_table',
4 => 'certificate_table',
5 => 'base_relocation_table',
6 => 'debug',
7 => 'architecture',
8 => 'global_ptr',
9 => 'tls_table',
10 => 'load_config_table',
11 => 'bound_import',
12 => 'import_address_table',
13 => 'delay_import_descriptor',
14 => 'complus_runtime_header',
}
),
);
my $section = Struct("section",
String("name", 8, padchar => "\x00"),
ULInt32("virtual_size"),
ULInt32("virtual_address"),
ULInt32("raw_data_size"),
ULInt32("raw_data_pointer"),
ULInt32("relocations_pointer"),
ULInt32("line_numbers_pointer"),
ULInt16("number_of_relocations"),
ULInt16("number_of_line_numbers"),
FlagsEnum(ULInt32("characteristics"),
TYPE_REG => 0x00000000,
TYPE_DSECT => 0x00000001,
TYPE_NOLOAD => 0x00000002,
TYPE_GROUP => 0x00000004,
TYPE_NO_PAD => 0x00000008,
TYPE_COPY => 0x00000010,
CNT_CODE => 0x00000020,
CNT_INITIALIZED_DATA => 0x00000040,
lib/Data/ParseBinary/Executable/PE32.pm view on Meta::CPAN
Pointer(sub { $_->ctx->{line_numbers_pointer} },
Array(sub { $_->ctx->{number_of_line_numbers} },
Struct("line_numbers",
ULInt32("type"),
ULInt16("line_number"),
)
)
),
Pointer(sub { $_->ctx->{relocations_pointer} },
Array(sub { $_->ctx->{number_of_relocations} },
Struct("relocations",
ULInt32("virtual_address"),
ULInt32("symbol_table_index"),
ULInt16("type"),
)
)
),
);
sub min {
my @values = @_;
( run in 0.534 second using v1.01-cache-2.11-cpan-71847e10f99 )