IDA使用指南

一、IDA快捷键

在这里插入图片描述

二、类型

在这里插入图片描述

三、逆向常用操作

1.查找交叉引用(Xrefs)

在字符串所在行按 Ctrl + X,查看哪些代码引用了这个字符串。通常弹窗会调用类似 MessageBox、DialogBoxParam、CreateDialog 等 API。

2.搜索API调用

在 IDA 中:

Alt + T 打开文本搜索
搜索 "MessageBox"

3.使用资源查看器

在 IDA 中按 Shift + F7 查看资源段

查找对话框资源,可能弹窗是作为资源定义的

4.在 IDA 的调试模式下进行堆栈回溯的方法:

在 IDA 调试器中:

点击 暂停按钮(或按 F2 在当前位置设断点,然后暂停)

或者使用 Debugger → Pause process

查看调用堆栈

方法一:调用堆栈窗口

菜单:Debugger → Debugger windows → Call stack(或按 Ctrl+Alt+K)

这里会显示完整的函数调用链

方法二:堆栈视图

在 IDA 视图区域选择 Stack view 选项卡

5.在 IDA 中转到指定地址

按 G 键(跳转到地址)

输入 14000A557

5.如何在IDA中添加注释

1. 常规注释(可重复)
快捷键: :

位置: 在想要添加注释的反汇编行按 :

特点: 同一地址的重复注释会覆盖前一个

2. 可重复注释
快捷键: ;

位置: 在反汇编行按 ;

特点: 可以在同一地址添加多个注释

3. 函数注释
位置: 在函数开始处

方法: 点击函数名,然后按 :;

用途: 描述函数的功能和参数

4. 变量重命名
快捷键: N

位置: 选中变量或地址后按 N

用途: 给变量、函数取有意义的名称

5. 添加书签
快捷键: Ctrl+M

用途: 标记重要位置方便快速跳转

6. 结构体定义
快捷键: Insert → Struct

用途: 定义数据结构,提高反汇编可读性

6. IDA 中的箭头颜色含义

绿色箭头
含义: 条件跳转的 "跳转" 路径

对应: 当条件为真时会执行的路径

在你的代码中: js loc_14000A949 的绿色箭头指向许可证检查失败的处理代码

红色箭头
含义: 条件跳转的 "不跳转" 路径

对应: 当条件为假时会执行的路径(继续顺序执行)

在你的代码中: js loc_14000A949 的红色箭头指向许可证检查成功后的正常执行路径

蓝色箭头
含义: 无条件跳转(如 jmp 指令)

对应: 总是会执行的跳转

7.调试断点的快捷键

基本断点操作
设置/取消断点
F2 - 在当前位置设置/取消断点

Shift+F2 - 打开断点列表窗口

运行控制
F9 - 开始调试/继续运行

F8 - 单步跳过 (Step Over)

F7 - 单步进入 (Step Into)

Ctrl+F7 - 单步跳出 (Step Out)

F4 - 运行到光标处 (Run to cursor)

高级调试快捷键
断点管理
Ctrl+F2 - 终止调试

Alt+F2 - 删除所有断点

视图切换
F6 - 切换反汇编视图

Ctrl+Alt+M - 打开内存映射

Ctrl+Alt+L - 打开日志窗口

寄存器与内存
Ctrl+Alt+R - 寄存器窗口

Ctrl+Alt+S - 堆栈窗口

Ctrl+Alt+K - 调用堆栈

8.查看内存内容的几种方法

1. 在反汇编窗口中查看
快捷键: 在 RAX 值上 右键 → Jump to address

或者按 G 键,输入 2AF0180

这会直接跳转到该内存地址查看内容

2. 在内存窗口中查看
快捷键: Ctrl+Alt+M 打开内存映射窗口

在地址栏输入 2AF0180

可以看到该地址开始的内存数据(十六进制+ASCII)

3. 在堆栈窗口中查看
快捷键: Ctrl+Alt+S 打开堆栈窗口

如果这是堆栈地址,会显示对应的变量值

4. 使用数据查看器
在反汇编窗口中,在地址上 右键 → Open data view

或者按 Ctrl+D 切换到数据视图

9.查看断点列表

方法1: 查看断点列表
快捷键: Ctrl+Alt+B
或者:

菜单: Debugger → Breakpoints → Breakpoint list

这会显示所有设置的断点,包括:

地址

模块

状态(启用/禁用)

类型

方法2: 在反汇编视图中查看
已启用断点: 红色高亮显示
已禁用断点: 灰色显示
在反汇编窗口中,有断点的行会显示特殊的颜色标记。

方法3: 使用导航功能
跳到下一个断点: Ctrl+Alt+N
跳到上一个断点: Ctrl+Alt+P
这会在各个断点之间循环跳转。

方法4: 搜索特定函数的断点
如果你记得在哪个函数设置了断点:

跳到该函数(按 G 输入函数名)

在函数内查看红色高亮的行

方法5: 使用断点窗口
菜单: View → Open subviews → Breakpoints

10.编辑汇编指令

菜单: Edit → Patch program → Assemble...

输入地址(如 000000014000B04F)

输入新指令(如 jmp 000000014000B06B)

确认

批量NOP替换

步骤:
选中从 000000014000B04A 到 000000014000B065 的所有指令

右键 → Patch program → Change byte...

全部填充为 90(nop 的机器码)

11.如何保存补丁

方法1: 生成补丁文件(推荐)
步骤:
菜单: File → Produce file → Create EXE file

或者: File → Produce file → Create backport file

选择保存位置和文件名

IDA 会生成包含所有修改的新文件
直接导出补丁后的 EXE

点击菜单:
Edit → Patch program → Apply patches to input file

选择目标路径(默认覆盖原文件,不建议)。

建议保存为一个新文件,例如:

my_program_patched.exe


IDA 会自动将修改的字节写入到该新文件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值