x64dbg(程序调试工具)
v2019.11.13 绿色中文版- 软件大小:31.88 MB
- 更新日期:2020-03-05 15:22
- 软件语言:简体中文
- 软件类别:优化设置
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:
软件介绍 人气软件 下载地址
x64dbg是一款非常实用且功能强劲的开源64/32位调试器工具,此工具主要是通过QT平台编写,应用于调试x64和X32的应用程序领域;整个用户界面非清晰,功能模块分布整洁;内置了所有用户会使用到的功能,它为用户提供了DBG模块,此模块主要是针对调节器而设定,可以对调试器中你的数据进行整理,同时为GUI提供需要的数据信息;而内的GUI则是建立子QT之上,并且可以为用户提供数据交互;程序系统为用户提供了可执行文件和源代码,可以随时为您服务,用户在使用此工具时可以编写脚本,它具有集成的,可调试的,类似于ASM的脚本语言;需要的用户可以下载体验
软件功能
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、内置的十六进制编辑器
软件特色
1、查找内存模式
2、积极发展
3、x64_dbg正在不断的积极发展
4、GPLv3
5、我们同时提供了可执行文件和源代码。随意作出贡献
6、自定义
7、C ++编写的插件,改变颜色和调整你的喜好
8、X64/X32支持
9、x64_dbg可以调试x64和X32的应用程序。只有一个接口
10、建立在开源库
11、x64_dbg使用的Qt,TitanEngine,BeaEngine,青蟹,杨松,LZ4和XEDParse
12、操作简单,功能强大的开发
13、x64_dbg使用C ++和Qt4的快速添加新的功能
14、脚本化
15、x64_dbg有一个集成的,可调试,ASM-like脚本语言
16、社区意识
17、x64_dbg有许多功能的倒车社会思想或创建的
18、伸缩
19、编写插件来添加脚本命令或集成的工具
安装步骤
1、用户可以点击本网站提供的下载路径下载得到对应的程序安装包
2、只需要使用解压功能将压缩包打开,双击主程序即可进行安装,弹出程序安装界面
3、只需要点击与您电脑系统一样的处理位即可,可以选择32位和64位
使用说明
表达功能您可以在表达式中使用函数。调试器定义了以下功能:
GUI交互disasm.sel()/ dis.sel():在反汇编视图中获取选定的地址。
dump.sel() :在转储视图中获取选定的地址。
stack.sel() :在堆栈视图中获取选定的地址。
来源src.disp(addr):获取addr相对于最后一条源线的位移。
src.line(addr):获取的源行号addr。
模块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):如果at的模块addr是系统模块,则为true 。没有模块是用户模块。
mod.user(addr):如果at的模块addr是用户模块,则为true 。没有模块是用户模块。
mod.main():返回主模块(调试)的基础。如果这是一个DLL,它将返回0直到加载。
mod.rva(addr):获得的RVA addr。如果addr不在模块内部,它将返回0。
mod.offset(addr):获取的文件偏移量addr。如果addr不在模块内部,它将返回0。
mod.isexport(addr):如果addr是从模块导出的函数,则为true 。
处理信息peb() :获取PEB地址。
teb() :获取TEB地址。
tid() :获取当前线程ID。
通用bswap(value):字节交换value。
ternary(condition, val1, val2):如果condition不为零,则返回val1,否则返回val2。
GetTickCount() :x64dbg的滴答计数。
内存mem.valid(addr):如果addr是有效的内存地址,则为True 。
mem.base(addr):返回的内存页面的基础addr(可以根据您的内存映射模式而改变)。
mem.size(addr):返回的内存页面大小addr(可以根据您的内存映射模式而改变)。
mem.iscode(addr):如果addr页面是可执行的,则为true 。
mem.decodepointer(ptr):等效于在DecodePointer上调用API ptr,仅在Vista +上有效。
拆卸dis.len(addr):在获取指令的长度addr。
dis.iscond(addr):如果at处的指令addr是条件分支,则为true 。
dis.isbranch(addr):如果at处的指令addr是分支(jcc /调用),则为true 。
dis.isret(addr):如果at的指令为,addr则为true ret。
dis.iscall(addr):如果at的指令为,addr则为true call。
dis.ismem(addr):如果处的指令addr具有存储操作数,则为true 。
dis.isnop(addr):如果at的指令addr等效于NOP ,则为true 。
dis.isunusual(addr):如果at的指令addr不正常,则为true 。
dis.branchdest(addr):指令的跳转目的地位于addr(如果在其上按Enter,将显示以下内容)。
dis.branchexec(addr):如果addr要执行分支,则为true 。
dis.imm(addr):处指令的立即值addr。
dis.brtrue(addr):指令的分支目的地在addr。
dis.brfalse(addr):如果下一条指令addr是条件分支,则下一条指令的地址。
dis.next(addr):来自的下一条指令的地址addr。
dis.prev(addr):来自的上一条指令的地址addr。
dis.iscallsystem(addr):如果at的指令addr进入系统模块,则为true 。
跟踪记录tr.enabled(addr):如果在启用了跟踪记录,则为true addr。
tr.hitcount(addr):在上的跟踪记录的命中数addr。
tr.runtraceenabled() :如果启用了运行跟踪,则为True。
字节/字/双字/四字/ 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并返回值。
功能func.start():该功能的开始addr是的一部分,否则为零。
func.end():函数的结尾addr是的一部分,否则为零。
参考ref.count() :当前参考视图中的条目数。
ref.addr(index):在处获取参考的地址index。零故障。
参数假定返回地址在堆栈上(例如,您在函数内部)。
arg.get(index):从index(从零开始)获取参数。
arg.set(index, value):将index(从零开始)的参数设置为value。
异常这是一组函数,用于获取有关最后一个异常的信息。它们可用于异常断点以构建更高级的条件。
ex.firstchance() :最后一个异常是否是第一次机会异常。
ex.addr() :最后一个异常地址。
ex.code() :最后一个异常代码。
ex.flags() :最后一个异常标志。
ex.infocount() :上一次异常信息计数(参数数量)。
ex.info(index) :最后一个异常信息,如果索引超出范围则为零。
变量该程序支持变量。变量分为三种:
USER:用户使用var命令创建的变量。这些变量没有访问限制。
SYSTEM:系统创建的变量,可以读取和写入,但不能删除。
READONLY:系统创建的变量,可以读取,但不能写入或删除。
保留变量有一些保留的变量:
$res/ $result:一般结果变量。
$resN/ $resultN:其他可选结果变量(N = 1-4)。
$pid:调试的可执行文件的进程ID。
$hp/ $hProcess:调试的可执行句柄。
$lastalloc:alloc命令的最后结果。
$breakpointcondition :控制条件断点命令中的暂停行为。
$breakpointcounter :断点的命中计数器,在评估条件断点的条件之前设置。
$breakpointlogcondition:条件断点的日志条件。它不能用于控制日志记录行为。
条件断点
操作概述遇到断点时,x64dbg将执行以下操作:
如果断点是异常断点,则将系统变量$breakpointexceptionaddress设置为异常地址;否则,将系统变量设置为异常地址。
增加命中计数器 ;
将系统变量设置$breakpointcounter为命中计数器的值;
如果设置了中断条件,则对表达式求值(默认为1);
如果设置了快速恢复,并且中断条件评估为0:
恢复调试对象的执行(跳过后续步骤)。这也将跳过执行插件回调和GUI更新。
如果设置了日志条件,则对表达式求值(默认为1);
如果设置了命令条件,则对表达式求值(默认为break condition);
如果中断条件评估为1(或除“ 0”以外的任何值):
打印标准日志消息;(如果将断点设置为silent,则禁止使用标准日志消息。)
执行插件回调。
如果设置了日志文本并将日志条件评估为1(或除“ 0”以外的任何值):
格式化并打印日志文本(请参阅字符串格式)。
如果设置了命令文本,并且将命令条件评估为1:
将系统变量$breakpointcondition设置为中断条件 ;
将系统变量$breakpointlogcondition设置为log条件;
在命令文本中执行命令 ;
该断点条件将设置的值$breakpointcondition。因此,如果您在脚本中修改此系统变量,则可以控制调试对象是否会中断。
如果中断条件评估为1(或除“ 0”以外的任何值):
中断调试对象并等待用户恢复。
点击计数器命中计数器记录已达到断点的次数。即使在此断点上启用了快速恢复,它也会无条件地增加。可以在断点视图中查看它,并使用ResetBreakpointHitCount进行重置。
记录可以使用x64dbg格式化日志,以记录程序的当前状态。有关如何格式化日志字符串,请参阅格式化。
注意事项您可以使用GUI设置条件断点,方法是先设置软件断点(键F2),然后右键单击指令,然后从上下文菜单中选择“编辑断点”命令。根据需要填写条件表达式和/或其他信息,然后确认并关闭对话框。
您不应该run在breakpoint命令中使用可以更改调试对象运行状态的命令(例如),因为在此处使用这些命令时不稳定。您可以使用break condition,command condition或$breakpointcondition代替。
如果您不知道条件将在哪里变为真,请尝试使用条件跟踪!
例子有条件的断点,永不中断
破损条件:0
仅当EAX和ECX都等于1时才中断的条件断点
破损条件:EAX==1 && ECX==1
仅当EAX是有效地址时才会中断的条件断点
破损条件:mem.valid(EAX)
一个条件断点,在第三个命中时中断
破坏条件:$breakpointcounter==3或($breakpointcounter%3)==0
一个条件断点,仅在线程1C0执行时才会中断
有条件跟踪
操作概述当执行跟踪步骤时,x64dbg将执行以下操作:
增加跟踪计数器 ;
将系统变量设置$tracecounter为跟踪计数器的值;
如果设置了中断条件,则对表达式求值(默认为0);
执行插件回调(允许插件更改中断条件);
如果设置了日志条件,则对表达式求值(默认为1);
如果设置了命令条件,则对表达式求值(默认为break condition);
如果设置了开关条件,则对表达式求值(默认为0)
如果设置了日志文本,并且日志条件评估为1:
格式化并打印日志文本(请参阅字符串格式)。要将日志重定向到文件,请使用TraceSetLogFile。
如果设置了命令文本,并且将命令条件评估为1:
将系统变量$tracecondition设置为中断条件 ;
将系统变量$tracelogcondition设置为log条件;
将系统变量$traceswitchcondition设置为切换条件;
在命令文本中执行命令 ;
该断点条件将设置的值$tracecondition。因此,如果您在脚本中修改此系统变量,则可以控制调试对象是否会中断。
的开关状态将被设置为的值$traceswitchcondition。因此,如果您在脚本中修改此系统变量,则可以控制是否切换了步骤类型。
如果中断条件评估为1:
打印标准日志消息;
中断调试对象并等待用户恢复。
如果开关条件评估为1:
切换(反转)步骤类型。如果要进行跟踪,它将切换为out(反之亦然)。例如,这允许您不跟踪具有条件的系统模块调用或不跟踪某些调用。mod.party(dis.branchdest(cip)) == 1
记录可以使用x64dbg格式化日志,以记录程序的当前状态。有关如何格式化日志字符串,请参阅格式化。如果您正在寻找记录的地址和所有已追溯指令的反汇编,可以使用。要将日志重定向到文件,请使用TraceSetLogFile。{p:cip} {i:cip}
跟踪记录如果使用基于跟踪记录的跟踪选项之一,则中断条件的初始评估包括您指定的跟踪记录跟踪的类型。正常中断条件可用于在满足跟踪记录条件之前中断。如果要在条件中包括跟踪记录以进行完全控制,则可以使用表达式函数。
注意事项您可以通过“ 调试”菜单中的“跟踪直到条件” /“跟踪进入直到条件”命令来开始条件跟踪。
您不应该run在breakpoint命令中使用可以更改调试对象运行状态的命令(例如),因为在此处使用这些命令时不稳定。您可以使用break condition,command condition或$tracecondition代替。
人气软件
-
系统清理优化工具 Glary Utilities Pro 17.9 MB
/简体中文 -
Windows10版本一键转换 0.75 MB
/简体中文 -
Lenovo Vantage(多功能联想电脑系统优化与管理套件) 175.85 MB
/英文 -
ExitLag(网络连接与服务器连接优化器) 16.85 MB
/英文 -
系统服务一键通 0.08 MB
/简体中文 -
AVG TuneUp 2019(系统优化软件) 58.6 MB
/简体中文 -
Ashampoo WinOptimizer 17.9 MB
/简体中文 -
LG True Color Pro(多功能显示屏色彩校准工具) 118.85 MB
/英文 -
ASUS Fan Xpert(华硕风扇转速调节工具) 156.85 MB
/英文 -
优化清理工具 Wise Care 365 Pro 11.4 MB
/简体中文