class Metasm::SWF
Constants
- CHUNK_TYPE
Attributes
chunks[RW]
endianness[RW]
header[RW]
signature[RW]
version[RW]
Public Class Methods
new(cpu = nil)
click to toggle source
Calls superclass method
Metasm::ExeFormat::new
# File metasm/exe_format/swf.rb, line 174 def initialize(cpu = nil) @endianness = :little @header = Header.new @chunks = [] super(cpu) end
Public Instance Methods
decode()
click to toggle source
# File metasm/exe_format/swf.rb, line 198 def decode decode_header while @encoded.ptr < @data_length @chunks << Chunk.decode(self) end end
decode_f16(edata=@encoded)
click to toggle source
# File metasm/exe_format/swf.rb, line 160 def decode_f16(edata=@encoded) edata.decode_imm(:i16, @endianness)/256.0 end
decode_f32(edata=@encoded)
click to toggle source
# File metasm/exe_format/swf.rb, line 161 def decode_f32(edata=@encoded) edata.decode_imm(:i32, @endianness)/65536.0 end
decode_header()
click to toggle source
# File metasm/exe_format/swf.rb, line 181 def decode_header @signature = @encoded.read(3) @version = decode_u8 @data_length = decode_u32 case @signature when 'FWS' when 'CWS' # data_length = uncompressed data length data = @encoded.read(@encoded.length-8) data = Zlib::Inflate.inflate(data) @encoded = EncodedData.new(data) else raise InvalidExeFormat, "Bad signature #{@signature.inspect}" end @data_length = [@data_length, @encoded.length].min @header = Header.decode(self) end
decode_u16(edata=@encoded)
click to toggle source
# File metasm/exe_format/swf.rb, line 158 def decode_u16(edata=@encoded) edata.decode_imm(:u16, @endianness) end
decode_u32(edata=@encoded)
click to toggle source
# File metasm/exe_format/swf.rb, line 159 def decode_u32(edata=@encoded) edata.decode_imm(:u32, @endianness) end
decode_u8( edata=@encoded)
click to toggle source
# File metasm/exe_format/swf.rb, line 157 def decode_u8( edata=@encoded) edata.decode_imm(:u8, @endianness) end
encode_f16(w)
click to toggle source
# File metasm/exe_format/swf.rb, line 165 def encode_f16(w) Expression[(w*256).to_i].encode(:u16, @endianness) end
encode_f32(w)
click to toggle source
# File metasm/exe_format/swf.rb, line 166 def encode_f32(w) Expression[(w*65536).to_i].encode(:u32, @endianness) end
encode_u16(w)
click to toggle source
# File metasm/exe_format/swf.rb, line 163 def encode_u16(w) Expression[w].encode(:u16, @endianness) end
encode_u32(w)
click to toggle source
# File metasm/exe_format/swf.rb, line 164 def encode_u32(w) Expression[w].encode(:u32, @endianness) end
encode_u8(w)
click to toggle source
# File metasm/exe_format/swf.rb, line 162 def encode_u8(w) Expression[w].encode(:u8, @endianness) end
sizeof_f16()
click to toggle source
# File metasm/exe_format/swf.rb, line 170 def sizeof_f16 ; 2 ; end
sizeof_f32()
click to toggle source
# File metasm/exe_format/swf.rb, line 171 def sizeof_f32 ; 4 ; end
sizeof_u16()
click to toggle source
# File metasm/exe_format/swf.rb, line 168 def sizeof_u16 ; 2 ; end
sizeof_u32()
click to toggle source
# File metasm/exe_format/swf.rb, line 169 def sizeof_u32 ; 4 ; end
sizeof_u8()
click to toggle source
# File metasm/exe_format/swf.rb, line 167 def sizeof_u8 ; 1 ; end