黑客信息网:CTF-REVERSE练习之逆向初探

访客4年前黑客资讯808

逆向是指通过反汇编和调试等一些手段及工具,分析计算机程序的二进制可执行代码,从而获得程序的算法细节和实现原理的技术。不仅如此,逆向技能在信息安全面向的具体工作,如恶意代码分析、软件漏洞挖掘、移动安全以及对软件的破解方面发挥着巨大的作用。

前面介绍过CTF的web真题,那今天我们从CTF中选择一个REVERSE题型来讲解。

先介绍一下,REVERSE是CTF竞赛中的一种常见题目类型,主要考察参赛选手逆向工程相关的知识,考查形式为通过对一个二进制程序(exe、dll或者是elf等)进行逆向分析,了解程序内部的实现机制,最终目的可能是得到一个密码,或者是编写一个注册机用于计算指定用户名对应的注册码等。

那我们要怎么才能对一个程序进行逆向,一个完整的程序怎么看到它的代码呢?

当然别人也想到过这种问题,所以就出现了几种帮助逆向的工具。

1.PEiD是一款著名的查壳工具,其功能十分强大,几乎可以侦测出绝大部分的壳以及程序编译信息。PEiD支持各种外部插件,同时支持用户自定义的加壳程序签名信息。

2.Ollydbg简称OD,是一款具有图形用户界面的用户模式调试器,可以运行于各种主流Windows操作系统下。Ollydbg具有动态调试和静态分析功能,非常容易上手,对异常的跟踪处理相当灵活,并且许多爱好者为这款调试器编写了许多非常棒的插件,这些特性使得其成为Windows操作系统上用户模式下动态调试器的首选。Ollydbg的反汇编引擎十分强大,可以识别数千个被C和Windows频繁使用的函数,并可以自动对参数进行注释。底下是OD一些常用的快捷键。

F2 设置一个断点(如果断点已经存在,那么断点将被删除)

F4 运行到光标所在行(运行到光标所在行时自动断下)

F7 单步跟踪(如果遇到一个call,则跟踪进入)

F8 单步跟踪(如果遇到一个call,则执行完整个call)

F9 继续执行(运行程序,直到进程退出或遇到下一个断点)

3.IDA是一款交互式反汇编工具,其功能十分强大,支持多操作系统、多处理器下的二进制程序的反汇编分析,并且可以和使用者进行交互来提升处理效率。IDA支持插件,支持IDC脚本,Hex-Rays Decompiler是IDA一个十分强大的插件,支持将反汇编代码直接转换为C语言伪代码,极大的提高了反汇编分析人员的工作效率。这底下是ida的快捷键可以帮助我们更加高效的进行分析。

空格 在图形模式和列表视图模式之间切换反汇编视图

F5 将反汇编指令还原为伪代码

x 查看交叉引用

n 对变量名或者函数名进行重命名操作

d 将二进制数据解释为字节/双字/四字

c 将二进制数据解释为代码

a 将二进制数据解释为字符串

实验步骤

好我们来开始实验,先进入实验网页:CTF-REVERSE练习之逆向初探。

题目描述:

主机C:\Reverse\1目录下有一个CrackMe1.exe程序,运行这个程序的时候会提示输入一个密码,当输入正确的密码时,会弹出过关提示消息框,请对CrackMe1.exe程序进行逆向分析和调试,找到正确的过关密码。

我们开始之一步进行外部行为分析不管在什么场景下,相信你在刚接触一个新事物的时候,都会仔细观察事物的外部特征,CTF做题也是一样的,在拿到题目之后可以运行程序,观察程序都有哪些地方可以输入数据,哪些按钮点击了会有什么样的反应,在操作过程中出现了哪些提示等。

我们通过对CrackMe1.exe程序的观察,知道程序需要输入一个密码,当不输入任何数据就点击按钮时,提示如下信息:

图片1.png

当输入一串测试数据时,提示如下信息:

图片2.png

这里有弹框还有提示,我们是不是直接去查找这个提示就可以了呢。但是我们在对一个程序进行逆向分析之前,除了程序的动态行为之外,查看程序是否加壳(被何种程序加壳?是什么编译器编译的?)也是一个非常关键的步骤。之前提到了PEID,我们就用PEID来查壳我们选中程序后单击右键,在右键菜单中选择“Scan with PEiD”选项,就可以查看加壳信息了。我们这里看到的是Microsoft Visual C++ 6.0,说明CrackMe1.exe没有加壳,且它是使用VC6编译的。

图片3.png

我们换OD来进行动态调试,

动态调试可以帮助我们了解程序内部执行逻辑的许多详细信息,很多信息只有在程序运行起来之后才会看到,这也是静态分析所无法简单获取到的。OD是我们在Windows操作系统下动态调试器的首选。

操作选择CrackMe1.exe程序后单击右键,在右键菜单中选择“用OllyICE”打开,就会进行OD调试器的主界面,我们在反汇编指令列表窗口中单击右键,依次选择“Ultra String Reference”、“Find ASCII”菜单项,如图所示:

图片4.png

之后会弹出字符串列表窗口,这个窗口列出了当前进程内存空间中存在的各种字符串,我们可以查看是否存在有我们感兴趣的字符串。比如前面曾经提示“密码错误”的提示,那么我们就可以按下Ctrl+F,在弹出的窗口中输入“密码错误”,然后单击确定按钮查找:

图片5.png

上面还有一个密码正确,恭喜过关,这是不是关键呢?我们试一试双击这个看看。

