下载安装 x64dbg
下载完成后,直接解压运行 x96dbg.exe。运行 x32dbg/x64dbg 出现如下界面表示运行成功:
x64dbg 界面介绍
- 反汇编窗口
第一列 | 第二列 | 第三列 | 第四列 |
---|---|---|---|
内存地址 | 汇编指令的机器码 | 汇编指令 | 注释 |
内存地址:内存是被划分成多个内存单元来存储数据的。每个内存单元有 1byte 的空间来存储数据。为了读取内存单元的数据,所以使用内存地址来给内存单元编号,这样就能读取到相对应的内存单元中的数据。
机器码:汇编也是编程,只不过是最底层的编程。因为 CPU 只能识别 0 和 1组成的机器码,所以汇编指令需要转换成机器码 CPU 才能识别。
汇编指令:就是汇编编程的指令,指令这块的学习,可以边逆向边学习。
注释:x64dbg 可以对程序进行智能分析,并设置相应的注释。如:字符串、汇编指令等。也可自定注释内容,在逆向过程中非常有用。
- 寄存器窗口
这里显示的是当前所调试程序的寄存器信息。
第一块 | 第二块 | 第三块 | 第四块 |
---|---|---|---|
常用寄存器 | EIP寄存器 | 标志寄存器 | 调试寄存器 |
常用寄存器:EAX~EDX(一般寄存器)、EBP和ESP(堆栈寄存器)、ESI/EDI(源目标索引字符串)
EIP 寄存器:用来存储 CPU 要读取指令的地址。这里就表示程序将要读取执行 00401000 地址的指令。
标志寄存器:标志寄存器又称程序状态字,主要是反应处理器的状态和逻辑计算结果。在逆向过程中通常用在程序的跳转和算法中。
调试寄存器:对于 Dr0-Dr3 的四个调试寄存器,他们的作用是存放中断的地址;对于 Dr4,Dr5 这两个寄存器我们一般不使用他们,保留;对于 Dr6,Dr7 这两个寄存器的作用是用来记录你在 Dr0-Dr3 中下断的地址的属性。
- 数据窗口
这里一般查看的是内存地址的内容。最左边是地址,接着是对应地址的十六进制数据,最右侧是十六进制对应的 ASCII 码。
- 堆栈窗口
显示一些堆栈的信息。
常用快捷键
快捷键 | 功能描述 |
---|---|
F2 | 下断点(指定断点地址) |
F3 | 加载一个可执行程序,进行调试分析 |
F4 | 程序执行到光标处 |
F5 | 缩小、还原当前窗口 |
F7 | 单步步入 |
F8 | 单步步过 |
F9 | 直接运行程序,遇到断点处,程序暂停 |
Ctrl+F2 | 重新运行程序到起始处,一般用于重新调试程序 |
Ctrl+F9 | 执行到函数返回处,用于跳出函数实现 |
Alt+F9 | 执行到用户代码处,用于快速跳出系统函数 |
Ctrl+G | 输入十六进制地址,快速定位到该地址处 |
Alt+b | 打开断点窗口(用户修改当前所设置的断点) |
把程序拖到 x64dbg 中可以看到如下图所示的界面。这个时候我们需要注意的是它并不是在要调试程序的模块内,这个时候我们直接 F9 运行。
当显示下图的界面才真正进入我们的程序内部。这个时候我们就可以开始分析啦。
reference
- 本文标题:认识 x64dbg
- 本文作者:9unk
- 创建时间:2020-12-03 11:00:07
- 本文链接:https://9unkk.github.io/2020/12/03/ren-shi-x64dbg/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!