【VM训练】- 05:混沌控制流 (Control Flow Flattening)

一、题目背景

经典的代码混淆技术:控制流平坦化(OLLVM/VMP 常用)。原本清晰的 if-else 或顺序执行逻辑,被切碎并扔进一个巨大的 switch-case 状态机中。执行顺序由一个状态变量(State Variable)控制。

  • 难度: ⭐⭐⭐⭐(高级)

  • 适合人群: 需要提升逆向逻辑重组能力,对抗代码乱序的学员。

  • 训练重点:

    • 识别状态机调度器(Dispatcher)。

    • 追踪状态变量(State/Block ID)的变化轨迹。

    • 使用动态调试(打条件断点)记录真实的执行流。

二、程序说明

  • 平台: Win32 x86

  • 类型: 控制台程序

  • 是否加壳: 无壳(逻辑平坦化)

  • 目标: 画出程序的真实流程图,解出正确密码(4位长度)。正确提示为:Flattening completely recovered!

三、解题提示

  • IDA F5 出来是一个巨大的 while(true) { switch(state) }

  • 不要顺着代码的物理顺序看,要盯着 state 变量下一步被赋值成了什么。

  • 密码校验被拆分成了 4 个完全没有顺序的块。

下载

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容