前言
最近在准备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</

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

被折叠的 条评论
为什么被折叠?



