Learn Learn IdaPython
安装idapython sdk
- 在idalib中根据readme按照要求配置
- 创建虚拟环境,pip install path/to/idalib/python
- 将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)
编写时遇到的小问题
- 这里是将地址0x555555A050传给了X14,而不是将qword_555555A050中的值传给X14应该使用
idc.get_operand_value(CurIp, 1)而不是idc.get_qword(idc.get_operand_value(CurIp, 1))

- 如果不知道哪里出了问题,可以调试,之后暂停,看暂停在哪个函数里面,就代表这个函数调用的地方出错了.

浙公网安备 33010602011771号