C/C++逆向:x96dbg(x64dbg/x86dbg)的使用

这篇文章主要来说一下x96dbg(x64/x86)的基本使用,这里还是使用上篇文章中的简单程序用来作为本篇文章的实例,因为上篇文章再生成程序时选用的解决方案平台为x86所以生成的程序则需要我们使用x32dbg来进行分析。

这边与IDA一样,我们可以将程序拖到图标上。

此时x32dbg就会自动针对该程序进行加载,接下去我们就可以进行调试了。在加载完成后可以看到调试器下方显示已暂停,已到达系统断点!。

这个系统断点通常指的是调试器在程序启动时自动设置的第一个断点,也称为Entry Point断点。系统断点发生在程序的入口点(Entry Point)之前,通常是在加载器(loader)将程序从磁盘加载到内存之后,操作系统会在这里插入一个INT 3指令,目的是让调试器能够在程序执行之前有机会设置它自己的断点和初始化调试环境。这个断点可以理解为程序正式开始执行前的一个暂停点,允许调试器做一些初始设置。在调试器中看到系统断点时,程序还没有真正开始执行,它只是在操作系统初始化和程序准备运行的阶段。你可以选择继续执行程序,跳过系统断点,进入程序的实际入口点,从而开始分析程序的实际代码。

功能组件

1.反汇编窗口

x64dbg的反汇编窗口是一个非常重要的工具,它用于查看和分析程序的汇编代码,且显示了当前调试中的程序的机器代码和对应的汇编指令,这些指令是程序运行时CPU执行的低级操作。

在第一个区域的最左侧这一列就是内存地址区域,接着中间部分就是汇编指令的opcode,右侧这一列就是汇编代码区,最后有一个空白的地方,我们可以在这个位置输入一些注释;x96dbg添加注释的方式与IDA一致,选择要添加注释的位置,接着敲;对注释文本进行编辑,选择OK即可。

2.寄存器窗口

x64dbg 的寄存器窗口是一个用于查看和修改 CPU 寄存器内容的窗口。在调试过程中,寄存器窗口对于理解程序的执行状态和控制程序的执行流程至关重要。

寄存器窗口显示当前 CPU 寄存器的内容,包括通用寄存器(如 RAX, RBX, RCX, RDX 等),指令指针寄存器(RIP),栈指针寄存器(RSP),以及基址指针寄存器(RBP)等。在 x64dbg 中调试 64 位程序时,会显示 64 位寄存器;如果调试 32 位程序,则显示 32 位寄存器。

3.内存窗口

x64dbg 的内存窗口用于查看和操作目标程序的内存内容。

内存窗口显示的是程序当前内存的十六进制内容和其对应的 ASCII 文本表示。每一行通常显示一个内存地址的起始位置,以及接下来的若干字节数据。

4.堆栈窗口

堆栈窗口用于查看和分析程序在运行过程中使用的堆栈数据。堆栈是程序执行过程中临时存储数据(如函数参数、返回地址、局部变量等)的区域。

基本调试方法
①F2:设置断点
②F4:运行到光标处
③F7:单步步入(遇到call指令,进入call函数的实现处继续执行汇编指令)

按下F7后则跳入ntdll.773C034函数的实现处继续执行汇编指令

④F8:单步步过(遇到call指令,执行call函数,之后接着执行call指令的下一条指令)

按下F8后则接着执行call指令的下一条指令,即不进入函数中进行命令执行。

⑤F9:运行程序(如果没有碰到断点,程序会一直执行到结束)
⑥Ctrl+F9: 执行到函数返回处,用于跳出函数实现
⑦Alt+F9:执行到用户代码,用于快速跳出系统函数
⑧Ctrl+G:输入十六进制地址,快速定位到该地址处

搜索字符串

复制代码
右击->搜索->所有模块(当前区域/当前模块)->字符串

【注】关注GZH回复"x96"获取x64dbg/x86dbg工具,以及其他网络安全相关书籍

相关推荐
ebiobiz19 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
朝朝辞暮i19 小时前
C++ 第 26 课:对象、指针与 ->
java·开发语言·c++
2601_9628857219 小时前
如何用 Python 做股价历史分位选股?(筛出处于历史低位的股票)
开发语言·python
小师兄吃牛肉19 小时前
C语言指针进阶全解析
java·c语言·算法
殷色玫瑰20 小时前
C++入门基础复习:从命名空间到引用与nullptr,一篇重新捡回C++基础
java·开发语言·c++
(Charon)20 小时前
【C++面试】手写线程池:任务队列、工作线程与优雅退出
开发语言·c++
言乐620 小时前
Python概括后端原理
开发语言·python·django·virtualenv·pygame
无名猿20 小时前
拷贝构造与拷贝赋值:调用时机、深浅拷贝与复制消除
c++·内存管理·现代c++·踩坑记录
@大迁世界20 小时前
JEV RAG:更高效的 RAG 系统解决方案?
开发语言·rust
Seraphina3621 小时前
DVWA(SQL注入-low,medium,XSS反射-low)
前端·数据库·笔记·sql·网络安全·web·xss