idapython-init

来源:互联网 发布:cms监控软件远程设置 编辑:程序博客网 时间:2024/05/17 23:58

通过idapython脚本对动态调试apk的脚本下断点

基本思路:就是通过获取手机linker中的callfunction的偏移来进行下断点。

# -*- coding:utf-8 -*-import idaapiimport idautilsimport idcfrom keystone import *from idc import *# 查找模块,返回基地址def FindModule(module_name):    for m in idautils.Modules():        if module_name.lower() in m.name.lower():            base = m.base            size = m.size            print 'module_name is %s' % module_name            print hex(base)            #idaapi.analyze_area(base, base + size)            return base;    return None;# 查找linker中的init函数调用def find_linker_addr(base):# .text:00002748 01 F0 54 FF                 BL              sub_45F4# .text:0000274C# .text:0000274C             loc_274C                                ; CODE XREF: sub_2720+16j# .text:0000274C A0 47                       BLX             R4# .text:0000274E 0E 4A                       LDR             R2, =(dword_10678 - 0x2754)    pattern = '01 F0 54 FF A0 47 0E 4A'    for x in range(0, 5):        addr = idc.FindBinary(base, SEARCH_DOWN | SEARCH_NEXT, pattern);        if addr != idc.BADADDR:            print hex(addr + 4), idc.GetDisasm(addr + 4)            addr = addr + 4            return addr;# 内存中获取模块基地址base = FindModule('linker');# idb文件中获取基地址#base = MinEA();addr = find_linker_addr(base);print "linker init addr = " + hex(addr);# 下断点AddBpt(addr);

他就可以断在init这个断点

这里写图片描述

原创粉丝点击