x64dbg中设置条件断点 ,IDA Pro常用基础操作


[原创]在x64dbg中设置条件断点 

 2019-5-17 10:04  18326

x64dbg是逆向分析win64程序的利器,它的地位类似于OllyDbg。最近遇上了怎样在x64dbg设置条件断点的问题,网上搜索了一遍仅看到x64dbg的使用手册,没有图文并茂的说明文档,琢磨了一番搞明白了,现写出来分享给大家。

1、  条件断点

在想要设置断点的指令处按F2设置断点,然后在断点窗口选中该断点,右键选择“Edit”

在Break Condition写入中断条件,如下图中写的:(esi == 73) && (eax==64)

注:此处的73,64都为16进制数。

设置后运行将在满足条件的指令处停下来。

2、  条件记录断点

条件记录断点就是没有中断条件,仅将关注的数据记录下来。

如下图所示,设置break condition为0,Log text设置需要记录的数据,同时将silent项选上。

设置完运行后,在Log窗口就可以看到记录的数据。

IDA Pro切换图形或代码模式

1、空格

2、右键选择Text View/Graph View切换

 

图形模式

 

代码模式

 

IDA Pro常用基础操作

IDA Pro常用基础操作

1、查看字符串

 

2、跳转到代码中

 

3、跳转到地址

跳转到_text_410CC9位置

 

4、堆栈窗口

IDA-ESP窗口现在列出了我们感兴趣的函数的堆栈结构

通过调试器窗口指向堆栈窗口,点击"箭头"

5、把汇编转换成源代码

强大的F5

6、监视

我们可以添加监视,通过监视观察在程序执行过程中数据的变化。

7、转到入口点

 

8、Text view

 

9、Graph view

 

 

10、查看string

 

1、IDA Pro下断点

F2下断点

F9运行

变成红色

或右键

2、查看导入导出表

 

3、打开调试器窗口

 

 

4、视图窗口

 

5、查看数据段的字符串在代码段中的引用位置

函数可以利用交叉定位找到调用的地址.

字符串无法找到,可能调用的地址经过变化

6、CODE XREF

外部参照代码

7、每个函数最上方为函数的栈帧。

8、ESC键经常会关掉窗口,可以RESET…

String每次打开都会扫描,可以设置不同语言特性对应的字符串。

9、快捷键G.跳转到地址或者名称。go窗口。在反汇编窗口,esc键是返回。ctrl+enter是下一步。或者用图标:

 

10、IDA对函数栈帧的表示方法。。。挺有用。。命名方式与大小:

详细栈帧:

其中r表示返回地址。

11、栈帧为了对齐等,一般在ebp上面留开8个字节。

12、Alt+T 搜索字符串。 N重命名。。ALT+I 搜索值

13、D,把代码变成数据,C反之。U,取消格式。

x64dbg使用技巧与实用插件合集

本文是针对刚开始接触X64dbg的新人写的实用技巧和插件合集

前言

萌新一个,接触逆向时间不长,但因为很喜欢x64dbg这款调试器,所以花了一些时间去了解,x64dbg的这类帖子相对较少,本贴的初衷是希望其他新人在学习的时候可以多一些参考,少一些时间精力的浪费。希望大家为我的帖子指正错误和做补充。

以下均基于Mar 12 2021版本x64dbg官方版本,可到官方网站直接下载

官方网站:https://x64dbg.com/

第一次运行

双击x96dbg,出现三个弹窗,会生成x96dbg.ini文件。当你需要把整个程序文件夹移动到其他路径时,最好把这个ini删除,重新双击让它再生成。当你需要把它加到发送到菜单中的时候,也推荐添加x96dbg,它会自动选择用x32还是x64dbg打开。

 

你需要做些什么设置

外观

  • 字体大小调整    选项——外观——字体——最右边那个数字(图右)(我个人用12)
  • 主题选择            选项——主题——选择你喜欢的(图左),也可以在Github搜索x64dbg theme,或者百度搜索x64dbg 配色,使用别人的配色方案文件

 

选项设置

  • 事件   

    推荐萌新只勾选入口断点(这样相当于OD设置为 第一次暂停于主模块入口点)

  • 引擎   

    保持默认即可,需要特别说明的是禁用数据压缩将数据保存于应用程序目录,所指的数据是指调试相关数据,默认保存在调试器db文件夹下。调试引擎选项里的GleeBug,据作者以前博客内容说是跟踪速度会比默认的Titan快很多,但我试了没什么感觉。

  • 异常

    保持默认

  • 反汇编

    仅在CIP处显示自动注释——勾选之后界面会更整洁,该有的自动注释也还是有的,自行体验取舍

    模块名最长长度——默认-1不限制,如果遇到比较长的文件名,调试起来界面观感会比较差(图左),OD的限制长度为8,自行取舍。

    值前加0x前缀——x64dbg里默认以16进制显示数值(不显示0x),如果你需要表示十进制,可以在前面加点,汇编里输入加点10进制需要设置XEDparse引擎(图右)。

 

  • 图形界面

    其他选项根据个人需要调整,一般保持默认,特别说明一项

    图形缩放模式——这里指的是x64dbg流程图功能 是否支持缩放,勾选后流程图操作体验会稍微接近IDA。流程图功能会在后面提到

  • 杂项

    其他选项根据个人需要调整,一般保持默认

    可以将搜索引擎改为百度:https://www.baidu.com/s?wd=@topic    遇到不认识的函数选中,右键,符号名称帮助,直接进行查询。

