17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/rex/encoder/alpha2/unicode_upper.rb', line 17
def self.gen_decoder_prefix(reg, offset)
if (offset > 6)
raise "Critical: Offset is greater than 6"
end
if (offset <= 4)
nop = 'CP' * offset
mod = 'IA' * (4 - offset) + nop
else
mod = 'AA' * (offset - 4)
nop = 'CP' * (4 - mod.length)
mod += nop
end
regprefix = {
'EAX' => 'PPYA' + mod,
'ECX' => mod + '4444',
'EDX' => 'RRYA' + mod,
'EBX' => 'SSYA' + mod,
'ESP' => 'TUYA' + mod,
'EBP' => 'UUYA' + mod,
'ESI' => 'VVYA' + mod,
'EDI' => 'WWYA' + mod,
'[ESP]' => 'YA' + mod + '44',
'[ESP+4]' => 'YUYA' + mod,
}
return regprefix[reg]
end
|