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工具,以及其他网络安全相关书籍

相关推荐
挥剑决浮云 -13 分钟前
STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器
c语言·经验分享·stm32·单片机·嵌入式硬件·学习
工业甲酰苯胺14 分钟前
聊一聊 C#线程池 的线程动态注入
java·开发语言·c#
zfenggo16 分钟前
c/c++ 无法跳转定义
c语言·开发语言·c++
图灵猿19 分钟前
【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
c语言·c++·lua
向宇it25 分钟前
【从零开始入门unity游戏开发之——C#篇30】C#常用泛型数据结构类——list<T>列表、`List<T>` 和数组 (`T[]`) 的选择
java·开发语言·数据结构·unity·c#·游戏引擎·list
hakesashou30 分钟前
python怎么看矩阵维数
开发语言·python
daopuyun39 分钟前
GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
java·开发语言·安全
A懿轩A1 小时前
C/C++ 数据结构与算法【树和二叉树】 树和二叉树,二叉树先中后序遍历详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·二叉树·
无问社区1 小时前
无问社区-无问AI模型
人工智能·web安全·网络安全
qh0526wy1 小时前
pyqt5冻结+分页表
开发语言·python·qt