def get_resolve(): # il2cpp::vm::InternalCalls::Resolve resolve = idc.LocByName('_ZN6il2cpp2vm13InternalCalls7ResolveEPKc') addr = idc.RfirstB(resolve) while addr != idc.BADADDR: name = idc.Name(addr) if name == '__ZN6il2cpp2vm13InternalCalls7ResolveEPKc': return addr addr = idc.RnextB(resolve, addr) return idc.BADADDR
def analyze_invoke_unityengine(): print('analyze_invoke_unityengine') resolve = get_resolve() print(' %X: %s' % (resolve, idc.Name(resolve))) if resolve != idc.BADADDR: return addr = idc.RfirstB(resolve) while addr != idc.BADADDR: analyze_invoke(addr) addr = idc.RnextB(resolve, addr)
def analyze_invoke_library(): print('analyze_invoke_library') resolve = idc.LocByName('._ZN6il2cpp2vm14PlatformInvoke7ResolveERK16PInvokeArguments') print(' %X: %s' % (resolve, idc.Name(resolve))) if resolve == idc.BADADDR: return addr = idc.RfirstB(resolve) while addr != idc.BADADDR: analyze_invoke2(addr) addr = idc.RnextB(resolve, addr)