diff --git a/qltui.py b/qltui.py index 07128f15..f4d605f8 100644 --- a/qltui.py +++ b/qltui.py @@ -56,114 +56,45 @@ class Callback_Functions(): """ @staticmethod - def read_mem_2_args(ql, user_data): + def read_mem(ql, *args): + user_data = args[-1] buff = ql.mem.read(user_data["address"], user_data["bytes_size"]) ql.log.info(f"Hook was triggered at -> {user_data['address']}") ql.log.info(buff) @staticmethod - def read_mem_4_args(ql, address=0, size=0, user_data=None): - buff = ql.mem.read(user_data["address"], user_data["bytes_size"]) - ql.log.info(f"Hook was triggered at -> {user_data['address']}") - ql.log.info(buff) - - @staticmethod - def read_mem_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - buff = ql.mem.read(user_data["address"], user_data["bytes_size"]) - ql.log.info(f"Hook was triggered at -> {user_data['address']}") - ql.log.info(buff) - - @staticmethod - def read_reg_2_args(ql,user_data): + def read_reg(ql, *args): + user_data = args[-1] buff = ql.reg.read(user_data["register_name"]) ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") ql.log.info(buff) @staticmethod - def read_reg_4_args(ql, address=0, size=0, user_data=None): - buff = ql.reg.read(user_data["register_name"]) - ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") - ql.log.info(buff) - - @staticmethod - def read_reg_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - buff = ql.reg.read(user_data["register_name"]) - ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") - ql.log.info(buff) - - @staticmethod - def write_mem_2_args(ql, user_data): + def write_mem(ql, *args): + user_data = args[-1] buff = ql.mem.write(user_data["address"], user_data["value"]) ql.log.info(f"Hook was triggered at -> {user_data['address']}") ql.log.info(buff) @staticmethod - def write_mem_4_args(ql, address=0, size=0, user_data=None): - buff = ql.mem.write(user_data["address"], user_data["value"]) - ql.log.info(f"Hook was triggered at -> {user_data['address']}") - ql.log.info(buff) - - @staticmethod - def write_mem_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - buff = ql.mem.write(user_data["address"], user_data["value"]) - ql.log.info(f"Hook was triggered at -> {user_data['address']}") - ql.log.info(buff) - - @staticmethod - def write_reg_2_args(ql,user_data): + def write_reg(ql, *args): + user_data = args[-1] buff = ql.reg.write(user_data["register_name"], user_data["value"]) ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") ql.log.info(buff) @staticmethod - def write_reg_4_args(ql, address=0, size=0, user_data=None): - buff = ql.reg.write(user_data["register_name"], user_data["value"]) - ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") - ql.log.info(buff) - - @staticmethod - def write_reg_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - buff = ql.reg.write(user_data["register_name"], user_data["value"]) - ql.log.info(f"Hook was triggered at -> {user_data['register_name']}") - ql.log.info(buff) - - @staticmethod - def emu_start_2_args(ql, user_data): + def emu_start(ql, *args): + user_data = args[-1] ql.emu_start(begin=user_data["start"], end=user_data["end"]) @staticmethod - def emu_start_4_args(ql, address=0, size=0, user_data=None): - ql.emu_start(begin=user_data["start"], end=user_data["end"]) - - @staticmethod - def emu_start_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - ql.emu_start(begin=user_data["start"], end=user_data["end"]) - - @staticmethod - def emu_stop_2_args(ql, user_data=None): + def emu_stop(ql, *args): ql.log.info('killer switch found, stopping') ql.emu_stop() @staticmethod - def emu_stop_4_args(ql, address=0, size=0, user_data=None): - ql.log.info('killer switch found, stopping') - ql.emu_stop() - - @staticmethod - def emu_stop_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): - ql.log.info('killer switch found, stopping') - ql.emu_stop() - - @staticmethod - def save_2_args(ql, user_data=None): - ql.save() - - @staticmethod - def save_4_args(ql, address=0, size=0, user_data=None): - ql.save() - - @staticmethod - def save_6_args(ql, address=0, size=0, access=1, value=0, user_data=None): + def save(ql, *args): ql.save() def env_arg(value): @@ -197,14 +128,17 @@ def read_file(fname: str): return content - -def log(string, color): - """ - Function to beautify terminal output - """ - if colored: +if colored: + def log(string, color): + """ + Function to beautify terminal output + """ six.print_(colored(string, color)) - else: +else: + def log(string, color): + """ + Function to beautify terminal output + """ six.print_(string) @@ -726,18 +660,8 @@ def hook(ql): hook_dictionary["end"] = end if user_data: - args.append(user_data) hook_dictionary["user_data"] = user_data - if hook_type in ['hook_code', 'hook_block']: - operation += '_4_args' - - elif hook_type in ['hook_mem_read', 'hook_mem_write']: - operation += '_6_args' - - else: - operation += '_2_args' - - getattr(ql, hook_type)(getattr(Callback_Functions, operation), *args) + getattr(ql, hook_type)(getattr(Callback_Functions, operation), *args, user_data=user_data) return hook_dictionary