x64dbg的基本使用

目录

x64dbg简介

术语

打开程序

x64dbg打开界面介绍

汇编窗口

内存窗口

寄存器窗口

堆栈窗口

基本调试方法

搜索字符串

退出程序


x64dbg简介

x64dbg是软件逆向里必不可少的动态调试工具,本来考虑学习一下OD,但是考虑到OD很久之前就已经停止维护,而x64dbg则是一个开源项目,有大量的人员进行维护,很多功能都比OD更加优秀。所以建议使用x64dbg进行学习。

x64dbg官网地址:https://x64dbg.com/#start

x64dbg本身也是一个很优秀的开源项目,后期值得细细阅读其源码

本文只介绍学习初始阶段高频使用的快捷键以及功能,话不多说,正文开始!!!

术语

程序领空:程序自己代码的位置

系统领空:系统代码所处的位置

程序入口点EOP:程序在开始运行时执行的第一条指令的地址

在分析对饿时候一定要注意自己是否还在用户代码的位置

打开程序

下载过来x64dbg后,会又两个,一个是x32dbg,只能打开32位程序,一个是x64dbg,只能打开64位程序。

通过x64dbg打开程序,之后调试器就接管了进程。

方式一:附加的方式

菜单栏---文件---附加

不推荐这种方式,因为他不会从程序的最开始的位置进行执行

方式二:菜单栏---文件---打开

打开之后,就会进入程序的入口

程序的执行入口并不是对应C代码的main()函数。这里指向的是mainCRTStarup,这个的作用是为main()的执行做铺垫,比如初始化线程等等。

x64dbg打开界面介绍

汇编窗口

这里是C代码对应的反汇编代码,一般显示代码段 

简单介绍:

  • 第一列表示的是当前这条汇编指令所在的地址。每一列的地址都是依次排序的,第二行的地址是第一行 的地址再加上指令长度。两个十六进制数,代表一个字节。在第一列双击,可以看到一个箭头,你可以 以这个位置为起始地址,看到相对于这个地址的偏移。
  • 第二列是机器码,也就Opcode,这个是给计算机看的。在这个位置双击,可以下一个F2断点。
  • 第三列是汇编指令。其中。x64dbg的原理就是读取代码段的Opcode指令,将他翻译成汇编语言。在这 个位置双击可以修改汇编代码,或者按空格。
  • 第四列是注释,窗口。双击可以在当前列添加注释。

其它细节:

  • 那个蓝色标签显示的是EIP寄存器的指向,即是下一条执行指令的位置
  • 黑色表示程序的入口所在,一般指向mainSRTStartup
  • jmp指令的机器码表示通常是E9加上一个32位的相对偏移量。E9翻译为汇编表示是jmp
  • 在这个界面的最右边是可以写注释的

内存窗口

数据窗口,这里一般查看的是内存地址的内容。

这个里面存放的是数据段的数据 第一列是地址,第二列是地址里面存放的值,第三列是x64dbg的注释。存放的值默认是显示地址。 切换到十六进制的视图: 切换到字符串视图: 切换到Unicode的字符串视图: 切换到浮点窗口 数据和代码没有本质的区别,只不过一个能被执行,一个不能被执行

寄存器窗口

显示8大寄存器,指令指针寄存器,以及标志寄存器

堆栈窗口

显示一些堆栈的信息。

基本调试方法

首先我们了解一下一些基本的操作指令。

F2:设置断点。选中你想要下断点的那一行,摁下F2即可

F4:运行到光标处,点击你想要执行的那一行,摁下F4就会跳转到这里,EIP指向你想要执行的那一行,下一条的汇编的执行就是你所选中的

