安装教程(含激活方法)
(软件为绿色版本,无需安装破解)1.在本作下载好数据包后进行解压在“x64dbg”文件夹中运行“初始设置.bat”,输入“1”创建桌面快捷方式
2.任何回到你的电脑桌面运行软件快捷方式即可进入软件,开始免费使用
此版说明
1.为帮助用户更好地了解软件反汇编后的CPU汇编指令信息,对汇编指令的“助记符摘要”全部进行了汉化。由于本次更新幅度较大,更改的内容较多,所以对“助记符帮助”进行了部分汉化。汇编指令的汉化参考了“清华大学出版社”出版的《汇编语言程序设计教程》(第4版) 中术语,因此可能与其他软件的汉化术语略有不同。2.对Scylla插件等进行了全面汉化。
3.对帮助文档的主要内容进行了汉化,并按照最新版进行了修订、翻译。对界面字体以及布局重新进行了设置。将默认调用在线英文帮助更改为调用本地的中文帮助文件。
4.对软件官方中文版的汉化错误及不一致处进行了修订,并与帮助文档的关键词进行了统一。
5.对中文版界面字体进行了重新设置,使其更为美观。
6.集成中文字符串搜索插件、反反调试插件SharpOD_x64_v0.6b,除此之外无其它修改!
新增或已支持功能
1.开源2.直观和熟悉的新用户界面
3.类似C的表达式解析器
4.DLL和EXE文件的全功能调试(TitanEngine)
5.IDA般的侧边栏与跳跃箭头
6.IDA样的指令令牌高亮(高亮寄存器等)
7.存储器映射
8.符号观
9.线程视图
10.内容敏感的注册查看
11.完全可定制的配色方案
12.动态识别模块和串
13.进口重构集成(青蟹)
14.快反汇编(BeaEngine)
15.用户数据库(JSON)征求意见,标签,书签等。
16.不断增长的API插件的支持
17.可扩展的,可调试的脚本语言自动化
18.多数据类型的内存转储
19.基本调试符号(PDB)的支持
20、动态堆栈视图
21.内置汇编(XEDParse)
22.查看你的补丁,并将它们保存到磁盘
23.内置的十六进制编辑器
24.查找内存模式
功能优点
1.积极发展软件正在不断的积极发展。
2.GPLv3
我们同时提供了可执行文件和源代码。随意作出贡献。
3.自定义
C ++编写的插件,改变颜色和调整你的喜好。
5.X64/X32支持
可以调试x64和X32的应用程序。只有一个接口。
6.建立在开源库
使用的Qt,TitanEngine,BeaEngine,青蟹,杨松,LZ4和XEDParse。
7.操作简单,功能强大的开发
使用C ++和Qt4的快速添加新的功能。
8.脚本化
拥有一个集成的,可调试,ASM-like脚本语言。
9.社区意识
有许多功能的倒车社会思想或创建的。
10.伸缩
编写插件来添加脚本命令或集成的工具。
使用方法
一、输入1.命令
命令具有以下格式:命令 arg1 , arg2 , argN
2.变量
变量可选地以a开头,$并且只能存储一个DWORD。
3.注册
所有寄存器(所有大小)都可以用作变量。
备注:大多数寄存器的变量名称与它们的名称相同,但以下寄存器除外:x87控制字标志:该寄存器的标志名称如下:_x87CW_UM,除了在体系结构中的寄存器,x64dbg提供以下寄存器:CAX,CBX,CCX,CDX,CSP,CBP,CSI,CDI,CIP。这些寄存器映射到32位平台上的32位寄存器,以及64位平台上的64位寄存器。例如,CIP是EIP在32位平台上,并且是RIP在64位平台上。此功能旨在支持与体系结构无关的代码。
4.记忆位置
您可以使用以下表达式之一从/向内存位置读取/写入:
[addr]从中读取DWORD / QWORD addr。
n:[addr]从中读取n个字节addr。
seg:[addr]从一个段读取一个DWORD / QWORD addr。
byte:[addr]从中读取BYTE addr。
word:[addr]读一个WORD addr。
dword:[addr]从中读取一个DWORD addr。
qword:[addr]从addr(仅限x64)读取QWORD 。
备注:n 是要读取的字节数,在x32上可以是小于4且在指定时在x64上小于8,否则会出错。seg可以gs,es,cs,fs,ds,ss。只有fs并gs产生影响。
5.标志
调试标志(解释为整数)可用作输入。标志以a为前缀,_后跟标志名称。有效的标志是:_cf,_pf,_af,_zf,_sf,_tf,_if,_df,_of,_rf,_vm,_ac,_vif,_vip和_id。
6.数字
所有数字默认都被解释为十六进制!如果你想确定,你可以x或0x作为前缀。十进制数可以使用前缀来点数量:.123=7B。
7.表达式
有关更多信息,请参阅表达式部分。
8.标签/符号
用户定义的标签和符号是有效的表达式(它们解析为所述标签/符号的地址)。
9.模块数据
(1)DLL导出:键入GetProcAddress并自动将其解析为函数的实际地址。要明确定义从哪个模块加载API,请使用:[module].dll:[api]或[module]:[api]。以类似的方式你可以解决序数,尝试[module]:[ordinal]。另一个宏许您获取模块的加载基础。例如,当[module]为空字符串时:GetProcAddress,将使用当前在CPU中选择的模块。
()2加载模块库:如果您要访问加载模块的基础上,你可以写:[module]:0,[module]:base,[module]:imagebase或[module]:header。
10.RVA /文件偏移
如果您想访问模块RVA,您可以编写[module]:0+[rva],也可以编写[module]:$[rva]。如果要将文件偏移量转换为VA,则可以使用[module]:#[offset]。例如,当[module]为空字符串时:0,将使用当前在CPU中选择的模块。
11.模块入口点
要访问一个模块的入口点,你可以写[module]:entry,[module]:oep或[module]:ep。请注意,当存在带有名称的导出时entry,oep或者ep将返回这些名称的地址。
备注:您也可以使用a来代替分隔符,.如果您需要查询模块信息,[module]:imagebase或者[module]:entry建议您使用?as分隔符:[module]?entry。在?没有分隔符后检查命名的出口,所以当有一个叫做出口将仍然工作entry的模块中。
12.最后的话
除非另有说明,否则参数输入始终可以使用上述任何形式。
二、表达式
调试器允许使用基本表达式。只需在命令窗口中键入表达式,结果将显示在控制台中。除了计算之外,它还允许使用类似C语法的快速变量更改。
1.输入
基本输入(数字/变量)可用作表达式中的常量,有关详细信息,请参阅输入。
2.运营商
您可以在表达式中使用以下运算符。它们按以下顺序处理:
括号/括号:(1+2),[1+6]优先于其它操作。
unary minus / binary not / logical not :( -1negative 1),~1(binary not of 1),!0(logical not of 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(如果为真,则解析为1,如果为假,则解析为0)。
二进制和 :( 12&2常规二进制和)。
二进制xor :( 2^1常规二进制xor)。
二进制或 :( 2|8常规二进制或)。
logical和 :( 0&&3如果为true则解析为1,如果为false则解析为0)。
logical或 :( 0||3如果为true则解析为1,如果为false则解析为0)。
逻辑含义 :( 0->1如果为真则解析为1,如果为假则解析为0)。
3.快速分配
使用类似C的语法可以轻松完成更改内存,变量,寄存器或标志:
a?=b哪里?可以是任何非逻辑运算符。a可以是任何寄存器,标志,变量或内存位置。b可以是任何被认可为表达的东西。
a++/a--哪里a可以是任何寄存器,标志,变量或内存位置。
三、表达函数
您可以在表达式中使用函数。调试器定义了以下函数:
1.GUI交互
disasm.sel()/ dis.sel():在反汇编视图中获取所选地址。
dump.sel() :在转储视图中获取所选地址。
stack.sel() :在堆栈视图中获取所选地址。
2.来源
src.disp(addr):获取addr相对于最后一个源代码行的位移。
src.line(addr):获取源代码行数addr。
3.模块
mod.party(addr):参加模块派对addr。0是用户模块,1是系统模块。
mod.base(addr):获取模块的基址addr。
mod.size(addr):获取模块的大小addr。
mod.hash(addr):获取模块的哈希值addr。
mod.entry(addr):获取模块的入口地址addr。
mod.system(addr):如果模块位于addr系统模块,则为True 。没有模块是用户模块。
mod.user(addr):如果模块位于addr用户模块,则为True 。没有模块是用户模块。
mod.main():返回主模块(debuggee)的基础。如果这是一个DLL,它将返回,0直到加载。
mod.rva(addr):获得RVA addr。如果addr不在模块内,它将返回0。
mod.offset(addr):获取文件偏移量addr。如果addr不在模块内,它将返回0。
4.处理信息
peb() :获取PEB地址。
teb() :获取TEB地址。
tid() :获取当前的线程ID。
5.一般目的
bswap(value):字节交换value。
ternary(condition, val1, val2):如果条件非零,则返回val1,否则返回val2。
GetTickCount() :tick计数x64dbg。
6.记忆
mem.valid(addr):如果addr是有效的内存地址,则为True 。
mem.base(addr):返回内存页面的基数addr(可以根据您的内存映射模式更改)。
mem.size(addr):返回内存页面的大小addr(可以根据内存映射模式而改变)。
mem.iscode(addr):如果addr是可执行的页面,则为True 。
mem.decodepointer(ptr):相当于调用DecodePointerAPI ptr,仅适用于Vista +。
7.反汇编
dis.len(addr):获取指令的长度addr。
dis.iscond(addr):如果指令at addr是条件分支,则为True 。
dis.isbranch(addr):如果指令at addr是分支(jcc / call),则为True 。
dis.isret(addr):如果指令addr是a ,则为真ret。
dis.iscall(addr):如果指令addr是a ,则为真call。
dis.ismem(addr):如果指令at addr有内存操作数,则为True 。
dis.isnop(addr):如果指令at addr等于NOP ,则为真。
dis.isunusual(addr):如果指令处于addr异常状态,则为真。
dis.branchdest(addr):指令的分支目的地addr(如果按Enter键,它会跟随什么)。
dis.branchexec(addr):如果分支处于addr执行状态,则为True 。
dis.imm(addr):指令的立即值addr。
dis.brtrue(addr):指令的分支目的地addr。
dis.brfalse(addr):如果指令at addr是条件分支,则为下一条指令的地址。
dis.next(addr):来自的下一条指令的地址addr。
dis.prev(addr):上一条指令的地址addr。
8.跟踪记录
tr.enabled(addr):如果启用了跟踪记录,则为True addr。
tr.hitcount(addr):跟踪记录上的命中数addr。
tr.runtraceenabled() :如果启用了运行跟踪,则为True。
9.字节/字/双字/四字/ PTR
ReadByte,Byte,byte(addr):从中读取一个字节addr并返回该值。
ReadWord,Word,word(addr):从中读取一个字(2个字节)addr并返回该值。
ReadDword,Dword,dword(addr):从中读取一个双字(4个字节)addr并返回该值。
ReadQword,Qword,qword(addr):从中读取一个qword(8个字节)addr并返回该值(仅在x64上可用)。
ReadPtr,ReadPointer,ptr,Pointer,pointer(addr):从中读取指针(4/8字节)addr并返回值。
10.功能
func.start():函数的开始addr是零的一部分,否则为零。
func.end():函数结束addr是其中一部分,否则为零。
11.参考资料
ref.count() :当前参考视图中的条目数。
ref.addr(index):获取参考地址index。失败归零。
12.参数
这假设返回地址在堆栈上(例如,您在函数内)。
arg.get(index):获取index(从零开始)的参数。
arg.set(index, value):将参数设置为index(从零开始)为value。
13.插件
插件可以注册自己的表达式函数。
x64dbg 2021历史版本下载
重要提示解压密码:zdfans