初识二进制炸弹

Posted by SGQ on March 19, 2020

前言:

今天刚拿到二阶段的测试,第一次接触二进制炸弹,自己对于二进制的基础积累有些薄弱,包括汇编语言,逆向工程了解的都还只是皮毛,甚至没有了解。

尽管压力好大,任务很艰巨,但努力总有收获。所以,我就先给自己做个详细的规划,从头开始,主要包括所需的知识储备,所需的环境搭建,所用到的各种工具等。

逆向工程:

逆向工程(Software Reverse Engineering)又称软件反向工程,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术都统称为软件逆向工程技术。

二进制炸弹:

题目要求:

⼀个“Binary Bombs”(⼆进制炸弹,简称炸弹)是⼀个Linux可执⾏C程序,包含phase1~phase6共6个阶段。炸弹运⾏各阶段要求输⼊⼀个字符串,若输⼊符合程序预期,该阶段炸弹被“拆除”,否则“爆炸”。此外,隐藏阶段可在第4阶段之后附加特定字符串后出现。 考察对程序机器级表⽰、汇编语⾔、调试器和逆向⼯程等的理解,每个炸弹阶段考察机器级语⾔程序不同⽅⾯,难度递增。

计划准备:

1. 完成ubuntu虚拟机的搭建,并学习基本命令行操作,学习objdumpgdb调试器 等工具如何使用。

objdump 有点像那个快速查看之类的工具,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

GDB主要完成下面四个方面的功能:
(1).启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
(2).可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
(3).当程序被停住时,可以检查此时你的程序中所发生的事。
(4).你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

2. 汇编语言的学习,学习《计算机系统基础》、《深⼊理解计算机系统》两本书。

3. 尝试解题。


参考链接:

逆向工程的前世今生

逆向工程【二进制炸弹】

谢谢您的查阅,欢迎来访!