Python源码示例:idaapi.require()

示例1
def __init__(self, path, **attrs):
        # FIXME: go through all files in plugin/ and call PLUGIN_ENTRY() on each module
        #        this should return an idaapi.plugin_t.

        # idaapi.plugin_t will contain an init, run, and term method.
        # also, are some attributes to process:
        # 'wanted_name' which is for idc.
        # 'wanted_hotkey', which should be mapped to a keypress.
        # 'comment' self-explanatory
        # 'help' self-explanatory

        # hotkey can be done by:
        # idaapi.CompileLine('static myname() { RunPythonStateMent("CallSomePython()") }')
        # idc.AddHotKey(module.wanted_hotkey, "myname")

        # idaapi.require
        pass

## ida's native api 
示例2
def api(dll, proc):
    '''
    get a callable Windows API function.

    Python>idaapi.require("idawilli.dbg")
    Python>idawilli.dbg.api("kernel32.dll", "SetLastError")(0x31337)
    0x0L
    Python>idawilli.dbg.api("kernel32.dll", "GetLastError")()
    0x31337L
    '''
    hmod = LoadLibraryA(dll)
    pfunc = GetProcAddress(hmod, proc)
    decl = get_winapi_decl(proc)
    return ida_idd.Appcall.proto(pfunc.value, decl)