Learn Learn IdaPython

安装idapython sdk

  1. 在idalib中根据readme按照要求配置
  2. 创建虚拟环境,pip install path/to/idalib/python
  3. 将idapro路径下的python复制到虚拟环境对应项目目录中

IdaPython函数积累

  • print_insn_mnem(ea): 返回指定地址(ea)处指令的助记符
  • generate_disasm_line(ea, flags): 返回指定地址(ea)处指令的完整反汇编文本。
  • print_operand(ea, n): 返回指定地址(ea)处指令的第n个操作数的名称(n 从 0 开始)。
  • get_operand_value(ea, n):返回指定地址(ea)处指令的第n个操作数的如下内容
    @return: value
        operand is an immediate value  => immediate value
        operand has a displacement     => displacement
        operand is a direct memory ref => memory address
        operand is a register          => register number
        operand is a register phrase   => phrase number
        otherwise                      => -1
    

get_operand_type(ea, n): 返回指定地址ea处第n个操作数的类型

  • ida operand type: https://cpp.docs.hex-rays.com/group__o__.html
    get_qword(ea): 以小端序获得地址ea的qword
    ida_dbg.get_reg_val("RegName"): 返回当先状态下对应reg的值
    ida_dbg.wait_for_next_event(ida_dbg.WFNE_SUSP, 5000)

编写时遇到的小问题

  1. 这里是将地址0x555555A050传给了X14,而不是将qword_555555A050中的值传给X14应该使用
    idc.get_operand_value(CurIp, 1)而不是idc.get_qword(idc.get_operand_value(CurIp, 1))
    img
  2. 如果不知道哪里出了问题,可以调试,之后暂停,看暂停在哪个函数里面,就代表这个函数调用的地方出错了.
posted @ 2025-07-26 20:58  Un1corn  阅读(17)  评论(0)    收藏  举报