使用技巧篇

  • 收藏夹参数

    这里直接贴上官方文档对于收藏夹的使用说明:

    如果你在工具的命令行添加 %PID%,它将被调试对象(如果不进行调试或0)的(十进制) PID 替换。

    如果你添加%DEBUGGEE%,则它将添加调试对象(不带引号)的完整的路径。

    如果你添加 %MODULE%,则将添加在当前反汇编中模块(不带引号)的完整路径。

    如果你添加 %-????-%,则它将执行无论你放在何处的 ????字符串格式。示例:%-{cip}-%将会用 cip 的十六进制值替换。

    所以你可以这样 "C:\Tools\DIE\die.exe" %DEBUGGEE%  添加你常用的工具(记得路径加双引号),然后把收藏夹——收藏工具箱选上。点击Die图标,将会启动并且分析当前在调试的模块。这样的方法好过安装什么PE查看器插件,让专业的工具做专业的事

     

  • 流程图

    在反汇编窗口按下G键切换到流程图,再按G回来。建议配合图形缩放模式设置,可以用Ctrl+滚轮进行缩放。

    右键点击脱离后,可以与反汇编窗口同时使用,让我想起ret-sync那个插件,后面插件篇再说(我一般还是用IDA,但万一有人喜欢这种呢)

 

  • Ctrl+G 跳转到

    可以直接输入API,会自动补全。默认是输入VA,如果要输入RVA需要这样: :$RVA

    例: :$0  跳到基址处

    如果需要输入FOA可以这样:  :#FOA   或者按下Ctrl+Shift+G 再输入FOA

  • 按H键进入高亮模式

    此时单击需要高亮显示的内容即可高亮显示,再次按下H,点击空白处可以取消。(也可以设置一直启用高亮,但有误点的问题)

     

  • 数据库

    (或者是Database)

    遇到过几次x64dbg数据丢失,写了很多注释就没了,这种情况千万不要慌张,因为你每次关闭x64dbg自动保存的时候,都会把上次的数据文件做备份(.bak),这时候可以试着点击还原备份数据库

     

  • x64dbg计算器

    个人觉得比系统自带计算器好用,可以一边调试一边计算(非模态+置顶),不用切来切去,支持x64dbg的各种表达式

     

  • 右键——显示指令提示

    会显示汇编指令对应的解释,对于初学者很有帮助,有一个王苏汉化的版本,是将这些帮助文本也完全汉化了的。(自行搜索)

 

  • 文件——改变命令行

    可以支持带参数调试

 

  • 复制各种格式的数据

    选中你要的部分——右键二进制——编辑——复制数据

 

  • 少数情况下64位系统使用x64dbg调试32位程序界面卡顿问题

    这个问题很玄学,我遇到了,搜了网上也有一个朋友遇到过,我身边的同学也有极少数遇到的,这里给出解决方法。

    x32dbg.exe——右键属性——兼容性——调成Windows 7   (那个遇到同样问题的博主是这么解决的)

    但是我这么设置后还是卡顿,后来装了个叫xAnalyzer的插件,又恢复了。(我的情况是这个插件和兼容性设置缺一不可,不然就会卡顿,非常奇葩,重装了系统还是一样,在此做个记录,防止有人再遇到)

  • ESP硬件断点

    寄存器窗口空白处右键

     

  • 自动跟踪

    简单说一下使用方法,因为我的了解也不是很深

    右键——追踪记录——启动运行跟踪——点击菜单栏 跟踪(N)——步进\步过直到条件满足

    在暂停条件或者命令里类似这样设置:eip==地址

    接着就可以在跟踪窗口查看跟踪结果了。

  • 切换XX

    切换断点、切换书签,这类命名在最初给我带来了一些困扰和误解,后来发现切换的意思就是 设置/取消设置。点一下是设置,再点一下就取消设置,所以命名为切换。

    这里顺带一说,x64dbg的搜索结果,内存窗口,跟踪结果,几乎所有带地址的地方,都是支持直接F2设置断点的,各位可以多加利用提高效率。

 

插件推荐篇

以下主要详细介绍我平时常用的插件,建议大家按照需求来安装(插件放在release\x32或者x64\plugins目录下,以.dp32或.dp64结尾)

