首页
论坛
课程
招聘
[翻译]巧用 x64dbg (Make better use of x64dbg)
2019-8-22 22:31 6226

[翻译]巧用 x64dbg (Make better use of x64dbg)

2019-8-22 22:31
6226

巧用 x64dbg (Make better use of x64dbg)

原作者: torusrxxx
原文: https://x64dbg.com/blog/2017/04/20/use-x64dbg-better.html

 

作为 x64dbg 的主要开发者,我向 x64dbg 添加了许多功能。其中一些功能是显而易见的,但是有一些功能不那么明显,却值得一提。x64dbg 提供许多功能,有些功能您可能以前不知道,或者没有很好地利用到这些功能。这篇博文将介绍一些这些"隐藏"的功能和它们的使用方法。

Code cave

Code cave 使您能够改变代码的行为。传统的 Code cave 由 inline hooking 或者改变 CALL 或者 JMP 指令的目标来实现。然而,在 x64dbg 中您能更容易实现 Code cave。x64dbg 提供了bpgoto命令,它的第一个参数是设置软件断点的地址,第二个参数是您自定义代码的地址。这个命令将设置一个条件表达式,当表达式被触发时,它将重定向指令指针(instruction pointer)到您自定义的代码。您还可以在硬件断点上手动设置条件表达式以实现 Code cave。这个功能使得您能在与校验和保护相关的关键函数处添加 Code cave。实际上,您也可以编写插件以实现在断点执行时进行进一步处理。

使用监视窗口 (Use watch window)

在调试循环时,您可能一边重复执行代码,一边仔细观察寄存器的值,然后关注某一小片代码的执行过程中寄存器中出现了有趣的值。但是当变量存储在内存中时,有趣的值就不容易被注意到了。比之前更好的调试方法是使用监视窗口(watch window)。您可以在监视视图中添加变量,通过这种方式,您可以了解到变量发生的所有变化。使用监视窗口的另一个好处是,当变量指向代码段时,侧边栏将显示所指向代码段的指针。您可以通过监视窗口轻松的了解到指针解析的过程。

与 Snowman 反编译工具一起工作 (Work with sonwman)

Snowman 反编译器是一个 x64dbg 自带的工具。它不仅在您执行调试进程中的算法时有用,而且在您尝试逆向特定函数时也很有用。在某种程度上,它甚至比流程图(flow graph)更有用。尝试将 Snowman 反编译器中的变量名字从地址重命名为有意义的名称,并猜测其他变量的含义,这将使得阅读一个较长的函数实现不再困难和无聊。

使用命令和函数 (Use commands and functions)

有许多命令和函数未出现在 GUI 中,因此很少有人知道这些功能的存在。但是这些命令非常有用。例如,您可以将printstack命令放在断点上,每当调试器遇到断点时,都会记录下调用堆栈。使用mod.party表达式函数快速筛选出来自系统模块的调用。学习新命令的最佳方法是阅读文档并查找您以前不知道的任何命令。

在适合追踪的地方使用追踪 (Use tracing where it works best)

追踪是一种昂贵的操作。和断点相比,它的速度非常慢。因此,当可以使用断点时,都不应执行追踪。如果您不知道将要执行哪些代码,那么追踪更具有优势。例如,您可以执行追踪以查看变量何时重置。如果代码每次迭代都到达一个地方,则可以在那里设置条件断点,否则可以选择开始追踪。不要按住单步键超过一分钟,让电脑为你追踪更加明智。

使用追踪记录 (Use trace record)

追踪记录(trace record)/命中追踪(hit trace)是 x64dbg 和 Ollydbg 提供的最佳功能之一。正确使用这个功能将为您节省大量时间。执行指令时,它可以将其标记为绿色。追踪记录的常见用法如下:启用追踪记录并逐步迭代。当你回到你以前去过的地方时,用tibt去下一个有趣的地方。如果该函数看起来不让人感兴趣,请使用tiit返回。通过交替使用tibttiit,您可以逐渐增加代码覆盖率,无需执行冗余工作即可分析每个部分的代码,并轻松找到关键函数。


第五届安全开发者峰会(SDC 2021)议题征集正式开启!

收藏
点赞1
打赏
分享
最新回复 (7)
雪    币: 10066
活跃值: 活跃值 (2163)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 活跃值 2019-8-22 23:44
2
0
有视频实例就好了。官方帮助写的不全面。
雪    币: 227
活跃值: 活跃值 (486)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
appview 活跃值 2019-9-3 17:01
3
0
ninebell 有视频实例就好了。官方帮助写的不全面。
up
雪    币: 59
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhashia 活跃值 2019-9-13 23:30
4
0
为什么近几个版本没有雪人⛄️反编译器啦?
雪    币: 761
活跃值: 活跃值 (821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
默NJ 活跃值 2019-9-20 11:12
5
0
雪人反编译在3个月前就被移除了,你可以主动安装插件来恢复,不过就我使用的感谢来说,实在是比不上hex-rays好用
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_洛溪 活跃值 2020-7-3 13:56
6
0
默NJ 雪人反编译在3个月前就被移除了,你可以主动安装插件来恢复,不过就我使用的感谢来说,实在是比不上hex-rays好用
hex-rays这个x64dbg自带的有没 按什么键使用的呀
雪    币: 3002
活跃值: 活跃值 (547)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qj111111 活跃值 2020-7-3 14:18
7
0
wx_洛溪 hex-rays这个x64dbg自带的有没 按什么键使用的呀
x64dbg-IDA同步调试插件,把x64dbg反汇编同步到IDA
雪    币: 33
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_洛溪 活跃值 2020-7-3 14:26
8
0
qj111111 x64dbg-IDA同步调试插件,把x64dbg反汇编同步到IDA
还能这样的 厉害了 我去试试
游客
登录 | 注册 方可回帖
返回