Skip to content

Rev Lab 2:VM 逆向

Rev 专题二:VM 逆向的实验部分作业分为出题解题两部分,理论部分的课件见 rev lec 2VM 逆向:造一台机器,拆一台机器

Lab 最高可加至 115 分。

出题(50% + bonus 5%)

出一个基于 VM CTF 逆向题目。

  • 题目附件压缩包(程序 + README/description10%
  • 出题 report 40%
  • report bonus:内容有人味 / 巧思;技术上如控制流复杂化、编码花活、反 trace/ 反符号执行、反侧信道 bonus 5%

评分细则:

评分项 占比
附件能在指定环境稳定运行(推荐 x86_64 Linux/Windows 10%
自定义 bytecode 格式 10%
一个解释器,能执行若干条虚拟指令 10%
flag / 输入校验的核心逻辑必须主要发生在 VM bytecode 10%
题目具备可解性(请开一个小节,写出或描述出合理的预期解法思路) 10%
report bonus:内容有人味 / 巧思;技术上如控制流复杂化、编码花活、反 trace/ 反符号执行、反侧信道 bonus 5%

出题不以代码规模、混淆强度或 " 能不能不被 AI 一把梭 " 作为唯一评价标准。只要 VM 架构自洽核心校验逻辑确实运行在 VM 题目可稳定复现,并且 report 讲清楚设计思路,就能拿到较高的基础分。

bonus 方向可以参考:反侧信道、控制流复杂化、藏特征(隐藏 dispatcher/state、又臭又长(加大 trace 分析的工作量)——挑一两个方向做深,比全都浅尝更有说服力。我们鼓励有设计意图 VM 题,而不是不可解、不可复现、或单纯堆工作量的题。

出题作业 DDL17 23 日中午 12

  • 请将出题后的题目(不含 report 和源码,即题目的呈现形式,建议打包压缩包)上传到 浙大云盘,按照其中的示例格式新建自己的文件夹。
  • 出题的 report 上传学在浙大,题目附件和源码也交一次。

解题(50% + bonus 10%)

解一道 VM 题(自解或互解

  • 题目附件 <1%(但得交)
  • writeup 50%
  • WP bonus 内容:有人味、展示试错过程 bonus 5%
  • WP bonus 技术:自动化反汇编脚本、VM 模拟器、trace 分析等 bonus 5%

评分细则:

评分项 占比
正确识别程序中的 VM 特征,定位到相应部分 10%
VM 架构恢复(bytecode 格式、opcode 语义、状态存储方式:栈 / 寄存器 / 其他巧思) 30%
程序语义恢复并逆向求解出正确 flag 10%
WP bonus 内容:有人味、展示试错过程 bonus 5%
WP bonus 技术:自动化反汇编脚本、VM 模拟器、trace 分析等 bonus 5%

writeup 要求自包含、从解题者角度写:

  • 写清楚对应的题目、出题人信息
  • 完全从题目给出的信息逆向出来(这也要求出题人不能出不可解的题,例如不可逆加密)
  • 自包含:没看过题目、没做过研究的人也能看懂——需要解释现象和思考过程,不能只贴结论
  • 解题很少一帆风顺,踩过的坑、遇到的难关值得分享;一路到底、隐去所有探索分支的 writeup 不适合经验交流

可以找同学解对方出的题(比较有趣,也可以自己出自己解——但题解同样要从解题者角度写。

解题作业 DDL27 30 日晚 23:59

浙大云盘选择某个文件夹(示例除外)下你感兴趣的一道题目进行解答,并按照上述要求写题解。本部分评分几乎全在题解,请用心打磨slides 上有一些 wp 的示例可供参考风格。

  • 由于云盘上的题目是同学们自行上传的,若解题时遇到问题,在确认不是自行能解决的情况下,欢迎自行联系出题人或助教。

关于 AI 使用

不禁止 AI 辅助写 report/writeup,但浓重的 AI 味会酌情扣分,有小巧思会酌情加分。交付前请自己通读、审查一遍——如果连自己都不想读下去,大概不会太高分。建议:

  • - 分结构:先讲清楚思路,再展开细节,不要一开始就淹没在细节里
  • 讲动机:不只讲 " 怎么做 ",也讲 " 为什么这么做 "
  • 详略得当:不影响思路的无趣细节可以略过,避免又臭又长
  • 言之有物:内容丰富度适中,不故意堆砌复杂度,也不能没东西可讲