X64dbg API断点设置方法以及其他几个小技巧

发布于 2021-04-19  53 次阅读


背景

在看逆向工程核心原理的时候,文章的示例使用的是OD,但是OD的界面实在是看着不舒服2333,于是自行换用了几乎等价的工具X64dbg进行实验,但是网上x64dbg的资源和教程的数量和质量相比于OD来说实在是太少了

谷歌搜索X64dbg API断点 前五篇文章都没能以较便捷的方式解决问题

于是去翻了一下官方的文档,同时意外的发现官方文档里面总结了许多小技巧,因此一并总结在本文当中

阅读本文前置知识

  • 对OD有一定的了解

正文

先直接说解决方法,然后在谈一下期间踩得一些坑和走的一些弯路

首先确定你想要找的API的正式全名,例如MessageBoxW

然后在命令窗口里面输入bp <APIname>

命令窗口如图所示

这里要注意的是不要用模糊名

比如MessageBox,messagebox等,(需要严格区分大小写)

当API被调用的时候,堆栈顶会压入返回地址,再根据该地址即可到达调用方位置

这个方法有一个致命问题:当符号表被抹干净的时候此方法失效,因为bp命令的参数是在PE文件头里面搜索的

再次用英文搜索 X64dbg API breakpoint 找到了一个插件

https://www.findbestopensource.com/product/0ffffffffh-api-break-for-x64dbg

可视化界面,树状分类,相对来说好用很多

5月3日更新:

在52论坛上找到了一个更好用的API断点插件,插件主页面罗列了大部分破解软件过程中常见的关键API

地址如下

https://www.52pojie.cn/thread-1384349-1-1.html

其他小技巧

  • 在反汇编视图中,按下鼠标中键可将选定的地址复制到剪贴板中。
  • 你可以通过重命名"x64dbg.exe"或"x32dbg.exe"为另一个名称,来重命名 x64dbg 的窗口。这样可以绕过一些反调试检测
  • 按 Ctrl+H 可以高亮某个寄存器。
  • 双击某个地址,就会进入以该地址为基址的相对寻址模式