本文整理匯總了Python中idaapi.MFF_WRITE屬性的典型用法代碼示例。如果您正苦於以下問題:Python idaapi.MFF_WRITE屬性的具體用法?Python idaapi.MFF_WRITE怎麽用?Python idaapi.MFF_WRITE使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類idaapi
的用法示例。
在下文中一共展示了idaapi.MFF_WRITE屬性的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: safe_generator
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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
#-------------------------------------------------------------------------------
示例2: __getattribute__
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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
示例3: idawrite
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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
示例4: idawrite
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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
示例5: execute_write
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
def execute_write(function):
return execute_sync(function, idaapi.MFF_WRITE)
示例6: reset_block_colors
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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)
示例7: set_block_color
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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)
示例8: execute_paint
# 需要導入模塊: import idaapi [as 別名]
# 或者: from idaapi import MFF_WRITE [as 別名]
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
#------------------------------------------------------------------------------