当前位置: 首页 > news >正文

CTF逆向Re:零基础系统性入门教程-5-动态调试

目录

动态调试是什么

先说一些基础概念

为什么要动态调试

怎么动态调试

1.动态调试代替思考

2.动态调试劫持控制


动态调试是什么

简单说,就是运行程序,运行中监控程序的运行流程,数据变化,和静态分析的对比如下

场景 动态调试(推荐) 静态分析(推荐)
确认参数寄存器 / 调用约定 ✅ 直接观察寄存器值变化 ❌ 容易因编译器差异判断错误
提取解密后的中间数据 ✅ 内存中直接追踪字符串 ❌ 需逆向所有加密步骤,易出错
绕过校验 / 触发 flag ✅ 改内存 / 寄存器直接满足条件 ❌ 可能需要 patch 二进制,步骤繁琐
理解整体代码结构 ❌ 太细节,容易陷入指令级泥潭 ✅ 快速看函数调用、逻辑分支

先说一些基础概念

  • 断点:程序执行到此处会停下
  • 单步(F8):程序执行一步
  • 运行(F9):运行程序,到断点停下

为什么要动态调试

  • 快速观察程序运行流程,变量流向。
  • 程序有加密流程,追踪字符串,观察加密方法
  • 需要控制程序走向

怎么动态调试

今天我们只讲IDA的动态调试。首先我们要先明确一点,动态调试本质是要让程序运行,不同车保程序的运行平台也是不一样的,因此,IDA动态调试分为本地调试远程调试两种。具体怎么远程调试这里不展开,网上教程很多

1.动态调试代替思考

对于动态调试,我想用一题简单的例题来引入,这是一道十分基础的XOR

img

点击并拖拽以移动那么已知主函数如下,密文已经显示,且只存在XOR计算,如何最快解出flag。因为这个XOR函数计算比较简单,大多数人会选择用python写一个反推脚本(flag+1=x⬅️flag=x-1),这很好理解

如果从另一个角度来想,XOR运算是可逆运算(a异或b=c,a异或c=b),我们用动态调试会怎么样

这里为了方便大家观察,因此我下了两个断点,正常来说只要在图一的if判断处下一个就可以了

img

点击并拖拽以移动选择Local Window debugger后点击绿色小箭头(F9)执行程序

img

接着在弹出的命令窗输入主函数看到的密文回车,此时程序停止在我们的第一个断点,我们可以打开字符串表(Locals)更方便看变化的字符串。(菜单栏Debugger➡️debugger windows➡️Locals)此时我们可以看到Str1Str2内的值都是一样的,而下一步就是进行异或运算

img

此时我们点击F8,程序会执行下一步,边执行边观察Locals窗口,发现Str1的值变红,证明发生了变化,观察就是flag

img

点击并拖拽以移动

此时,你是否意识到,我们根本没有看XOR中的加密流程,而是直接利用动态调试绕过计算帮我们输出了结果,这就是动态调试最大的好处之一。回忆一下,自己品味一下为什么可以这样

2.动态调试劫持控制

接下来我们来看第二题,一道利用动态调试实现非预期解的题目,不过由于这题的base64加密没有魔改,因此直接解会更快,但是我们学习重点是如何用动态调试的方法来帮我们跳过加密的步骤。

看主函数,可以发现是base64加密,密文也摆在眼前了,但是注意到只执行了encode函数,还有一个decode的函数并没有被执行

img

那么,我们可不可以让这个decode函数帮我们解密呢,当然。那我们需要什么

1.decode函数地址

2.密文地址(打开shift+F12找)

提前准备好,准备开始劫持!

首先,我们在call encode函数处下个断点,先不让程序执行加密函数

img

点击并拖拽以移动接下来,来到decode函数,在其将解密的值传回处,下个断点,先不让程序结束

img

点击并拖拽以移动接下来观察,输入encode函数Str的哪个寄存器,一般来说是RDI,不过这里是RCX

img

