空格键: 列表视图&图形视图
Esc: 回退
Tab: 汇编指令与伪代码之间切换;
x: 交叉引用;
F5: 显示C伪代码;
F2: 断点|修改地址值|提交修改;
F9;运行;
n: 重命名;
y: 修改;
双击: 转到定义处;
u: unDefined解析成未定义的内容
p: 识别为函数 ( u | p联合使用转化可识别汇编 )
c: 识别为汇编
; 所有交叉参考处都会出现,
: 注释只在该处出现
d: 识别为地址
a: 字符识别为字符串
ALT+T: 搜索文本
ALT+B: 搜索16进制 搜索opcode 如ELF文件头
CTRL+ALT+B: 打开断点列表
CTRL+F7: 运行到函数返回地址
Shift + F12:字符串窗口
F4: 运行到光标处
IDA调试模式流程:
https://blog.csdn.net/weixin_38927522/article/details/119704087
1.断点和运行
设置断点 F2
设置断点不可用 Disable breakpoint
编辑断点 Edit breakpoint
删除断点 Delete breakpoint
继续运行 F9
查看当前所有断点 Ctrl+Alt+B
2.单步调式
单步步入 F7
单步步过 F8
运行到函数的返回地址 Ctrl+F7
运行到光标处 F4
3.IDC脚本
static main(void)
{
auto fp, dexAddress, end, size;
dexAddress = 0x77607640;
size = 0x19E118;
end = dexAddress + size;
fp = fopen("D:\\classes.dex", "wb");
for ( ; dexAddress < end; dexAddress++ )
fputc(Byte(dexAddress), fp);
}
4.NOP函数或代码
NOP函数MOV R0,R0(00 00 A0 E1/00 1C)
清空指令(00 00 00 00/00 00)
函数头直接返回mov pc,lr(0E F0 A0 E1/F7 46)