双击找到字符串的那一行,来到OD的反汇编窗口,就能看到代码指令中引用这个字符串的地方了。如下图所示:

图片6.png

在这个代码片段中,我们还看到了一个jnz跳转指令,这个指令是否跳转将决定着弹出成功的提示还是弹出失败的提示,这样的跳转也就是所谓的关键跳转。在关键跳转之上的代码往往就是关键的密码判断逻辑,因此我们可以着重分析关键跳转之上的代码。在关键跳转之上,我们在下面的的位置下一个断点(鼠标单击这行代码选中,然后按下F2):

00401456. 55 push ebp

下好断点之后,按下F9运行程序,随便输入一个密码(比如test)后单击按钮,程序就自动在我们的断点断下了,接下来按F8开始进行单步跟踪,当跟踪到00401490的时候,我们发现了我们输入的密码test,同时发现字符串HeeTianLab,如图所示:

图片7.png

仔细分析上面的代码,发现是在从这两个字符串里面取出字符一个一个进行对比,只要有一个字符不一样,最终都会跳转到提示失败的地方去。那么可以猜测HeeTianLab就是正确的密码了,我们运行另一个CrackMe1进程,输入HeeTianLab,弹出成功提示:

图片8.png

这就通关了,接下来我用另外一个神器IDA再来做一遍,有动态的神器,肯定还有一个静态的神器。

除了动态调试之外,静态分析也是一种很重要的技能。静态分析可以帮助我们快速了解程序的代码执行逻辑,尤其是使用IDA的Hex-Rays插件将汇编代码生成伪代码的功能,可以极大地提高我们的分析效率。

使用IDA打开CrackMe1.exe程序,IDA会提示选择文件类型、处理器类型等,通常我们不需要修改这些设置,直接单击“OK”按钮即可。之后IDA会对程序进行分析,等待一段时间,待分析结束之后,在下方的“Output Window”中会提示“The initial auto *** ysis has been finished.”,如图:

图片9.png

在IDA的菜单中选择“View”——“Open subviews”——“Strings”菜单项,就可以弹出字符串列表界面了,如图所示:

图片10.png

IDA的字符串列表界面没有提供Ctrl+F快捷进行查找的功能,所以我们需要手工翻页来查找我们感兴趣的字符串,拖到某一个地方的时候我们看到了提示相关的字符串:

图片11.png

双击“密码错误”这个字符串,来定定义该字符串的地方,然后鼠标点击字符串的名字,然后按下x键,进行交叉引用查找,弹出的对话框如下图所示:

图片12.png

单击OK按钮来到引用这个字符串的地方,我们看到了一堆反汇编指令列表,这时候就可以对这里的汇编指令进行分析了,如果不想看汇编指令也不要紧,按下F5键就可以生成函数的伪代码了,我们看到伪代码中将输入的密码和HeeTianLab进行了比较:

图片13.png

很明显,HeeTianLab就是我们想要的密码。

逆向的学习是一个需要对计算机相关及编程知识系统有较深了解的过程,它是一个不断渐进的阶段性技能。想学好逆向,你必须具备众多的编程语言储备、安全相关知识、对计算机原理有良好的认识和常识。而这些只是逆向的基础!

相关文章

ipad越狱后怎么升级(已越狱的ipad如何还原)

ipad越狱后怎么升级(已越狱的ipad如何还原)

【搞科技教程】现在很多越狱了的iPad出现一些白苹果或变砖的问题,或因为iPad本身质量问题而想要拿到苹果售后去保修,而苹果是不受理已经越狱的设备的,这时候首先就是要将已经越狱的设备进行恢复才能正常保...

加装汽车雷达多少钱,汽车雷达多少钱

  此刻市场上各类品牌的倒车雷达浩瀚,价值各异,鱼珠稠浊,使消费者无所适从。个中在4s店和汽车美容店装的倒车雷达品牌和安装手法都一样的,对原电路没有影响。。   半天就装完了   倒车雷达技能和产物较...

北京高端伴游预约注意事项

北京模特林钰婷的材料信息内容 预定平台:QQ号 价钱花费:3108米 女学妹种类:顶级模特 艺人经纪人:林钰婷 关心总数:9616 想约总数:9014人 資源总数:7934人 今天丽人:523人...

神仙黑客情头(黑客头像男生头像霸气)

神仙黑客情头(黑客头像男生头像霸气)

这个是情头吗? 这个是情头。适合00后学生用的情侣头像如下:头像简介:指肩部以上的人像或于网站及社交平台上用于仅做标识的图片。在拍摄头像的时候,除了拍摄一些比较活泼的个性神态之外。这个从图片上来看,应...

装黑客买便宜游戏的网站(网络黑客游戏)

装黑客买便宜游戏的网站(网络黑客游戏)

360杀毒软件说挂马网站是什么意思 说明你想要浏览的网站可能含有木马病毒,继续浏览可能感染你的电脑,不过有时也是瞎报的。宁可信其有不可信其无,遇到提醒的网站最好立刻关闭,不要浏览。scrolling=...

电商系统:商家入驻步骤及入驻信息

电商系统:商家入驻步骤及入驻信息

编辑导语:在上一篇文章《电商系统:商家入驻流程和退店流程详解》讲到商家入驻申请代表着相助的开始,而退店则代表着相助的竣事,从入驻到退店的流程是许多商家用户存眷的核心;本篇文章作者分享了商家入驻步调及入...