Archive-ByteBoozer
view release on metacpan or search on metacpan
lib/Archive/ByteBoozer.pm view on Meta::CPAN
return unless defined $replace_initial_address;
my @memory_address = _memory_address_bytes($replace_initial_address);
substr $params->{_source_data}, 0, 2, join '', @memory_address;
return;
}
sub crunch {
my $params = { @_ };
validate(
@_, {
source => { type => HANDLE, isa => 'IO::Handle', callbacks => {
is_not_the_same_as_target => sub { exists $_[1]->{target} && refaddr $_[0] != refaddr $_[1]->{target} },
} },
target => { type => HANDLE, isa => 'IO::Handle', callbacks => {
is_not_the_same_as_source => sub { exists $_[1]->{source} && refaddr $_[0] != refaddr $_[1]->{source} },
} },
attach_decruncher => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
make_executable => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
precede_initial_address => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
relocate_output => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
relocate_output_up_to => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
replace_initial_address => { type => SCALAR, optional => 1, callbacks => {
is_valid_memory_address => sub { looks_like_number $_[0] && $_[0] >= 0x0000 && $_[0] <= 0xffff },
} },
verbose => { type => SCALAR, optional => 1, regex => qr/^\d+$/ },
}
);
my $pos = _seek_and_tell($params->{source}, $params->{target});
my $source_position = $pos->{source}->{get}->($params->{source});
my $target_position = $pos->{target}->{get}->($params->{target});
_read_file $params;
_precede_initial_address $params;
( run in 2.552 seconds using v1.01-cache-2.11-cpan-9b1e4054eb1 )