x64dbg 安装使用教程

x64dbg的安装与配置

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

x64dbg界面介绍

1.反汇编窗口

这个位置显示的是需要分析的程序的反汇编代码。在第一个区域的最左侧例如"7712EAA3"这一列就是内存地址区域,接着"E8 07"就是汇编指令的opcode,"jmp xxxxxxxxx"这个区域就是汇编代码区,最后有一个空白的地方,我们可以在这个位置输入一些注释。

2.寄存器窗口

这里显示的是当前所调试程序的寄存器信息。

3.数据窗口

这里一般查看的是内存地址的内容。最左边是地址,接着是对应地址的十六进制数据,最右侧是十六进制对应的ASCII码。

4.堆栈窗口

显示一些堆栈的信息。

基本调试方法

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

F2:设置断点。(可以简单理解为暂停)

F4:运行到光标处

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

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

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

Ctrl+F9: 执行到函数返回处,用于跳出函数实现

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

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

搜索字符串

修改后保存成EXE

文件->补丁(ctrl+P)

修补文件

自己输入文件名加.exe后缀

命令支持

格式

命令 arg1 , arg2 , argN

寄存器

所有大小的寄存器都可以用作变量

内存读取

addr\] 读取DWORD / QWORD n:\[addr\] 从addr开始读取n个字节 seg:\[addr\] 段寄存器加偏移读取DWORD / QWORD seg可以gs,es,cs,fs,ds,ss byte:\[addr\] 读取BYTE word:\[addr\] 读取word dword:\[addr\] 读取dword qword:\[addr\] 读取qword 字节/字/双字/四字/指针(ptr) ReadByte,Byte,byte(addr):从 addr 读取一个字节,并返回该值。 ReadWord,Word,word(addr):从 addr 读取一个字(2字节),并返回该值。 ReadDword,Dword,dword(addr):从 addr 读取双字(4字节),并返回该值。 ReadQword,Qword,qword(addr):从 addr 读取四字(8字节),并返回该值(仅用于x64)。 ReadPtr,ReadPointer,ptr,Pointer,pointer(addr):从 addr 读取一个指针(4/8 字节),并返回该值。 数字 默认情况下,所有数字都解释为十六进制!如果要指定,可以x或0x作为前缀。十进制数可以通过在数字前加点号来使用.123=7B 模块数据 键入GetProcAddress,它将自动解析为函数的实际地址。要明确定义从哪个模块加载API,请使用:\[module\].dll:\[api\]或\[module\]:\[api\]。当\[module\]为空字符串时:GetProcAddress,将使用CPU中当前选择的模块。 加载的模块基地 如果您要访问加载模块的基地址,你可以写:\[module\]:0,\[module\]:base,\[module\]:imagebase或\[module\]:header RVA /文件偏移量 如果要访问模块RVA,则可以写\[module\]:0+\[rva\],也可以写\[module\]:$\[rva\]。如果要将文件偏移量转换为VA,可以使用\[module\]:#\[offset\]。例如,当\[module\]为空字符串时,将使用CPU中当前选择的模块 模块的入口点 要访问一个模块的入口点,你可以写\[module\]:entry,\[module\]:oep或\[module\]:ep。请注意,当有名称为的导出时entry,oep否则ep将返回这些地址 表达式 调试器允许使用基本表达式。只需在命令窗口中键入一个表达式,结果就会显示在控制台中。除了计算之外,它还允许使用类似C的语法快速更改变量 括号:(1+2),\[1+6\]比其他操作优先。 一元减/二进制非/逻辑非:(-1负1),\~1(二进制非1),!0(逻辑非0)。 乘法/除法:(2\*3常规乘法),2\`3(得到乘法的高分),6/3(常规除法),5%3(除法的模/余数)。 加法/减法:(1+3加法),5-2(减法)。 左/右移位/旋转:(1\<\<2向左移位,shl表示无符号,sal表示有符号),10\>\>1(向右移位,shl表示无符号,sal表示有符号),1\<\<\<2(向左旋转),1\>\>\>2(向右旋转)。 小(相等)/大(等于):4\<10,3\>6,1\<=2,6\>=7(如果真解析为1,0,如果假)。 等于/不等于:1==1,2!=6(如果为true,则解析为1;如果为false,则解析为0)。 二进制和:(12\&2常规二进制和)。 二进制异或:(2\^1常规二进制异或)。 二进制或:(2\|8常规二进制或)。 逻辑和:(0\&\&3如果为true,则解析为1;如果为false,则解析为0)。 逻辑或:(0\|\|3如果为true,则解析为1;如果为false,则解析为0)。 逻辑含义:(0-\>1如果为true,则解析为1;如果为false,则解析为0) 处理信息 peb() :获取PEB地址。 teb() :获取TEB地址。 tid() :获取当前线程ID 插件 stringsx64dbg 字符串搜索 x64dbgApiBreak API断点 xAnalyzer 分析 SharpOD x64 反调试

相关推荐
zhouziyi0701几秒前
【蓝桥杯14天冲刺课题单】Day 8
c++·算法·蓝桥杯
滴答滴答嗒嗒滴4 分钟前
Python小练习系列 Vol.12:学生信息排序(sorted + key函数)
开发语言·python
愚润求学39 分钟前
【C++】vector常用方法总结
开发语言·c++·vector
天天进步20151 小时前
Python项目-基于Flask的个人博客系统设计与实现(1)
开发语言·python·flask
安然无虞1 小时前
31天Python入门——第20天:魔法方法详解
开发语言·后端·爬虫·python
QQ__17646198241 小时前
Matlab安装tdms插件
开发语言·matlab·tdms插件
画个逗号给明天"1 小时前
C#从入门到精通(5)
开发语言·笔记·c#
赤秀1 小时前
C++模板初阶
开发语言·c++
橘猫云计算机设计2 小时前
基于JavaWeb的二手图书交易系统(源码+lw+部署文档+讲解),源码可白嫖!
java·开发语言·前端·毕业设计·php
半桔2 小时前
红黑树剖析
c语言·开发语言·数据结构·c++·后端·算法