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
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看环境中安装了哪些包,默认是base环境
conda list
# 查看当前存在哪些虚拟环境
conda env list
# 创建虚拟环境
conda create -n [env_name] python=x.x
# 或者克隆
conda create -n your_name --clone env_name
# 激活或者切换虚拟环境
conda activate [env_name]
# 退出虚拟环境
conda deactivate
# 删除虚拟环境
conda remove -n [env_name] --all

Conda 的服务器在国外,安装多个packages时,下载速度经常很慢,清华TUNA镜像源有Anaconda仓库的镜像,将其加入conda的配置即可

1
2
3
4
5
# 设置国内镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

如何学 re?

动手写代码

一定一定一定要自己动手写代码,锻炼代码能力,包括 C/C++、 Python 代码,安卓还涉及到 Java、JavaScripts

另外,平时多积累一些密码算法的板子,如 TEA 系列算法、RC4 算法、AES 算法等

CyberChef

多刷题

西电CTF平台(里面的 MoeCTF 比赛比较适合新生)

BUUOJ

CTFshow

NSSCTF

多看文章

吾爱破解

看雪论坛