IDA pro使用笔记


ida pro 6.6版本 idapython 2.7.2

1. 函数

idautils.Functions列举出已知的函数,返回一个list对象,每个item是一个函数的首地址,
idc.GetFunctionName(func) 获取函数名称

1.1 获取函数的名称

import idautils
for func in idautils.Functions():
    print hex(func),idc.GetFunctionName(func)

在这里插入图片描述

1.2 获取函数起始地址

import idautils
for func in idautils.Functions():
    #print hex(func),idc.GetFunctionName(func)
    func=idaapi.get_func(func)
    start = func.startEA
    end =func.endEA
    print('start: 0x%x end:0x%x' %(start,end))

在这里插入图片描述

1.3 获取函数的反汇编代码

import idautils
for func in idautils.Functions():
    print hex(func),idc.GetFunctionName(func)
    func=idaapi.get_func(func)
    start = func.startEA
    end =func.endEA
    #print('start: 0x%x end:0x%x' %(start,end))
    cur_addr = start
    while cur_addr <= end: 
        print hex(cur_addr), idc.GetDisasm(cur_addr) #获取反汇编指令
        cur_addr = idc.NextHead(cur_addr, end) #读取下一条指令

在这里插入图片描述

1.4 判断函数是否为库函数

判断函数是否为库函数时,可以在静态分析时省略

idc.GetFunctionFlags(func)
返回函数类型, 有:FUNC_NORET、FUNC_FAR、FUNC_LIB、FUNC_STATIC、FUNC_FRAME、FUNC_USERFAR、FUNC_HIDDEN、FUNC_THUNK、FUNC_BOTTOMBP等
九种返回值类型
  • FUNC_NORET ~~~~ 表示没有返回值的函数,值为0x1
  • FUNC_FAR ~~~~ 很少见到,值为0x2
  • FUNC_LIB ~~~~ 链接库函数,在做分析的时候经常可以忽略,值为0x4
  • FUNC_STATIC ~~~~ 静态函数,值为0x8
  • FUNC_FRAME ~~~~ 表示函数使用了结构指针ebp,值为0x10
  • FUNC_USERFAR ~~~~ 很少见到,值为0x20
  • FUNC_HIDDEN ~~~~ 隐藏函数,需要展开才能看见(不太懂),值为0x40
  • FUNC_THUNK ~~~~ 跳转到其他函数的函数,一般只有一个jmp指令,值为0x80
  • FUNC_BOTTOMBP ~~~~ 与FUNC_FRAME类似,该标志用于跟踪帧指针。它将识别帧指针等于堆栈指针的函数,值为0x100
#查找某种共操作数类型的指令
for func in idautils.Functions():
    flags=idc.GetFunctionFlags(func)
    #if flags & FUNC_LIB or flags & FUNC_THUNK:
        #continue
    dism_addr=list(idautils.FuncItems(func))
    for line in dism_addr:
        if idc.GetOpType(line,0) == o_phrase://o_reg  o_mem 
            print("0x%x %s"%(line,idc.GetDisasm(line)))

IDAPython批量处理脚本

https://blog.csdn.net/qq_35056292/article/details/89421793

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iDA Pro 是一款非常强大的反汇编工具,它可以帮助用户对二进制程序进行反汇编、分析和修改。下面是使用 iDA Pro 的一些基本步骤和技巧。 1. 安装 iDA Pro 首先,你需要从 iDA Pro 官网(https://www.hex-rays.com/products/ida/)下载并安装该软件。iDA Pro 有免费版和付费版,免费版的功能相对较弱,付费版则功能更加完善。安装完成后,你可以打开 iDA Pro,开始使用它的功能。 2. 打开二进制文件 在 iDA Pro 中,你需要打开一个二进制文件,才能进行反汇编和分析。你可以通过菜单栏的“File”选项来打开一个二进制文件。iDA Pro 支持多种不同的文件格式,例如 ELF、PE、Mach-O 等。选择正确的文件格式很重要,否则会导致反汇编失败。 3. 分析程序结构 在打开一个二进制文件后,iDA Pro 会自动对程序进行反汇编,并展示反汇编结果。你可以在左侧的“Functions”窗口中查看程序中的函数列表,或者在右侧的“Disassembly”窗口中查看反汇编代码。iDA Pro 还支持对程序的控制流进行分析,你可以通过菜单栏的“View”选项来查看程序的控制流图。 4. 查找漏洞 通过分析程序结构,你可以尝试查找程序中的漏洞。例如,你可以查看程序中的函数调用和内存访问,寻找可能存在的缓冲区溢出、格式化字符串漏洞等。iDA Pro 还支持对程序中的字符串和常量进行搜索,你可以利用这个功能来查找可能存在的敏感信息、密码等。 5. 编辑程序 在查找漏洞后,你可能需要修改程序来修复漏洞或者实现其他目的。iDA Pro 支持对程序进行编辑,你可以在右侧的“Disassembly”窗口中直接修改反汇编代码,或者使用 iDA Pro 提供的高级编辑功能来修改程序。注意,修改程序可能会导致程序的崩溃或者其他不可预测的结果,所以一定要谨慎操作。 以上是使用 iDA Pro 的一些基本步骤和技巧。iDA Pro 是一款非常强大的工具,可以帮助你分析和修改二进制程序,但需要一定的反汇编和程序分析经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值