F9:运行程序(如果没有碰到断点,程序会一直执行到结束。

F7:单步步入。(遇到call指令,进入call函数的实现处继续执行汇编指令)

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

这里在程序入口摁下F7单步执行,鼠标放在上面会显示jmp命令的跳转位置 0x002C2520

摁下F7或者F8就会进入jmp调转之后的界面

在call命令处摁下F7会跳转进函数的具体实现

Ctrl+F9: 执行到函数返回处,用于跳出函数实现,函数已经执行完毕、

Alt+F9:执行到用户代码,用于快速跳出系统函数

Ctrl+G:输入十六进制地址,快速定位到该地址处

在内存页面或者反汇编页面摁下 CTRL + G就会弹出一个窗口,输入内存地址,就可以跳转到那里

搜索字符串

要注意模块问题

 或者菜单栏 -- 引用

摁下Enter键

会在反汇编页面跳转到

退出程序

菜单栏文件脱离即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS制图技巧总结

Part 1 制图综述 1.1 制图的目的 随着GIS在各行各业的深入应用,各信息化部门和生产单位都逐渐建立起自己的GIS的应用,同时积累了大量的地理数据。随着应用深度和广度的推进,针对数据建立专题应用越来越迫切,对行业专题制图的需…

2024拜年祝福视频AE模板31套

做短视频必备的AE模板非常好看,跨年做个视频非常漂亮,喜欢的赶紧保存吧! 链接:https://pan.quark.cn/s/fc1f3db12049

XML技术分析03

一、XMLHttpRequest 对象 XMLHttpRequest 对象用于在后台与服务器交换数据。 创建 XMLHttpRequest 对象 所有现代浏览器 (IE7、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。 通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpReq…

09.简单工厂模式与工厂方法模式

道生一,一生二,二生三,三生万物。——《道德经》 最近小米新车亮相的消息可以说引起了不小的轰动,我们在感慨SU7充满土豪气息的保时捷设计的同时,也深深的被本土品牌的野心和干劲所鼓舞。 今天我们就接着这个背景&…

uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错

背景:uniapp与Java实现的安卓端app支付宝支付,本想先在沙箱测试环境测支付,但一直提示“商家订单参数异常,请重新发起付款。”,接着报错信息就是:{ "errMsg": "requestPayment:fail [pa…

【书生大模型00--开源体系介绍】

书生大模型开源体系介绍 0 通用人工智能1 InternLM性能及模型2 从模型到应用 大模型成为目前很热的关键词,最热门的研究方向,热门的应用;ChatGPT的横空出世所引爆,快速被人们上手应用到各领域; 0 通用人工智能 相信使…

[蓝桥杯学习] 线段树

学习blibli 定义 线段树是一种特殊的平衡二叉查找树,使用线段树,可以实现数据的添加、查找和删除。 树的根结点表示了一个完整的单元区间,左右孩子的区间是将父结点的区间进行二分,左右孩子的区间之和,就是他们的根…

【机器学习】循环神经网络(四)-应用

五、应用-语音识别 5.1 语音识别问题 详述语音识别的经典方法GMMHMM框架 5.2 深度模型 详述DNN-HMM结构 循环神经网络与CTC技术结构用于语音识别问题 六、自然语言处理 RNN-LM建模方法 6.1 中文分词 6.2 词性标注 6.3 命名实体识别 详述LSTMCRF进行命名实体识别的方法 6.4 文本…

ElasticSearch 性能优化

提升写入性能 使用 bulk 接口批量写入 节省重复创建连接的网络开销通过进行基准测试来找到最佳的批处理数量 延长 refresh 的时间间隔 通过延长 refresh(刷新)的时间间隔可以降低段合并的频率,段合并十分耗费资源默认的刷新频率为1s&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于两阶段随机优化的电能量与深度调峰融合市场出清模型及定价方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到一个电力市场的建模和定价方法,采用了两阶段随机优化的策略,目标是实现电能量与深度调峰的融合。下面是对标题中各个…

百度搜索金融:构建高时效、高可用的分布式数据传输系统

作者 | 搜索技术平台研发部 导读 分布式数据传输系统是一种用于在多个计算节点之间高效传输大量数据的系统,诣在高效的解决大规模数据迁移、备份、跨地域复制等问题,其广泛应用在实时数据流传输、跨数据中心数据迁移、多媒体传输等场景,在大多…

智能合约:3分钟开发ERC20 token(2)

0.前言 上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix 智能合约(1) 这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限…

Tracert 与 Ping 程序设计与实现(2024)

1.题目描述 了解 Tracert 程序的实现原理,并调试通过。然后参考 Tracert 程序和计算机网络教材 4.4.2 节, 计算机网络 课程设计指导书 2 编写一个 Ping 程序,并能测试本局域网的所有机器是否在线,运行界面如下图所示的 QuickPing …

【docker】centos 使用 Nexus Repository 搭建私有仓库

Nexus Repository 是一种流行的软件仓库管理工具,它可以帮助您搭建私有仓库,以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repos…

毕业设计:基于机器学习xgboost lgbm adaboost 的空气质量预测pm2.5‘, ‘so2‘, ‘no2‘ 完整代码数据-可直接运行

项目详细视频讲解介绍: 基于机器学习xgboost lgbm adaboost 的空气质量预测-完整代码数据可直接运行_哔哩哔哩_bilibili 数据展示: 运行结果展示: 项目代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split fr…

《GreenPlum系列》GreenPlum详细入门教程01-GreenPlum介绍

文章目录 第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 GreenPlum:https://cn.greenplum.org/ 第一章 GreenPlum介绍 1.MPP架构介绍 MPP是Massively Parallel Processing的缩写,也就是大规模并行处…

GEE数据集——Cloud Score+ S2_HARMONIZED数据集

简介 Cloud Score 是一种用于中高分辨率光学卫星图像的质量评估(QA)处理器。Cloud Score S2_HARMONIZED数据集是由统一的哨兵-2 L1C数据集制作的,Cloud Score的输出可用于识别相对清晰的像素,并有效去除L1C(大气顶部&…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制,通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

04-微服务-Nacos

Nacos注册中心 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 1.1.认识和安装Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在…

MySQL-存储引擎

简介:存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的, (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。 我们输入 SHOW CREATE TAB…