class Metasm::COFF::TLSDirectory

Attributes

callbacks[RW]

Public Instance Methods

decode(coff) click to toggle source
Calls superclass method Metasm::SerialStruct#decode
# File metasm/exe_format/coff_decode.rb, line 327
def decode(coff)
        super(coff)

        if coff.sect_at_va(@callback_p)
                @callbacks = []
                while (ptr = coff.decode_xword) != 0
                        # __stdcall void (*ptr)(void* dllhandle, dword reason, void* reserved)
                        # (same as dll entrypoint)
                        @callbacks << (ptr - coff.optheader.image_base)
                end
        end
end
encode(coff) click to toggle source
Calls superclass method Metasm::SerialStruct#encode
# File metasm/exe_format/coff_encode.rb, line 196
def encode(coff)
        cblist = EncodedData.new
        @callback_p = coff.label_at(cblist, 0, 'callback_p')
        @callbacks.to_a.each { |cb|
                cblist << coff.encode_xword(cb)
        }
        cblist << coff.encode_xword(0)

        dir = super(coff)

        [dir, cblist]
end
set_default_values(coff) click to toggle source
Calls superclass method Metasm::SerialStruct#set_default_values
# File metasm/exe_format/coff_encode.rb, line 209
def set_default_values(coff)
        @start_va ||= 0
        @end_va ||= @start_va

        super(coff)
end