def overwriteSymbolToggle(self): FrLSettings().setOverwriteSymbolName( not FrLSettings().getOverwriteSymbolName()) if FrLSettings().getOverwriteSymbolName(): fl_log("FridaLink: Symbol Overwrite enabled\n") else: fl_log("FridaLink: Symbol Overwrite disabled\n")
def loadProject(self): if self.clientSocket == None: fl_log("FridaLink: Frida not connected\n") return filePath = AskFile(0, "*.flp", "Open FridaLink project") if filePath is None: return with open(filePath, 'rb') as file: settings = pickle.load(file) hooks = pickle.load(file) repl = pickle.load(file) memory = pickle.load(file) frida = pickle.load(file) FrLSettings().restore(settings) self.deleteAllHooks() self.deleteAllReplaced() self.restoreHookData(hooks) self.restoreReplacedFuncData(repl) self.restoreMemoryData(memory) self.restoreFridaData(frida) file.close() fl_log("FridaLink: project loaded\n")
def startServer(self): FrLModules.SanityChecks() FrLModules.GetNextModuleBase() if FrLSettings().getOverwriteSymbolName(): fl_log("FridaLink: Symbol Overwrite enabled\n") else: fl_log("FridaLink: Symbol Overwrite disabled\n") if self.server is None: self.serverThread = threading.Thread(target=self.serverTask) self.serverThread.start()
def saveProject(self): filePath = AskFile(1, "*.flp", "Save FridaLink project") if filePath is None: return with open(filePath, 'wb') as file: pickle.dump(FrLSettings(), file, pickle.HIGHEST_PROTOCOL) pickle.dump(self.backupHookData(), file, pickle.HIGHEST_PROTOCOL) pickle.dump(self.backupReplacedFuncData(), file, pickle.HIGHEST_PROTOCOL) pickle.dump(self.backupMemoryData(), file, pickle.HIGHEST_PROTOCOL) pickle.dump(self.backupFridaData(), file, pickle.HIGHEST_PROTOCOL) file.close() fl_log("FridaLink: project saved\n")
def serverTask(self): try: self.server = SocketServer.ThreadingTCPServer( (FrLSettings().getHost(), FrLSettings().getPort()), MessageHandler) self.server.engine = self fl_log("FridaLink: SERVER STARTED!\n") self.serverStopped.clear() self.serverRunning = True self.server.serve_forever() self.serverRunning = False self.server.server_close() self.server = None fl_log("FridaLink: SERVER STOPPED!\n") self.serverStopped.set() except Exception, e: fl_log("FridaLink: Unable to start server!\n") self.server = None raise e
def showSettings(self): settingsDlg = FrLSettingsDlg() settingsDlg.Compile() settingsDlg.host.value = FrLSettings().getHost() settingsDlg.port.value = FrLSettings().getPort() settingsDlg.cpuctx_cols.value = FrLSettings().getCpuContextColumns() ok = settingsDlg.Execute() if ok == 1: FrLSettings().setHost(settingsDlg.host.value) FrLSettings().setPort(settingsDlg.port.value) if FrLSettings().getCpuContextColumns( ) != settingsDlg.cpuctx_cols.value: FrLSettings().setCpuContextColumns( settingsDlg.cpuctx_cols.value) self.refreshCpuViews()
def term(self): # asynchronous unload (external, UI_Hook::term) # disable logging to prevert deadlocks FrLSettings().setLogEnabled(False) if self.clientSocket is not None: self.clientSocket.shutdown(socket.SHUT_RDWR) if self.serverRunning == True: self.server.shutdown() self.closeAllDBs() self.resetHookedColors() self.resetReplacedColors() IdaPopupMenus.UnregisterMenuActions() IdaMainMenu.UnregisterMenuActions() request_refresh(0xFFFFFFFF) # IWID_ALL
def logToggle(self): if FrLSettings().getLogEnabled(): fl_log("FridaLink: Debug Log disabled\n") FrLSettings().setLogEnabled(not FrLSettings().getLogEnabled()) if FrLSettings().getLogEnabled(): fl_log("FridaLink: Debug Log enabled\n")