Re小登对题目的基础理解
一、学期总结大一上的Re之旅不能说是砍瓜切菜,也可以说是惨不忍睹。凡Re题无有解出的,对汇编的陌生是最关键的,同时发现许多比赛的re配合着java与apk的逆向,更是对我这个小登施以暴击,所以我立下宏志,在这个寒假猛攻Re。
二、基础理解光口头说说固然无用,所以放假以来,我仔细复盘了一遍Newstar CTF前三周的Re题,学了些网课,得到一些心得,记录下来。
以一道题来看一下逆向做题的常规步骤例题为BUU的刮开有奖,题目描述如下
第一步 查壳拿到题目先看一下文件格式和有无壳,有壳则脱壳,无壳就可以根据文件格式直接静态分析了。使用工具:DetectItEasy 或者 exeinfo pe
PE文件,编译器和链接器这里能看出是什么语言编写编译的,如果有壳也会出现packer提示,指出是什么壳和壳的版本号。
第二步 查看题目文件弹出一个图片,图片不能移动或修改
一般在这一步获取到题目是否输出字符串?有无提示?
比如:
第三步 静态分析静态分析顾名思义就是看静态代码,分析逻辑
使用工具:IDA一把梭
shift + F12 看一下字符串:
F5看一程序主 ...
脱壳以及简单练习
一 、壳概述1、壳的概念正常的软件开发者不对开发的软件进行保护的话,会导致开发的软件源代码很容易的被心怀不轨的人窃取到,而程序的壳便是抵抗第一过程的手段,就如自然界中的昆虫壳的作用一样,程序壳便是保护程序不被非法分子获取甚至破坏的。
2、壳的工作过程加壳过程是用加壳程序对源程序进行压缩、加密、转换指令等操作,然后一般是在程序的开头加上一段壳程序。当加壳程序运行时,在程序开头的壳程序会对加壳程序进行解压缩、解密代码或者数据、解释执行相应代码等过程,壳程序运行完之后一般会将加壳程序恢复成源程序,加壳程序便依旧可以执行相应的功能。
3、壳的几种分类压缩壳:UPX 、 ASPack
压缩壳主要是为了让程序文件占用更小的体积,对于程序的加密保护方面侧重性不是很强。
加密壳 : ASProtect 、Armadillo 、EXECryptor 、Themida
加密壳的功能更加侧重安全性,对于加壳后程序的体积大小并不是十分关注,它能够将程序的重要代码、数据等进行加密,甚至可以提供额外的功能,比如注册机制、使用次数、时间限制等。有的加密壳也涉及到了虚拟机保护技术。
二、脱壳技术1 ...
汇编语言基本知识
引言 汇编语言是直接在硬件之上互作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。这段部分是枯燥的基础知识。
1.1机器语言
机器语言是机器指令的集合。
机器指令展开来讲就是一台机器可以正确执行的命令。
机器码:以1、0组合而成的,能让cpu直接解读的数据
1.2汇编语言的产生
汇编语言的主体是汇编指令。
汇编指令和机器指令的差别在于指令的表示方法上。汇编指令时机器指令便于记忆的书写格式。
汇编指令是机器指令的助记符。
例:mov AX,BX 即寄存器BX的内容送到AX中(这样的写法与人类语言接近,方便阅读与记忆
寄存器 简单的讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器。AX、BX均为其中一个寄存器的代号。值得注意的是,寄存器并不是CPU的高级缓存。
基本流程
示例:
如图可看到C++语句:X = 0.5 * (x + a / x) 的汇编语言,左列为机器指令,右列为对应的汇编语言,可发现两者一一对应。
1.3汇编语言 ...
可执行文件的相关概念
1.逆向工程概念CTF逆向工程是指对没有源代码的程序进行分析,以理解其行为、算法,并找出隐藏的信息或漏洞。它涉及静态分析、动态调试、反汇编、反编译等技术,是CTF竞赛中重要且具有挑战性的环节。
2.可执行文件1.可执行文件的形成过程
源代码编写:用户使用高级编程语言(如C、C++或Python)编写源代码。
编译:源代码被输入到编译器中,编译器将其转换成汇编代码。这一步骤中,源代码中的高级语言结构被转换为机器可以理解的低级指令。
汇编:汇编器接收汇编代码,并将其转换成机器代码,生成对象文件。这些对象文件包含了程序的机器指令,但尚未形成完整的可执行程序。
链接:链接器将分散的各个对象文件相互连接,并加入必要的库文件和启动代码,最终生成一个完整的可执行文件。在Windows下,这种文件通常具有PE(Portable Executable)格式;在Linux下,则是ELF(Executable and Linkable Format)格式。
2.不同的可执行文件1.文件格式与标准
Windows PE文件:PE(Portable Executable)格式是Wind ...


