CTF-Reverse工具与环境配置
CTF-Reverse工具与环境配置
什么是 re?
用《逆向工程核心原理》中的定义
软件逆向工程是一种探究应用程序内部组成结构及工作原理的技术,运用逆向分析技术, 窥探程序内部结构, 掌握其工作原理。

逆过来就是
识别程序文件的类型 ---> 利用合适的反编译工具将程序还原成流程图 or 伪代码 ---> 静态分析反编译后的程序 or 动态调试程序 ---> 根据分析结果获得 flag
知识储备
- 基础课程——C 语言、数据结构、计算机系统基础及实验
- 必要语言——C/C++、Python、Java(可选)、JavaScripts(可选)
- 扩展知识——基本 x86 汇编指令、常用加解密算法、可执行程序相关知识、cmake
查壳工具
Exeinfo PE
正常二进制程序

加了 UPX 壳的

DIE
正常二进制程序

加了 UPX 壳的

PEiD
自行下载体验
逆向必备神器——IDA Pro
吾爱破解下载
插件下载
在 Github 上下载后放到 IDA 安装目录下的 plugins 文件夹中即可
findcrypt
识别算法的插件,需要 Python 环境,IDA9.0 不自带 Python,建议自己下载一个放在 IDA 安装目录下

patching
keypatch 的替代,keypatch 生成的汇编代码有的时候会变长,而且目前已经停更,patching 在持续更新中
obpo
反ollvm混淆的插件,目前在 Github 上已 archived(已归档)
动态调试工具
x64dbg
适用于 windows 平台的 32 位/64 位调试器

Ollydbg
也可在吾爱破解下载,同样是适用于 windows 平台的调试器
IDA
一般来说,简单的调试在 IDA 中就可以进行,方便快捷;同时 IDA 还可以进行 Linux 下的 elf 文件动态调试,建议新手可以先学 IDA 的动态调试
文件编辑器
010editor
自行检索资源下载,安装需要的文件类型的模板

winhex
自行下载体验
环境配置
C/C++ 环境配置
首先分清楚 编译器(Compiler) 与 IDE(Integrated Development Environment,集成开发环境) 的区别
编译器是

IDE 是

GCC 编译器
GCC (GNU Compiler Collection) 是 GNU 项目中的编译器集合,支持多种编程语言,包括 C、C++、Fortran、Ada 等。它是开源且跨平台的,广泛应用于 Linux 和其他操作系统中

Windows 中的 GCC
如果按照老师上课教的去下载 IDE,老师会告诉你不需要自己配置 GCC 的环境,因为下载的 IDE 里自带了 MinGW,那么 MinGW 又是什么?
![]()
MinGW 是一个为 Windows 平台提供的 GNU 工具链,包含了 GCC 和其他工具,如 gdb 调试器,MinGW 的目标是为 Windows 提供一个本地的编译器,使开发者能够使用 GCC 工具集进行 Windows 开发
GCC 本身是跨平台的,支持多种操作系统,主要用于 Linux、macOS 等类 Unix 系统的开发,但也能在 Windows 上使用,通常需要通过 Cygwin 或 MinGW 等工具来运行
环境变量配置
一般下载 codeblocks 或 MinGW 会自动配置

演示

MSVC 编译器
MSVC(Microsoft Visual C++) 是微软提供的 C 和 C++ 编译器,作为 Visual Studio 集成开发环境的一部分,它在 Windows 操作系统中广泛使用
特点
- 专为 Windows 系统优化
- 与 Visual Studio 集成,提供强大的调试和开发工具
- 支持 Windows API 和其他微软的库
下载与环境配置
推荐直接下载 Visual Studio,下载时勾选 “使用 C++ 的桌面开发”,自动勾选 MSVC 编译器下载(后期还可以通过 Visual Studio Installer 安装其他工具)

配置 PATH 环境变量

配置 INCLUDE 与 LIB 环境变量

INCLUDE 变量详情

LIB 变量详情

演示

其他编译器
Clang 编译器是一个由 LLVM 项目开发的编译器,支持 C、C++、Objective-C 和 Swift 等语言,它被设计为一个现代、高效的编译器,macOS使用 Clang 作为默认编译器
Python 环境配置
python 是 IDA 支持的脚本语言 IDC 的基础,了解并学习 python 不仅可以简化解题脚本的编写,而且方便在后续的学习中利用开源社区的现有工具以及入门 IDC
之前扫盲课已经介绍了一部分,这里主要说的是使用 Conda 进行 Python 版本管理
Conda 下载
常见命令
1 | # 查看环境中安装了哪些包,默认是base环境 |
Conda 的服务器在国外,安装多个packages时,下载速度经常很慢,清华TUNA镜像源有Anaconda仓库的镜像,将其加入conda的配置即可
1 | # 设置国内镜像 |
如何学 re?
动手写代码
一定一定一定要自己动手写代码,锻炼代码能力,包括 C/C++、 Python 代码,安卓还涉及到 Java、JavaScripts
另外,平时多积累一些密码算法的板子,如 TEA 系列算法、RC4 算法、AES 算法等
多刷题
西电CTF平台(里面的 MoeCTF 比赛比较适合新生)