Python idaapi.MFF_WRITE Examples
The following are 8
code examples of idaapi.MFF_WRITE().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
idaapi
, or try the search function
.
Example #1
Source File: first.py From FIRST-plugin-ida with GNU General Public License v2.0 | 6 votes |
def safe_generator(iterator): # Make the sentinel value something that isn't likely to be returned # by an API call (and isn't a fixed string that could be inserted into # a program to break FIRST maliciously) sentinel = '[1st] Sentinel %d' % (random.randint(0, 65535)) holder = [sentinel] # need a holder, because 'global' sucks def trampoline(): try: holder[0] = next(iterator) except StopIteration: holder[0] = sentinel return 1 while True: # See notes above regarding why we use MFF_WRITE here idaapi.execute_sync(trampoline, idaapi.MFF_WRITE) if holder[0] == sentinel: return yield holder[0] # Main Plug-in Form Class #-------------------------------------------------------------------------------
Example #2
Source File: first.py From FIRST-plugin-ida with GNU General Public License v2.0 | 5 votes |
def __getattribute__(self, name): default = '[1st] default' if (idaapi.IDA_SDK_VERSION >= 700) and (name in IDAWrapper.mapping): name = IDAWrapper.mapping[name] val = getattr(idaapi, name, default) if val == default: val = getattr(idautils, name, default) if val == default: val = getattr(idc, name, default) if val == default: msg = 'Unable to find {}'.format(name) idaapi.execute_ui_requests((FIRSTUI.Requests.Print(msg),)) return if hasattr(val, '__call__'): def call(*args, **kwargs): holder = [None] # need a holder, because 'global' sucks def trampoline(): holder[0] = val(*args, **kwargs) return 1 # Execute the request using MFF_WRITE, which should be safe for # any possible request at the expense of speed. In my testing, # though, it wasn't noticably slower than MFF_FAST. If this # is observed to impact performance, consider creating a list # that maps API calls to the most appropriate flag. idaapi.execute_sync(trampoline, idaapi.MFF_WRITE) return holder[0] return call else: return val
Example #3
Source File: ida_debugger.py From IDAngr with BSD 2-Clause "Simplified" License | 5 votes |
def idawrite(f): @functools.wraps(f) def wrapper(*args, **kwargs): ff = functools.partial(f, *args, **kwargs) return idaapi.execute_sync(ff, idaapi.MFF_WRITE) return wrapper
Example #4
Source File: idasync.py From fcatalog_client with GNU General Public License v3.0 | 5 votes |
def idawrite(f): """ decorator for marking a function as modifying the IDB. schedules a request to be made in the main IDA loop to avoid IDB corruption. """ @functools.wraps(f) def wrapper(*args,**kwargs): ff = functools.partial(f,*args,**kwargs) ff.__name__ = f.__name__ return sync_wrapper(ff,idaapi.MFF_WRITE) return wrapper
Example #5
Source File: ida_api.py From lighthouse with MIT License | 5 votes |
def execute_write(function): return execute_sync(function, idaapi.MFF_WRITE)
Example #6
Source File: helpers.py From DROP-IDA-plugin with GNU General Public License v3.0 | 5 votes |
def reset_block_colors(f): def fun(): cbs = sark.codeblocks(start=f.startEA, end=f.endEA) for cb in cbs: cb.color = 0xFFFFFF idaapi.execute_sync(fun, idaapi.MFF_WRITE)
Example #7
Source File: helpers.py From DROP-IDA-plugin with GNU General Public License v3.0 | 5 votes |
def set_block_color(addr, color): def fun(addr, color): cb = sark.CodeBlock(addr) if cb: cb.color = color idaapi.execute_sync(partial(fun, addr, color), idaapi.MFF_WRITE)
Example #8
Source File: ida_painter.py From lighthouse with MIT License | 4 votes |
def execute_paint(function): """ A function decorator to safely paint the IDA database from any thread. """ @functools.wraps(function) def wrapper(*args, **kwargs): # # the first argument passed to this decorator will be the # IDAPainter class instance # ida_painter = args[0] # # we wrap up the remaining args (and paint function) into a single # packaged up callable object (a functools.partial) # ff = functools.partial(function, *args, **kwargs) # # if we are using a 'bugged' downlevel version of IDA, package another # callable to 'synchronize' a database write. This callable will get # passed to the main thread and executed through the Qt event loop. # # the execute_sync should technically happy in-line, avoiding the # possibility of deadlocks or aborts as described above. # if idaapi.IDA_SDK_VERSION < 710: fff = functools.partial(idaapi.execute_sync, ff, idaapi.MFF_WRITE) ida_painter._signal.mainthread.emit(fff) return idaapi.BADADDR # # in IDA 7.1, the MFF_NOWAIT bug is definitely fixed, so we can just # use it to schedule our paint action ... as designed. # return idaapi.execute_sync(ff, idaapi.MFF_NOWAIT | idaapi.MFF_WRITE) return wrapper #------------------------------------------------------------------------------ # IDA Painter #------------------------------------------------------------------------------