点击并拖拽以移动F9运行程序,随便输点东西。程序停在call encode前,这时候我们要让它执行call decode。在register窗口找到RIP,(储存程序要跳转的下一个地址)双击并修改地址为decode的地址

img

点击并拖拽以移动此时成功就会跳转到decode函数,记得刚刚说过RCX是要输入到Str的寄存器吗,双击它,将地址改成密文的地址

img

点击并拖拽以移动F9执行程序,我们就会发现,RDX寄存器的内容已经发生变化,这就是我们要的结果。看起来不像flag是因为,题目还有一步调换字符,这里就不展示了。

img

点击并拖拽以移动至此,我们又能发现动态调试一个强大的功能,就是控制流劫持。我们可以构造有利于我们解题的条件。

img

动态调试是 “让程序‘说话’” 的工具 —— 它将静态代码转化为可交互的运行过程,既能验证分析结论,又能直接获取关键数据绕过复杂逻辑,是逆向中 “从理论到实操” 的核心桥梁,尤其在静态分析陷入困境时,动态调试往往是破局的关键

相信你已经掌握动态调试了,快去练几题试试吧!

http://www.gsyq.cn/news/57419.html

相关文章:

  • CF1817B Fish Graph
  • 淮安市一对一辅导机构权威排行榜推荐:2026家教机构穿透式测评!
  • 南昌航空大学-软件学院-23207201-吕玉英
  • 从超时到秒杀:三路快排解决数组排序的完整实战与反思
  • 2025年发电机制造厂权威推荐榜单:康姆勒原装发电机组/康姆勒发电机组/全自动柴油发电机组源头厂家精选
  • 2025百元白酒精选推荐指南:十大香型佳酿与纯粮酒挑选策略
  • 部署tendis 集群
  • 完整教程:Flowable工作流引擎:核心表结构概述
  • 2025年刮板蒸发器定做厂家权威推荐榜单:刮板薄膜蒸发器/薄膜蒸发器/刮板式蒸发器装备源头厂家精选
  • 单部电梯调度程序三次迭代设计与实践总结 - 23207231
  • hadoop与mysql的综合应用解决方案
  • 详细介绍:2. 容器常用操作
  • 一条SQL的完整执行过程:小明查询员工信息的完整冒险故事
  • 2025年便宜的化工品国际快递企业权威推荐榜单:药品国际快递/粉末国际快递/专线国际快递服务商精选
  • 杂题选做-6
  • 2025.11.22 考试总结
  • 新赛季临时脱产日记
  • 数据采集第3次作业
  • php openssl, RSA私钥有PKCS#1和PKCS#8,均包含有公钥
  • 2025 年 11 月中空吹塑机厂家推荐排行榜,吹塑机,挤出吹塑机,注射吹塑机,拉伸吹塑机,发泡吹塑机,工具箱吹塑机,瓶子吹塑机公司推荐
  • 2025.11.18 写题记录
  • 2025 最新支架厂家排行榜,出口级品质 + 定制服务 工程采购优选推荐指南热浸锌电缆/可调节角度隧道电缆沟/定制电缆沟/热镀锌电缆沟支架公司推荐
  • 渲染相关(Markdown、ByteMD、ReactMarkdown) - 实践
  • 2025年好吃不贵的餐厅服务权威推荐榜单:宝藏餐厅/好吃的餐厅/口碑好的餐厅服务精选
  • 2025年郑州婚姻心理咨询公司权威推荐榜单:心理健康咨询/家庭心理咨询/心理咨询源头公司精选
  • grub命令行启动linux
  • 2025 最新分频器厂家权威排行榜:EMF 三维电感技术加持,国际协会认证品质之选音响分频器/汽车音响分频器/喇叭分频器公司推荐
  • vue前端面试题——记录一次面试当中遇到的题(10) - 详解
  • HUST食堂解锁记录
  • 2025年浙江餐饮加盟服务商权威推荐榜单:上海加盟鲍鱼/燕之屋燕窝加盟/燕窝加盟服务商精选