chapter2:逆向工程之学习——动态分析与静态分析结合解CTF(csaw2013reversing2)

本文详细介绍了如何运用动态分析工具OllyDbg,结合静态分析,破解经典逆向工程题目。通过动态调试,理解程序逻辑,避开debugbreak陷阱,找出Flag。关键步骤包括设置断点、修改寄存器和判断条件,最后揭示了如何利用汇编知识实现IF逻辑。

前言

最近在准备CTF比赛,刷到一道非常经典的逆向题:攻防世界——csaw2013reversing2。这道题十分完美的用上了静态分析和动态分析的方法。在这里,我先总结一些啥是动态分析,然后再用动态分析与上个月的静态分析来解一道CTF逆向题。关于静态分析: chapter1:逆向工程之学习——静态分析

动态分析

什么是动态分析?

指程序运行的同时跟踪其行为的技术。其实类似于我们在一些IDE中进行代码调试时所用的“Debug”。

动态分析常用工具:OllyDbg

使用方法很简单:直接打开软件,把目标exe文件拖入即可。
我们关键是来看一下:OllyDbg的四个大黑框都是啥。我们主要把注意力放在左上角的框(反编译代码和二进制代码)和右上角的框(寄存器)。左上角的框就相当于你在IDE中需要进行Debug的一些代码,按F2设置断点,按F9执行程序/运行到断点处,F8单步调试。你可以看到图中00401388代表的是这个程序的物理地址,然后你会发现00401388是灰色背景,但是下面的都是黑色背景。那是因为程序正运行到此。

那么右上角的框,代表了一些变量值,这些值都存储再寄存器中(EAX , ECX …),下面还有一些标志位(C , P , A , Z),这些都可以在程序调试中,手动修改,目的是:实现一些违背源程序本意的操作。 比如:得到 Flag
在这里插入图片描述但是,汇编代码冗长,你想快速地找到你想设置断点的程序位置并不容易。所以得结合上次的静态分析技术(忘了可以看我上一篇博客,不看也没关系,等下会在解题部分进行演示)。

如何调试

只要你会用主流的IDE比如Pycharm,VS,IDE,MATLAB 等。学会OllyDbg也不是难事!!!
其实我们只需要遵循三步走:

  • 第一步设置断点并开始调试:F2 – > F9
    在这里插入图片描述

  • 第二步单步调试:F8

  • 第三步观察寄存器,栈区域,必要时修改寄存器
    在这里插入图片描述总之就和你平时调试IDE一样简单!

开始解题

在这里插入图片描述打开运行的话就是一段乱码。然后程序结束。下面开始进行正常的解题分析步骤

开始静态分析

  • Step1:我们先把这个程序丢到PE中看一看是几位的,加没加壳!重点还是看加没加壳
    在这里插入图片描述
  • Step2:丢进IDA 进行静态分析,我们直接找Main函数
    在这里插入图片描述
  • Step3:按F5 对main 函数的汇编代码进行反汇编
int __cdecl __noreturn main(int</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值