← 返回文章列表

TECH · REVERSE ENGINEERING

CTF 逆向模型

先理解题目的基本流程

很多 CTF 逆向题会给出一个可执行文件。程序接收我们输入的一段内容,经过某种加密或校验算法处理,再将结果与程序内部保存的标准答案进行比较。

1. 拿到一个执行文件 2. 输入一串内容,可能是 flag,也可能是卡密 3. F(Input) = encryption_Input 4. Check(encryption_Input == encryption) 5. 输出校验结果

这里的 F 函数就是题目的核心。它可能会对输入进行异或、移位、替换,或者组合多种操作,最终生成一个临时结果 encryption_Input。

程序究竟在比较什么?

encryption 是程序中保存的标准答案,可能是原始 flag,也可能是 flag 经过变化后的结果。程序把我们的输入处理后得到的临时结果与它比较:

逆向的关键不是盲目尝试输入,而是还原程序的判断逻辑:它保存了什么标准答案,又是如何把输入变成最终结果的。

核心任务

面对这类题目,可以把目标拆分成两个方向:

  1. 把代码里的 encryption(标准答案)找出来。
  2. 弄清楚 F 函数的具体运作方式。

换个角度思考

既然 encryption 是程序最终期待的结果,那么下一个问题就是:什么样的输入,经过 F 函数后能够产生这个结果?

这就是从结果反推输入的过程。接下来可以结合字符串搜索、静态分析、动态调试和单步跟踪,逐步定位关键代码,理解每一步变换,再还原出满足条件的输入。