line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
# Copyright 2004 by Audrey Tang |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
package Win32::Exe::Base; |
4
|
|
|
|
|
|
|
|
5
|
4
|
|
|
4
|
|
24
|
use strict; |
|
4
|
|
|
|
|
6
|
|
|
4
|
|
|
|
|
141
|
|
6
|
4
|
|
|
4
|
|
19
|
use base 'Parse::Binary'; |
|
4
|
|
|
|
|
7
|
|
|
4
|
|
|
|
|
4319
|
|
7
|
4
|
|
|
4
|
|
91306
|
use constant BASE_CLASS => 'Win32::Exe'; |
|
4
|
|
|
|
|
10
|
|
|
4
|
|
|
|
|
308
|
|
8
|
4
|
|
|
|
|
1020
|
use constant FORMAT => ( |
9
|
|
|
|
|
|
|
Data => 'a', |
10
|
4
|
|
|
4
|
|
22
|
); |
|
4
|
|
|
|
|
10
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
sub align { |
13
|
0
|
|
|
0
|
0
|
|
my ($self, $value, $boundary) = @_; |
14
|
0
|
0
|
|
|
|
|
my $n = ($value % $boundary) or return $value; |
15
|
0
|
|
|
|
|
|
return($value + $boundary - $n); |
16
|
|
|
|
|
|
|
} |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
sub pad { |
19
|
0
|
|
|
0
|
0
|
|
my ($self, $value, $bounary) = @_; |
20
|
0
|
0
|
|
|
|
|
my $x = length($value) % $bounary or return ''; |
21
|
0
|
|
|
|
|
|
return "\0" x ($bounary - $x); |
22
|
|
|
|
|
|
|
} |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
sub decode_ucs2 { |
25
|
0
|
|
|
0
|
0
|
|
my ($self, $string) = @_; |
26
|
0
|
|
|
|
|
|
return join('', map chr($_), unpack("v*", $string)); |
27
|
|
|
|
|
|
|
} |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
sub encode_ucs2 { |
30
|
0
|
|
|
0
|
0
|
|
my ($self, $string) = @_; |
31
|
0
|
|
|
|
|
|
return pack("v*", map ord($_), split(//, $string)); |
32
|
|
|
|
|
|
|
} |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
1; |