def init(self): constants.create_general_config_file() shared.BASE_URL = constants.get_data_from_config_file("server") shared.LOG = constants.get_data_from_config_file("log") auth = AuthForm() auth.Compile() auth.Execute() if shared.IS_COMMUNICATION_MANAGER_STARTED: communication_manager_window_handler = constants.get_window_handler_by_id(shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window(communication_manager_window_handler, constants.CHANGE_USER, json.dumps({"username":shared.USERNAME, "id": shared.USERID, "token": shared.USER_TOKEN})) if idc.GetIdbPath(): #You open IDA directly with a file. selector = ProjectSelector(request_project_list()) selector.Compile() selector.Execute() if shared.IS_COMMUNICATION_MANAGER_STARTED: communication_manager_window_handler = constants.get_window_handler_by_id(shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window(communication_manager_window_handler, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID})) self._live_hook = LiveHookIDP() self._live_hook.hook() self.hook() return idaapi.PLUGIN_KEEP
def init(self): self._window_handler = create_hidden_window() self._id = insert_to_registery(self._window_handler) log("Created window") shared.INTEGRATOR_WINDOW_ID = self._id shared.COMMUNICATION_MANAGER_WINDOW_ID = struct.unpack( ">I", os.urandom(4))[0] shared.start_communication_manager() time.sleep(1) shared.IS_COMMUNICATION_MANAGER_STARTED = True if shared.USERID != -1: #started. communication_manager_window_handler = constants.get_window_handler_by_id( shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window( communication_manager_window_handler, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID})) constants.send_data_to_window( communication_manager_window_handler, constants.CHANGE_USER, json.dumps({ "username": shared.USERNAME, "id": shared.USERID, "token": shared.USER_TOKEN })) return idaapi.PLUGIN_KEEP
def pass_to_manager(ev): log("Pass to manager: " + str(ev)) try: constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.SEND_DATA_TO_SERVER, ev.encode_to_json()) except Exception as e: pass
def pass_to_manager(ev): log("Pass to manager: " + str(ev)) try: communication_manager_window_handler = constants.get_window_handler_by_id( shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window(communication_manager_window_handler, constants.SEND_DATA_TO_SERVER, ev.encode_to_json()) except Exception as e: pass
def ev_oldfile(self, fname): log("START") selector = ProjectSelector(request_project_list()) selector.Compile() selector.Execute() if shared.IS_COMMUNICATION_MANAGER_STARTED: constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID, "need-to-pull": shared.MASTER_PAUSE_HOOK})) if shared.MASTER_PAUSE_HOOK: idaapi.register_action(action_manual_pull) idaapi.attach_action_to_menu("Edit/Plugins/IDAHub/Pull from server", "idahub:manual_pull",idaapi.SETMENU_APP) return ida_idp.IDP_Hooks.ev_oldfile(self, fname)
def ev_oldfile(self, fname): log("START") #in case of race condition constants.send_data_to_window( shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_PROJECT_ID, json.dumps({ "project-id": shared.PROJECT_ID, "need-to-pull": shared.MASTER_PAUSE_HOOK })) pass_to_manager(StartIDAEvent()) if not shared.MASTER_PAUSE_HOOK: shared.PAUSE_HOOK = not ida_auto.auto_is_ok() return ida_idp.IDP_Hooks.ev_oldfile(self, fname)
def init(self): if constants.create_general_config_file( ): # if the Config file didnt exist, we want to ask for a server name. server = idc.AskStr("", "Server:") constants.set_data_to_config_file("server", server) shared.BASE_URL = constants.get_data_from_config_file("server") shared.LOG = constants.get_data_from_config_file("log") self._window_handler = create_hidden_window() self._id = insert_to_registery(self._window_handler) log("Created window") shared.INTEGRATOR_WINDOW_ID = self._id shared.COMMUNICATION_MANAGER_WINDOW_ID = struct.unpack( ">I", os.urandom(4))[0] si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW subprocess.Popen([ "python", "{0}\communication_manager.py".format(idaapi.idadir("plugins")), str(shared.INTEGRATOR_WINDOW_ID), str(shared.COMMUNICATION_MANAGER_WINDOW_ID) ]) time.sleep(1) shared.IS_COMMUNICATION_MANAGER_STARTED = True if shared.USERID != -1: #started. communication_manager_window_handler = constants.get_window_handler_by_id( shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window( communication_manager_window_handler, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID})) constants.send_data_to_window( communication_manager_window_handler, constants.CHANGE_USER, json.dumps({ "username": shared.USERNAME, "id": shared.USERID, "token": shared.USER_TOKEN })) self.hook() for widget in qApp.topLevelWidgets(): if isinstance(widget, QMainWindow): self._window = widget break return idaapi.PLUGIN_KEEP
def term(self): try: constants.send_data_to_window( shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.KILL_COMMUNICATION_MANAGER_MESSAGE_ID, None) time.sleep(1) except Exception as e: pass if self.idb_hook: self.idb_hook.unhook() if self.ui_hook: self.ui_hook.unhook() if self.idb_hook: self.idp_hook.unhook() self.unhook()
def term(self): try: communication_manager_window_handler = constants.get_window_handler_by_id( shared.COMMUNICATION_MANAGER_WINDOW_ID) constants.send_data_to_window( communication_manager_window_handler, constants.KILL_COMMUNICATION_MANAGER_MESSAGE_ID, None) time.sleep(1) except Exception as e: pass if self.idb_hook: self.idb_hook.unhook() if self.ui_hook: self.ui_hook.unhook() if self.idb_hook: self.idp_hook.unhook()
def init(self): constants.create_general_config_file() shared.BASE_URL = constants.get_data_from_config_file("server") shared.LOG = constants.get_data_from_config_file("log") auth = AuthForm() auth.Compile() auth.Execute() if shared.IS_COMMUNICATION_MANAGER_STARTED: constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_USER, json.dumps({"username":shared.USERNAME, "id": shared.USERID, "token": shared.USER_TOKEN})) if idc.GetIdbPath(): #You open IDA directly with a file. selector = ProjectSelector(request_project_list()) selector.Compile() selector.Execute() if shared.IS_COMMUNICATION_MANAGER_STARTED: constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID, "need-to-pull": shared.MASTER_PAUSE_HOOK})) constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_BASE_URL, json.dumps({"url": shared.BASE_URL})) if not shared.MASTER_PAUSE_HOOK: if not shared.PAUSE_HOOK: pass_to_manager(StartIDAEvent()) self._live_hook = LiveHookIDP() self._live_hook.hook() self.hook() return idaapi.PLUGIN_KEEP
def init(self): msg("[IReal]: Init done\n") msg("[IReal]: Waiting for auto analysing\n") constants.create_general_config_file() constants.create_config_file() shared.BASE_URL = constants.get_data_from_config_file("server") shared.LOG = constants.get_data_from_config_file("log") if idc.GetIdbPath() and ida_auto.auto_is_ok(): log("Start") if not shared.MASTER_PAUSE_HOOK: shared.PAUSE_HOOK = False else: shared.PAUSE_HOOK = True if shared.USERID != -1 and shared.IS_COMMUNICATION_MANAGER_STARTED: #started. if not shared.PAUSE_HOOK: pass_to_manager(StartIDAEvent()) constants.send_data_to_window( shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_PROJECT_ID, json.dumps({ "project-id": shared.PROJECT_ID, "need-to-pull": shared.MASTER_PAUSE_HOOK })) constants.send_data_to_window( shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_USER, json.dumps({ "username": shared.USERNAME, "id": shared.USERID, "token": shared.USER_TOKEN })) constants.send_data_to_window( shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_BASE_URL, json.dumps({"url": shared.BASE_URL})) self.idb_hook = LiveHook() self.ui_hook = ClosingHook() self.idp_hook = LiveHookIDP() self.view_hook = CursorChangeHook() self.idb_hook.hook() self.ui_hook.hook() self.idp_hook.hook() self.view_hook.hook() self.hook() return idaapi.PLUGIN_KEEP
def ready_to_run(self): if shared.MASTER_PAUSE_HOOK: idaapi.register_action(action_manual_pull) constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.CHANGE_PROJECT_ID, json.dumps({"project-id": shared.PROJECT_ID, "need-to-pull": shared.MASTER_PAUSE_HOOK})) idaapi.attach_action_to_menu("Edit/Plugins/IDAHub/Pull from server", "idahub:manual_pull",idaapi.SETMENU_APP)
def activate(self,ctx): constants.send_data_to_window(shared.COMMUNICATION_MANAGER_WINDOW_ID, constants.MANUAL_PULL_ID, json.dumps({}))