安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  系统工具  >  优化设置 > x64dbg(程序调试工具) v2019.11.13 绿色中文版
x64dbg(程序调试工具)

x64dbg(程序调试工具)

 v2019.11.13 绿色中文版
  • 软件大小:31.88 MB
  • 更新日期:2020-03-05 15:22
  • 软件语言:简体中文
  • 软件类别:优化设置
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:31.88 MB

软件介绍 人气软件 下载地址

为您推荐: 系统工具

  x64dbg是一款非常实用且功能强劲的开源64/32位调试器工具,此工具主要是通过QT平台编写,应用于调试x64和X32的应用程序领域;整个用户界面非清晰,功能模块分布整洁;内置了所有用户会使用到的功能,它为用户提供了DBG模块,此模块主要是针对调节器而设定,可以对调试器中你的数据进行整理,同时为GUI提供需要的数据信息;而内的GUI则是建立子QT之上,并且可以为用户提供数据交互;程序系统为用户提供了可执行文件和源代码,可以随时为您服务,用户在使用此工具时可以编写脚本,它具有集成的,可调试的,类似于ASM的脚本语言;需要的用户可以下载体验

x64dbg(程序调试工具)

软件功能

  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、用户可以点击本网站提供的下载路径下载得到对应的程序安装包

x64dbg(程序调试工具)

  2、只需要使用解压功能将压缩包打开,双击主程序即可进行安装,弹出程序安装界面

x64dbg(程序调试工具)

  3、只需要点击与您电脑系统一样的处理位即可,可以选择32位和64位

x64dbg(程序调试工具)

使用说明

  表达功能您可以在表达式中使用函数。调试器定义了以下功能:

  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代替。

下载地址