关于REVERSE
写在前面
Hi,这里是关于REVERSE(逆向)的入门。关于逆向,有些话想说。逆向的学习需要理论,也需要实践。广义上,逆向不仅仅是调试二进制可执行格式,反汇编,破解;逆向是心理模型的建立过程,以及模型实现的底层细节的定位过程。从理论上,为了理解一个程序,系统,你读代码,无论是源码还是汇编,甚至二进制机械指令,都是一个逆向过程.
本篇将对REVERSE(逆向)一些常用工具及使用方法进行介绍。逆向所需具备的知识技能很多很杂,要学好逆向和熟练掌握反汇编,编程是必须会的,再接着就是必须熟练密码学,往更高处走,格局放大点,到软件逆向,就需要熟悉软件工程,因为都是会工程化的。如果热爱逆向并且想走这条路,CTF只是开始。
常用的软件分析工具
查壳工具
什么是壳
在了解查壳工具之前,让我们了解了解壳的概念,这个“壳”是指的什么,为什么会有壳?
- 所谓“壳”,就是专门压缩的工具。这里的压缩并不是我们平时使用的RAR,ZIP这些工具的压缩,而是针对exe、com和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,加密,使原程序文件代码失去本来面目。其作用是什么呢,是保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。
- 除了保护程序不被非法修改和反编译,壳还能对程序专门进行压缩,以减小文件大小,方便传播和储存。经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行。
- 软件的壳分为:加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
下面列出的是常用的功能较强大的查壳工具:
EXEInfoPE
将文件拖入查壳软件即可:
EXEInfoPE会显示文件的信息
PEID
PEID同理
去壳工具
去壳:顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉。在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。以下是常用的一些去壳工具
通过一个题目让我们简单了解下去壳工具的使用:
先拖进EXEInfoPE去查询信息
发现其不是windows的可执行文件(windows下的文件是PE文件,Linux/Unix下的文件是ELF文件)并且是upx的壳
于是对其进行脱壳–unpacked 1 file–脱壳成