Scylla(脱壳与导入表修复)

  • 自带的插件,个人觉得比OD+ImpREC更方便快捷

    常见的脱壳流程:x64dbg停在需要脱壳的地址上,点击Scylla的图标启动,会自动为你设定IAT info里的OEP为当前地址,点击dump。

    修复导入表:点击IAT Autosearch,有可能提示:高级搜索结果和普通搜索结果不同,是否使用高级搜索结果。一般都选是,接着点Get Imports,自动获取需要修复的函数。我遇到过高级搜索反而搜不到的情况,这时候可以试试点否之后再点Get Imports。确认结果无误后点Fix Dump,选中刚才Dump出的文件,会生成SCY结尾的文件。

     

    xAnalyzer(代码分析辅助)

    https://github.com/ThunderCls/xAnalyzer

    该插件对调试程序的API函数调用进行检测,自动添加函数定义,参数和数据类型以及其他补充信息,安装以后可以让x64dbg与OllyDbg的使用体验更接近。

    效果如图,可以在插件菜单里把自动分析(Automatic Analysis)打开。我个人不喜欢插件自动添加很多注释,会让页面看起来很乱,所以一般在需要分析的时候通过右键菜单来让它分析当前函数。

 

SwissArmyKnife(导入Map文件)

https://github.com/Nukem9/SwissArmyKnife

没什么好解释的,分析C程序的时候用IDA生成MAP文件,然后用这个插件加载。分析delphin程序推荐用Interactive Delphi Reconstructor先分析,再生成MAP文件用,还有其他程序也同样。MAP文件可以让你的分析进度大大加快,减少分析一些已知的库函数。

x64dbg_tol(中文搜索支持)

https://bbs.pediy.com/thread-261942-1.htm

必装插件,虽然官方在某个版本开始改善了对中文的支持,但他们在博客上也说了,可能会不全,建议自行安装插件。我自己测试了,嗯,他们说的没错。装了这个插件就能搜到之前搜不到的中文字符串了。

ScyllaHide(反反调试)

https://github.com/x64dbg/ScyllaHide

x64dbg官方开发的开源反反调试插件,同类插件也有好几个,但官方的用得人比较多且更新快,所以这边推荐官方的插件。使用方法也很简单,插件菜单——Options——Loaded里可以选择自带的绕过方案(过一般的反调试可以用Basic甚至直接用自带的 调试——高级——隐藏调试器)

试了下VM3.x的反调试可以用自带的VM方案直接过掉(反而OD的StrongOD插件不行)

 

Ret-Sync (IDA x64dbg\OD 同步调试插件)

https://github.com/bootleg/ret-sync

https://bbs.pediy.com/thread-252634.htm

可以让IDA和x64dbg\OD\windbg进行同步调试,支持在IDA中直接进行单步、下断点、运行等操作,x64dbg将会与IDA保持同步,提高你调试效率的神器,关于安装、使用说明可以参考官方github说明(更详细)和看雪的帖子。

这里要特别提一点,如果你需要在虚拟机里用x64dbg,实体机里用IDA,需要创建两个.sync文件,内容都为

 复制代码 隐藏代码
[INTERFACE]
host=192.168.128.1(实体机IP)
port=9234(端口)

一个在装了IDA的机器上,放在你需要调试的程序目录下(跟IDA生成的IDB文件放一起)

一个放在安装了动态调试器的机器上,用户文件夹根目录(C:\Users\你的用户名)

这样就可以实现虚拟机和实体机同步调试了

 

E-ApiBreak(常用断点设置)

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1384349

OD上常用的一个工具,现在x64dbg也有了。简单易用,不多说明。

 

E-Debug(分析易语言程序必备)

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1374290

原作者githubhttps://github.com/fjqisba/E-debug-plus

最开始我在OD上用这个插件,可以让分析易语言的效率倍增。最近发现有人移植到x64dbg了,在此推荐一波,打开后会自动识别易语言库函数并且注释。

 

HotSpots(用来寻找事件断点)

https://github.com/ThunderCls/xHotSpots

下拉框选择对应语言,按下按钮可以在按钮事件处理函数 下断点。

 

 

  • 漏洞利用

    最后对于研究漏洞利用的同学(因为我们最近也刚开始学),我发现两个好用的插件:

    ERC.Xdbg(二进制漏洞挖掘辅助,帮你找溢出点之类的)

    https://github.com/Andy53/ERC.Xdbg  (官方提供五篇教学文档,关于插件的实战,非常详细)

    checksec (检测各个模块的各种安全措施状态)

    https://github.com/klks/checksec

    以上就是一些适合萌新的实用插件推荐,其他还有一些没提到的好用的插件,各位可以在底下补充。当然随着你的学习,后面也会需要用到其他类型的插件,甚至自己写插件。可以到官方的插件页面逛逛(http://plugins.x64dbg.com/),翻翻官方的手册

 x64dbg插件.7z (2.07 MB, 下载次数: 1076)


我把个人觉得必备的几个插件打包了,下载覆盖相应文件夹即可。(xAnalyzer,SwissArmyKnife,x64dbg_tol,ScyllaHide,BaymaxTools,xHotSpots)其他插件如果需要自行下载即可

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM