-
-
[翻译]巧用 x64dbg (Make better use of x64dbg)
-
发表于:
2019-8-22 22:31
14536
-
[翻译]巧用 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 由 inline hooking 或者改变 CALL 或者 JMP 指令的目标来实现。然而,在 x64dbg 中您能更容易实现 Code cave。x64dbg 提供了bpgoto
命令,它的第一个参数是设置软件断点的地址,第二个参数是您自定义代码的地址。这个命令将设置一个条件表达式,当表达式被触发时,它将重定向指令指针(instruction pointer)到您自定义的代码。您还可以在硬件断点上手动设置条件表达式以实现 Code cave。这个功能使得您能在与校验和保护相关的关键函数处添加 Code cave。实际上,您也可以编写插件以实现在断点执行时进行进一步处理。
在调试循环时,您可能一边重复执行代码,一边仔细观察寄存器的值,然后关注某一小片代码的执行过程中寄存器中出现了有趣的值。但是当变量存储在内存中时,有趣的值就不容易被注意到了。比之前更好的调试方法是使用监视窗口(watch window)。您可以在监视视图中添加变量,通过这种方式,您可以了解到变量发生的所有变化。使用监视窗口的另一个好处是,当变量指向代码段时,侧边栏将显示所指向代码段的指针。您可以通过监视窗口轻松的了解到指针解析的过程。
Snowman 反编译器是一个 x64dbg 自带的工具。它不仅在您执行调试进程中的算法时有用,而且在您尝试逆向特定函数时也很有用。在某种程度上,它甚至比流程图(flow graph)更有用。尝试将 Snowman 反编译器中的变量名字从地址重命名为有意义的名称,并猜测其他变量的含义,这将使得阅读一个较长的函数实现不再困难和无聊。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!