MCPcopy Create free account
hub / github.com/qilingframework/qiling / init_ldr_data

Method init_ldr_data

qiling/loader/pe.py:528–547  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

526 self.PEB = peb_obj
527
528 def init_ldr_data(self):
529 ldr_struct = make_ldr_data(self.ql.arch.bits)
530
531 ldr_addr = self.structure_last_addr
532 nobj_addr = self.ql.mem.align_up(ldr_addr + ldr_struct.sizeof(), 0x10)
533
534 ldr_obj = ldr_struct.volatile_ref(self.ql.mem, ldr_addr)
535 ldr_obj.InLoadOrderModuleList.Flink = ldr_addr + ldr_struct.InLoadOrderModuleList.offset
536 ldr_obj.InLoadOrderModuleList.Blink = ldr_addr + ldr_struct.InLoadOrderModuleList.offset
537
538 ldr_obj.InMemoryOrderModuleList.Flink = ldr_addr + ldr_struct.InMemoryOrderModuleList.offset
539 ldr_obj.InMemoryOrderModuleList.Blink = ldr_addr + ldr_struct.InMemoryOrderModuleList.offset
540
541 ldr_obj.InInitializationOrderModuleList.Flink = ldr_addr + ldr_struct.InInitializationOrderModuleList.offset
542 ldr_obj.InInitializationOrderModuleList.Blink = ldr_addr + ldr_struct.InInitializationOrderModuleList.offset
543
544 self.ql.log.info(f'LDR is at {ldr_addr:#x}')
545
546 self.structure_last_addr = nobj_addr
547 self.LDR = ldr_obj
548
549 def add_ldr_data_table_entry(self, dll_name: str):
550 entry_struct = make_ldr_data_table_entry(self.ql.arch.bits)

Callers 1

loadMethod · 0.80

Calls 4

make_ldr_dataFunction · 0.85
align_upMethod · 0.80
sizeofMethod · 0.80
volatile_refMethod · 0.80

Tested by

no test coverage detected