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

相关推荐
ChoSeitaku9 分钟前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
娅娅梨11 分钟前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
DdddJMs__13514 分钟前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解
兵哥工控16 分钟前
MFC工控项目实例二十九主对话框调用子对话框设定参数值
c++·mfc
汤米粥17 分钟前
小皮PHP连接数据库提示could not find driver
开发语言·php
冰淇淋烤布蕾20 分钟前
EasyExcel使用
java·开发语言·excel
我爱工作&工作love我23 分钟前
1435:【例题3】曲线 一本通 代替三分
c++·算法
Hacker_Nightrain25 分钟前
网络安全CTF比赛规则
网络·安全·web安全
拾荒的小海螺26 分钟前
JAVA:探索 EasyExcel 的技术指南
java·开发语言
马剑威(威哥爱编程)1 小时前
哇喔!20种单例模式的实现与变异总结
java·开发语言·单例模式