【快捷键】-Tab/F5 伪代码/反汇编切换-Ctrl F 表格窗口搜索功能-N 重命名符号字符串表Strings window-Shift F2 打开字符串表反汇编窗口IDA View-空格 切换图形/文本模式-Ctrl 鼠标滚轮 调整反汇编图形模式大小-G 地址跳转窗口-X 查看交叉引用-CTRLALTX 全局查看交叉引用-H 数据转换-U/C 代码和数据相互转换-M 修改常量为枚举值伪代码窗口Pseudocode-H 10进制和16进制转换-R 切换对应的字符Y键修改函数类型,包括函数返回值类型【字符类型】db 1字节 byte/char/uint8/int8dw 2字节 word/short/uint16/int16dd 4字节 dword/int/uintdq 8字节 qword/int64快捷键d转换字节类型【增加类型】在LocalTypes中添加类型调试F2加断点F7单步进入函数F8单步不进入函数CtrlF7执行到当前函数返回后位置F4执行到光标为止停下来F9运行直到断点SetIP(CtrlN)强制代码从光标位置处开始执行动态调试时修改指定内存的值idc.patch_dword(0x000000B039FAFDC0, 8)--------------------------------------------------------------IDA Python----------------------------------------------------------------------1.寄存器操作idc.get_reg_value(rax)idaapi.set_reg_val(rax,1234)2.调试内存操作idc.read_dbg_byte(addr)idc.read_dbg_memory(addr,size)idc.read_dbg_dword(addr)idc.read_dbg_qword(addr)idc.patch_dbg_byte(addr,val)3.调试内存读写封装def patch_dbg_mem(addr,data):for i in range(len(data)):idc.patch_dbg_byte(addri,data[i])def read_dbg_mem(addr,size):dd[]for i in range(size):dd.append(idc.read_dbg_byte(addri))return bytes(dd)4.本地内存操作(会修改idb数据库)idc.get_qword(addr)idc.patch_qword(addr,val)idc.patch_dword(addr,val)idc.patch_word(addr,val)idc.patch_byte(addr,val)idc.get_db_byte(addr)idc.get_bytes(addr,size)5.反汇编操作GetDisasm(addr) #获取反汇编文本idc.next_head(ea) #获取吓一跳指令地址6.交叉引用分析for ref in idautils.XrefsTo(ea):print(hex(ref.frm))7.杂项常用接口idc.add_bpt(0x409437) 添加断点idaapi.get_imagebase() 获取基地址idc.create_insn(addr) #c,MakeCodeida_funcs.add_func(addr) #p, create functionida_bytes.create_strlit(addr) #创建字符串A键效果8.函数遍历for func in idautils.Function():print(px%x, %s % (func, idc.get_func_name(func))9.基本块遍历fn 目标函数地址f_blocks idaapi.FlowChar(idaapi.get_func(fn),flagsidaapi.FC_FREDS)for block in f_blocksprint hex(block.start_ea)10.基本块的前驱for pred in block.preds():print hex(pred.start_ea)11.基本块的后继for succ in block.succs():print hex(succ.start_ea)12.指令遍历for ins in idautils.FuncItems(0x401000):print(hex(ins))13.条件断点编写0.编写断点函数脚本,本在IDA底部导入该函数1.设置普通断点,在call rand之后设置(此时能获取rand的返回值)2.[右键]-【Edit Bread ...】3.点击[Condition]-[...]4.输出bp(),并选择语言Pythondef bp():rax idc.get_reg_value(rax)return rax16949------------------------------------------------------------------------------------------------------------------------------------------------------LazyIDAHappyIDAKeyPatchBinDiffMicrocode展示插件https://github.com/gaasedelen/lucid