x64dbg(64位调试器) v21.11.24

x64dbg(64位调试器) v21.11.24

26.76MB/ 编程开发

软件简介

x64dbg是一款优化好用的反汇编程序,兼容32位和64位操作系统,软件与我们经常使用的OllyDbg调试工具类似,软件可以有效地加载相应的文件进行调试,支持dll、exe、ocx等文件,除此之外,软件还具备集成的、可调试的、类似于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、内置的十六进制编辑器

24、查找内存模式

软件亮点

1、积极发展

正在不断的积极发展。

2、GPLv3

我们同时提供了可执行文件和源代码。随意作出贡献。

3、自定义

C ++编写的插件,改变颜色和调整你的喜好。

4、X64/X32支持

可以调试x64和X32的应用程序。只有一个接口。

5、建立在开源库

使用的Qt,TitanEngine,BeaEngine,青蟹,杨松,LZ4和XEDParse。

6、操作简单,功能强大的开发

使用C ++和Qt4的快速添加新的功能。

7、脚本化

有一个集成的,可调试,ASM-like脚本语言。

8、社区意识

有许多功能的倒车社会思想或创建的。

9、伸缩

编写插件来添加脚本命令或集成的工具。

使用教程

1、安装winsnap之后,点击注册属性可以看到软件版本为“未注册版”,如下图所示:

x64dbg2020 绿色中文版

2、点击“x64dbg.exe”运行x64dbg程序,因为是64位程序,也不知道怎么查壳(实际上是没有加壳的),就直接把主程序载入即可:

x64dbg2020 绿色中文版

3、载入以后,先运行一下“断点”模块(那个向右的箭头 → ),它会断下来,也可以理解为它会断在系统领空,我们先把它原来的所有断点都给删除掉,如下图:

x64dbg2020 绿色中文版

4、我们的思路是先搜索字符串看看,找到关键的注册字符。但是在搜索之前,因为它默认断在系统的dll文件,所以我们要先选择我们要调试的进程名称,要不然搜索出来的不是我们所需的信息

x64dbg2020 绿色中文版

5、选择以后,又会回到CPU反汇编窗口,这里才是真正的主程序,我们再来搜索

x64dbg2020 绿色中文版

6、找到了很多字符串了,根据我们的经验,一般注册的关键词诸如reg之类的,我们看到,这里有一个regname、regcode,也就是注册名、注册码。我们选择这个双击一下回到反汇编窗口

x64dbg2020 绿色中文版

7、同时通过分析得出,它是把注册信息保存到注册表里面,向上滑动鼠标,可以看到关键的代码:一个CALL下面紧接着是一个判断,通过al的值决定是否跳转

x64dbg2020 绿色中文版

8、我们在这个CALL这一行下断:

x64dbg2020 绿色中文版

9、然后运行一下,程序运行了,我们随便输入注册信息,程序断在我们下好的断点:

x64dbg2020 绿色中文版

10、通过我们单步调试,如果al的值是0的时候,跳转会实现,跳向注册失败。那如果al=1呢?也就不会跳,会注册成功

x64dbg2020 绿色中文版

11、我们重新载入一次,再次运行一次,和开始一样,会断在我们下好的断点这里,现在我们的目标已经很明确了,要把al的值强行赋值为1

x64dbg2020 绿色中文版

12、进入call以后,我们开始修改了:

x64dbg2020 绿色中文版

13、和od一样,在第一行双击即可修改:

x64dbg2020 绿色中文版

14、修改以后,保存:

x64dbg2020 绿色中文版

15、点pathes按钮,出现:

x64dbg2020 绿色中文版

16、至此就破解完成了

x64dbg2020 绿色中文版
x64dbg2020 绿色中文版
x64dbg2020 绿色中文版

17、注册信息保存位置:

x64dbg2020 绿色中文版

18、破解后:

x64dbg2020 绿色中文版

操作步骤

首先运行x64dbg后,发现是全英文版的,但是它的操作界面和32位的OD还是很相似的,有一些操作也是相同的,比如F2下断等。所以对一般用过OD的人来说,上手应该也是很快的。不多说了,开始吧。

1.因为是64位程序,也不知道怎么查壳(实际上是没有加壳的),就直接把主程序载入x64_dbg。

2.载入以后,先运行一下(那个向右的箭头 → ),它会断下来,也可以理解为它会断在系统领空,我们先把它原来的所有断点都给删除掉。

3.我的思路是先搜索字符串看看,找到关键的注册字符。但是在搜索之前,因为它默认断在系统的dll文件,所以我们要先选择我们要调试的进程名称,要不然搜索出来的不是我们所需的信息。

4.选择以后,又会回到CPU反汇编窗口,这里才是真正的主程序,我们再来搜索。

5.找到了很多字符串了,根据我们的经验,一般注册的关键词诸如reg之类的,我们看到,这里有一个regname,regcode,也就是注册名、注册码。我们选择这个双击一下回到反汇编窗口。6.同时通过分析得出,它是把注册信息保存到注册表里面,向上滑动鼠标,可以看到关键的代码:一个CALL下面紧接着是一个判断,通过al的值决定是否跳转。

7.我们在这个CALL这一行下断点。

8.然后运行一下,程序运行了,我们随便输入注册信息,程序断在我们下好的断点。

9.通过我们单步调试,如果al的值是0的时候,跳转会实现,跳向注册失败。那如果al=1呢?也就不会跳,会注册成功。

10.我们重新载入一次,再次运行一次,和开始一样,会断在我们下好的断点这里,现在我们的目标已经很明确了,要把al的值强行赋值为1。

11.进入call以后,我们开始修改了。

12.和od一样,在第一行双击即可修改。

13.修改以后,保存。

14.点pathes按钮。

使用帮助

一、输入

使用软件时,您通常可以使用各种内容作为输入。

1、命令

命令具有以下格式:

命令 arg1 , arg2 , argN

2、变量

变量可选地以a开头,$并且只能存储一个DWORD(x64上的QWORD)。

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、模块数据

DLL导出:

键入GetProcAddress并自动将其解析为函数的实际地址。要明确定义从哪个模块加载API,请使用:[module].dll:[api]或[module]:[api]。以类似的方式你可以解决序数,尝试[module]:[ordinal]。另一个宏允许您获取模块的加载基础。例如,当[module]为空字符串时:GetProcAddress,将使用当前在CPU中选择的模块。

加载模块库:

如果您要访问加载模块的基础上,你可以写:[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将返回这些名称的地址。

相关专题
猜你喜欢