(self,state,concrete_target)
return gdt
Create a GDT in the state memory and populate the segment registers.
        Rehook the vsyscall address using the real value in the concrete process memory

        :param state:               state which will be modified
        :param concrete_target:     concrete target that will be used to read the fs register
        :return:
Create a GDT in the state memory and populate the segment registers.
        Rehook the vsyscall address using the real value in the concrete process memory
Create a GDT in the state memory and populate the segment registers . Rehook the vsyscall address using the real value in the concrete process memory
def initialize_gdt_x86(self,state,concrete_target):
        """
        Create a GDT in the state memory and populate the segment registers.
        Rehook the vsyscall address using the real value in the concrete process memory

        :param state:               state which will be modified
        :param concrete_target:     concrete target that will be used to read the fs register
        :return:
        """
        _l.debug("Creating fake Global Descriptor Table and synchronizing gs segment register")
        gs = self._read_gs_register_x86(concrete_target)
        gdt = self.generate_gdt(0x0, gs)
        self.setup_gdt(state, gdt)

        # Synchronize the address of vsyscall in simprocedures dictionary with the concrete value
        _vsyscall_address = concrete_target.read_memory(gs + 0x10, state.project.arch.bits / 8)
        _vsyscall_address = struct.unpack(state.project.arch.struct_fmt(), _vsyscall_address)[0]
        state.project.rehook_symbol(_vsyscall_address, '_vsyscall', True)

        return gdt
def initialize_gdt_x86 ( self , state , concrete_target ) : _l . debug ( "Creating fake Global Descriptor Table and synchronizing gs segment register" ) gs = self . _read_gs_register_x86 ( concrete_target ) gdt = self . generate_gdt ( 0x0 , gs ) self . setup_gdt ( state , gdt ) # Synchronize the address of vsyscall in simprocedures dictionary with the concrete value _vsyscall_address = concrete_target . read_memory ( gs + 0x10 , state . project . arch . bits / 8 ) _vsyscall_address = struct . unpack ( state . project . arch . struct_fmt ( ) , _vsyscall_address ) [ 0 ] state . project . rehook_symbol ( _vsyscall_address , '_vsyscall' , True ) return gdt