Ejemplo n.º 1
0
 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")
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
 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")
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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()
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
 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")