ELF::Extract::Sections - Extract Raw Chunks of data from identifiable ELF Sections
version 0.03000101
use ELF::Extract::Sections; # Create an extractor object for foo.so my $extractor = ELF::Extract::Sections->new( file => '/path/to/foo.so' ); # Scan file for section data, returns a hash my %sections = ${ $extractor->sections }; # Retreive the section object for the comment section my $data = $sections{.comment}; # Print the stringified explanation of the section print "$data"; # Get the raw bytes out of the section. print $data->contents # returns bytes
This code is relatively new. It exists only as a best attempt at present until further notice. It has proved as practical for at least one application, and this is why the module exists. However, it can't be guaranteed it will work for whatever you want it to in all cases. Please report any bugs you find.
This only presently has a very bare-bones functionality, which should however prove practical for most purposes. If you have any suggestions, please tell me via "report bugs". If you never seek, you'll never find.
This code is written by a human, and like all human code, it sucks. There will be bugs. Please report them.
Returns the file the section data is being created for.
Returns a HashRef of the available sections.
Returns the name of the default scanner plug-in
Creates A new Section Extractor object with the default scanner
Creates A new Section Extractor object with the specified scanner
Returns an ArrayRef sorted by the SORT_BY field, in the default order.
Returns an ArrayRef sorted by the SORT_BY field. May be Ascending or Descending depending on requirements.
Optional parameters. True for descending, False or absent for ascending.
A String of the field to sort by. Valid options at present are
The Section Name
The Sections offset relative to the start of the file.
The Size of the section.
These aren't really user serviceable, but they make your front end work.
See "sections"
isa => ClassName, ro, lazy_build
isa => Object, ro, lazy_build
Builds "_scanner_package"
Builds "_scanner_instance"
method _warn_stash_collision ( Str $stashname!, Str $header!, Str $offset! ) { }
method _stash_record ( HashRef $stash! , Str $header!, Str $offset! ) { }
method _build_section_section ( Str $stashName, Int $start, Int $stop , File $file ) { }
method _build_section_table ( HashRef $ob! ) { }
method _scan_guess_size { }
method _scan_with_size { }
This library uses Log::Log4perl. To see more verbose processing notices, do this:
use Log::Log4perl qw( :easy ); Log::Log4perl->easy_init($DEBUG);
For convenience to make sure you don't happen to miss this fact, we never initialize Log4perl ourselves, so it will spit the following message if you have not set it up:
Log4perl: Seems like no initialization happened. Forgot to call init()?
To suppress this, just do
use Log::Log4perl qw( :easy );
I request however you don't do that for modules intended to be consumed by others without good cause.
Kent Fredric <kentnl@cpan.org>
This software is copyright (c) 2013 by Kent Fredric.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install ELF::Extract::Sections, copy and paste the appropriate command in to your terminal.
cpanm
cpanm ELF::Extract::Sections
CPAN shell
perl -MCPAN -e shell install ELF::Extract::Sections
For more information on module installation, please visit the detailed CPAN module installation guide.