Skip to content

Commit

Permalink
some fixes & IDA 7.4 support (py 2.7)
Browse files Browse the repository at this point in the history
  • Loading branch information
danigargu committed Oct 22, 2019
1 parent 1cf2573 commit 0f4e0b2
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 27 deletions.
8 changes: 3 additions & 5 deletions dereferencing/colorizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import string

import idc
import ida_bytes
import ida_nalt
import idaapi
import idautils

Expand Down Expand Up @@ -44,7 +42,7 @@ def get_value_type(ea):
elif "heap" in segm_name.lower():
addr_type = T_HEAP

elif segm != None:
elif segm is not None:
if not is_code and segm.perm & idaapi.SEGPERM_READ and \
segm.perm & idaapi.SEGPERM_WRITE and \
segm.perm & idaapi.SEGPERM_EXEC:
Expand Down Expand Up @@ -202,9 +200,9 @@ def get_disasm(self, ea):
return self.strip_disas_spaces(d)

def get_string(self, ea):
res = ida_bytes.get_strlit_contents(ea, -1, ida_nalt.STRTYPE_C_16)
res = idc.get_strlit_contents(ea)
if res and len(res) == 1:
res = ida_bytes.get_strlit_contents(ea, -1, ida_nalt.STRTYPE_C_16)
res = idc.get_strlit_contents(ea, -1, idc.STRTYPE_C_16)
return res

def get_printable(self, val):
Expand Down
15 changes: 6 additions & 9 deletions dereferencing/dbg.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import idaapi
import idc
import ida_dbg

from dereferencing import regs

Expand All @@ -32,16 +31,16 @@

# -----------------------------------------------------------------------
class DbgHooks(idaapi.DBG_Hooks):
last_tid = None
timer = None
timer_freq = 1000/4
def __init__(self, callback):
super(DbgHooks, self).__init__()
self.from_attach = False
self.callback = callback
self.last_tid = idaapi.get_current_thread()
self.timer_freq = 1000/4
self.timer = None

def hook(self, *args):
self.timer = idaapi.register_timer(self.timer_freq, self.check_thread)
#self.timer = idaapi.register_timer(self.timer_freq, self.check_thread)
super(DbgHooks, self).hook(*args)

def unhook(self, *args):
Expand All @@ -50,10 +49,9 @@ def unhook(self, *args):
super(DbgHooks, self).unhook(*args)

def check_thread(self):
tid = ida_dbg.get_current_thread()
tid = idaapi.get_current_thread()
if self.last_tid != tid:
idaapi.refresh_debugger_memory()
self.callback()
self.notify()
self.last_tid = tid
return self.timer_freq

Expand Down Expand Up @@ -114,7 +112,6 @@ def get_hardware_info():
cpuname = info.procname.lower()
#TODO


def supported_cpu():
info = idaapi.get_inf_structure()
cpuname = info.procname.lower()
Expand Down
25 changes: 15 additions & 10 deletions dereferencing/views/registers.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ def reload_info(self):

for reg in dbg.registers:
line, changed = self.colorize_register(reg)
self.add_line(line, changed)
if line is not None:
self.add_line(line, changed)

if dbg.is_pefile:
self.add_line(*self.last_error_str())
Expand All @@ -96,7 +97,11 @@ def colorize_register(self, reg):
result = ''
reduced = False

reg_val = idc.get_reg_value(reg)
try:
reg_val = idc.get_reg_value(reg)
except:
return None, False

label, changed = self.get_reg_label(reg, reg_val)
chain = self.get_ptr_chain(reg_val)

Expand Down Expand Up @@ -127,11 +132,11 @@ def modify_value(self):
return

reg_val = idc.get_reg_value(reg)
b = idc.AskStr("0x%X" % reg_val, "Modify register value")
b = idaapi.ask_str("0x%X" % reg_val, 0, "Modify register value")
if b is not None:
try:
value = int(idaapi.str2ea(b))
idc.SetRegValue(value, reg)
idc.set_reg_value(value, reg)
self.reload_info()

if reg == dbg.registers.flags:
Expand Down Expand Up @@ -161,7 +166,7 @@ def toggle_value(self):
return

val = dbg.to_uint(~self.reg_vals[reg])
idc.SetRegValue(val, reg)
idc.set_reg_value(val, reg)
self.reload_info()

def inc_reg(self):
Expand All @@ -170,7 +175,7 @@ def inc_reg(self):
return

val = dbg.to_uint(self.reg_vals[reg]+1)
idc.SetRegValue(val, reg)
idc.set_reg_value(val, reg)
self.reload_info()

def dec_reg(self):
Expand All @@ -179,19 +184,19 @@ def dec_reg(self):
return

val = dbg.to_uint(self.reg_vals[reg]-1)
idc.SetRegValue(val, reg)
idc.set_reg_value(val, reg)
self.reload_info()

def zero_reg(self):
reg = self.get_selected_reg()
if not reg:
return

idc.SetRegValue(0, reg)
idc.set_reg_value(0, reg)
self.reload_info()

def set_deref_levels(self):
value = idc.AskLong(config.max_deref_levels, "Set current dereferencing levels to show")
value = idaapi.ask_long(config.max_deref_levels, "Set current dereferencing levels to show")
if value is not None:
if value < 0:
idaapi.warning("Negative values are not allowed")
Expand Down Expand Up @@ -337,7 +342,7 @@ def switch_value(self):
flag = line[:4].strip()
new_val = not self.flag_vals[flag]

rc = idc.SetRegValue(int(new_val), flag)
rc = idc.set_reg_value(int(new_val), flag)
if not rc:
idaapi.warning("Unable to update the register value")
return
Expand Down
6 changes: 3 additions & 3 deletions dereferencing/views/stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self, parent=None):

def jump_to(self):
current = self.base_expr if self.base_expr is not None else ""
b = idc.AskStr(current, "Sync with")
b = idaapi.ask_str(current, 0, "Sync with")
if b and len(b) > 0:
try:
self.base_expr = b
Expand All @@ -36,7 +36,7 @@ def jump_to(self):
self.base_addr = None

def set_stack_entries(self):
value = idc.AskLong(config.n_stack_entries, "Set the number of stack entries to show")
value = idaapi.ask_long(config.n_stack_entries, "Set the number of stack entries to show")
if value is not None:
if value <= 0:
idaapi.warning("Negative values are not allowed")
Expand Down Expand Up @@ -146,7 +146,7 @@ def reload_info(self):
if not idaapi.is_loaded(ptr):
break

value = idc.get_qword(ptr)
value = dbg.get_ptr(ptr)
self.add_line("%02d:%04X %s" % (i, offset, self.parse_value(ptr)))

except Exception as e:
Expand Down

0 comments on commit 0f4e0b2

Please sign in to comment.