def _commit_funcs_thread(self): """ Commit all the named functions from this idb to the server. This is an IDA read thread safe function. """ self._print('Commiting functions...') # Set up a connection to remote db: frame_endpoint = TCPFrameClient(self._remote) fdb = DBEndpoint(frame_endpoint,self._db_name) for func_addr in Functions(): logger.debug('Iterating over func_addr: {}'.format(func_addr)) if not self._is_func_commit_candidate(func_addr): continue func_name = GetFunctionName(func_addr) func_comment = strip_comment_fcatalog(get_func_comment(func_addr)) func_data = get_func_data(func_addr) # If we had problems reading the function data, we skip it. if func_data is None: self._print('!> Skipping {}'.format(func_name)) continue fdb.add_function(func_name,func_comment,func_data) self._print(func_name) # Close db: fdb.close() self._print('Done commiting functions.')
def _batch_similars(self,fdb,l_func_addr): """ Given a list of function addresses, request similars for each of those functions. Then wait for all the responses, and return a list of tuples of the form: (func_addr,similars) This function is IDA read thread safe. """ # Send requests for similars for every function in l_func_addr list: for func_addr in l_func_addr: func_data = get_func_data(func_addr) fdb.request_similars(func_data,1) # Collect responses from remote server: lres = [] for func_addr in l_func_addr: similars = fdb.response_similars() lres.append((func_addr,similars)) return lres