@@ -165,7 +165,6 @@ def setup_ctx_manager(ql: Qiling) -> CtxManager:
165165 return {
166166 QL_ARCH .X86 : CtxManager_X86 ,
167167 QL_ARCH .ARM : CtxManager_ARM ,
168- QL_ARCH .ARM_THUMB : CtxManager_ARM ,
169168 QL_ARCH .CORTEX_M : CtxManager_ARM ,
170169 QL_ARCH .MIPS : CtxManager_MIPS ,
171170 }.get (ql .arch .type )(ql )
@@ -185,7 +184,7 @@ def print_asm(self, insn: CsInsn, to_jump: Optional[bool] = None, address: int =
185184 trace_line = f"0x{ insn .address :08x} │ { opcode :10s} { insn .mnemonic :10} { insn .op_str :35s} "
186185
187186 cursor = " "
188- if self .ql .reg .arch_pc == insn .address :
187+ if self .ql .arch . regs .arch_pc == insn .address :
189188 cursor = "►"
190189
191190 jump_sign = " "
@@ -195,7 +194,7 @@ def print_asm(self, insn: CsInsn, to_jump: Optional[bool] = None, address: int =
195194 print (f"{ jump_sign } { cursor } { color .DARKGRAY } { trace_line } { color .END } " )
196195
197196 def dump_regs (self ):
198- return {reg_name : getattr (self .ql .reg , reg_name ) for reg_name in self .regs }
197+ return {reg_name : getattr (self .ql .arch . regs , reg_name ) for reg_name in self .regs }
199198
200199 def context_reg (self , saved_states ):
201200 return NotImplementedError
@@ -204,12 +203,12 @@ def context_reg(self, saved_states):
204203 def context_stack (self ):
205204
206205 for idx in range (10 ):
207- addr = self .ql .reg . arch_sp + idx * self .ql .pointersize
208- if (val := _try_read (self .ql , addr , self .ql .pointersize )[0 ]):
209- print (f"$sp+0x{ idx * self .ql .pointersize :02x} │ [0x{ addr :08x} ] —▸ 0x{ self .ql .unpack (val ):08x} " , end = "" )
206+ addr = self .ql .arch . regs . arch_sp + idx * self .ql . arch .pointersize
207+ if (val := _try_read (self .ql , addr , self .ql .arch . pointersize )[0 ]):
208+ print (f"$sp+0x{ idx * self .ql .arch . pointersize :02x} │ [0x{ addr :08x} ] —▸ 0x{ self .ql .unpack (val ):08x} " , end = "" )
210209
211210 # try to dereference wether it's a pointer
212- if (buf := _try_read (self .ql , addr , self .ql .pointersize ))[0 ] is not None :
211+ if (buf := _try_read (self .ql , addr , self .ql .arch . pointersize ))[0 ] is not None :
213212
214213 if (addr := self .ql .unpack (buf [0 ])):
215214
@@ -230,7 +229,7 @@ def context_stack(self):
230229 def context_asm (self ):
231230 # assembly before current location
232231 past_list = []
233- cur_addr = self .ql .reg .arch_pc
232+ cur_addr = self .ql .arch . regs .arch_pc
234233
235234 line = disasm (self .ql , cur_addr - 0x10 )
236235
@@ -336,7 +335,7 @@ def context_reg(self, saved_reg_dump):
336335 lines += line
337336
338337 print (lines .format (* cur_regs .values ()))
339- print (color .GREEN , "[{cpsr[mode]} mode], Thumb: {cpsr[thumb]}, FIQ: {cpsr[fiq]}, IRQ: {cpsr[irq]}, NEG: {cpsr[neg]}, ZERO: {cpsr[zero]}, Carry: {cpsr[carry]}, Overflow: {cpsr[overflow]}" .format (cpsr = self .get_flags (self .ql .reg .cpsr )), color .END , sep = "" )
338+ print (color .GREEN , "[{cpsr[mode]} mode], Thumb: {cpsr[thumb]}, FIQ: {cpsr[fiq]}, IRQ: {cpsr[irq]}, NEG: {cpsr[neg]}, ZERO: {cpsr[zero]}, Carry: {cpsr[carry]}, Overflow: {cpsr[overflow]}" .format (cpsr = self .get_flags (self .ql .arch . regs .cpsr )), color .END , sep = "" )
340339
341340
342341class CtxManager_MIPS (CtxManager ):
@@ -417,12 +416,12 @@ def context_reg(self, saved_reg_dump):
417416 lines += line
418417
419418 print (lines .format (* cur_regs .values ()))
420- print (color .GREEN , "EFLAGS: [CF: {flags[CF]}, PF: {flags[PF]}, AF: {flags[AF]}, ZF: {flags[ZF]}, SF: {flags[SF]}, OF: {flags[OF]}]" .format (flags = get_x86_eflags (self .ql .reg .ef )), color .END , sep = "" )
419+ print (color .GREEN , "EFLAGS: [CF: {flags[CF]}, PF: {flags[PF]}, AF: {flags[AF]}, ZF: {flags[ZF]}, SF: {flags[SF]}, OF: {flags[OF]}]" .format (flags = get_x86_eflags (self .ql .arch . regs .ef )), color .END , sep = "" )
421420
422421 @context_printer ("[ DISASM ]" , footer = True )
423422 def context_asm (self ):
424423 past_list = []
425- cur_addr = self .ql .reg .arch_pc
424+ cur_addr = self .ql .arch . regs .arch_pc
426425
427426 cur_insn = disasm (self .ql , cur_addr )
428427 prophecy = self .predictor .predict ()
@@ -494,7 +493,7 @@ def context_reg(self, saved_reg_dump):
494493 lines += line
495494
496495 print (lines .format (cur_regs .values ()))
497- print (color .GREEN , "[{cpsr[mode]} mode], Thumb: {cpsr[thumb]}, FIQ: {cpsr[fiq]}, IRQ: {cpsr[irq]}, NEG: {cpsr[neg]}, ZERO: {cpsr[zero]}, Carry: {cpsr[carry]}, Overflow: {cpsr[overflow]}" .format (cpsr = get_arm_flags (self .ql .reg .cpsr )), color .END , sep = "" )
496+ print (color .GREEN , "[{cpsr[mode]} mode], Thumb: {cpsr[thumb]}, FIQ: {cpsr[fiq]}, IRQ: {cpsr[irq]}, NEG: {cpsr[neg]}, ZERO: {cpsr[zero]}, Carry: {cpsr[carry]}, Overflow: {cpsr[overflow]}" .format (cpsr = get_arm_flags (self .ql .arch . regs .cpsr )), color .END , sep = "" )
498497
499498
500499if __name__ == "__main__" :
0 commit comments