Skip to content

Repository files navigation

高校教学系列·程序分析:完整学习资料

这是一套按微信公众号官方合集 “高校教学系列-程序分析” 完整整理、技术校正并重组的中文学习资料。它不是文章摘抄,而是把理论文章、实验视频、官方 YASA 文档和固定源码证据合并成可学习、可练习、可复核的体系。

当前快照是否完整

截至 2026-08-28 04:06 UTC

  • 官方合集列出的文章:8/8 已归档
  • 正文内容图片:109/109 已下载并核验清单
  • 官方课程表列出 4 次理论课 + 3 次已发布实验课;再与微信合集中的 1 篇开课公告合并,形成 7+1 的完整对应;
  • 三次实验视频:3/3 已取证,共 6,403 秒、2,155 个 ASR 时间段;
  • 关键视频场景:92 帧(43/30/19),用于校正 ASR 中的技术名词和代码;
  • YASA 官方公开文档:21 篇,并以本地固定的 YASA-Engine 提交交叉核验。

合集仍标记 isupdating=1,所以这里的“完整”指该时间点官方已发布的 8 篇。课程最初规划的第四次 Web 框架适配实验尚未作为独立课程发布;第三次实验确实使用 Mux 框架适配作为 Checker 编写案例,二者不能混为一谈。

完整性证据、官方链接和顺序解释见:系列索引与完整性

从哪里开始

顺序 资料 学习目标
0 系列索引与完整性 先确认范围、课程顺序和证据边界
1 静态分析基础与中间表示 不可判定性、近似、soundness、CST/AST/CFG/3AC/SSA/LLVM/UAST
2 数据流分析 GEN/KILL、AE/RD/Live、Worklist、Call Graph、ICFG、上下文敏感
3 指针分析与抽象解释 points-to/alias、Andersen、格、区间、不动点、widening/narrowing
4 YASA 三次实验 AST/调用图/污点、UAST/Engine、Checker 实现与复现实验
5 公式与术语速查 集中复习公式、算法与术语
6 练习与参考答案 手算、解释题、YASA 设计题和综合项目

建议直接采用 六周学习路线,每周都有学习内容、动手输出和掌握标准。

知识主线

不可判定性与 Rice 定理
  ↓ 为什么必须近似
过近似 / 欠近似 / may / must / soundness 契约
  ↓ 在什么表示上计算
CST → AST/UAST → CFG → 3AC → SSA/LLVM IR
  ↓ 图上的不动点
AE / RD / Live → Worklist → Call Graph / ICFG
  ↓ 间接内存与过程调用
Points-to / Alias → Andersen 包含约束
  ↓ 统一数学框架
偏序 / 格 / 抽象域 → 不动点 → Widening / Narrowing
  ↓ 工程落地
YASA-UAST → Analyzer → Symbolic State → Checkpoint / Checker → Finding / Output

与官方 8 篇文章的对应

官方篇目 本资料位置
开课公告 00-系列索引与完整性.md、主笔记 1 的课程定位
基础概念 主笔记 1:不可判定性、近似、soundness/completeness
中间表示 主笔记 1:CST/AST/CFG/3AC/SSA/LLVM/UAST
数据流分析 主笔记 2:局部和过程间数据流
指针分析及抽象解释 主笔记 3:Andersen、抽象域和循环不动点
YASA 原理简介及功能演示 主笔记 4:第一讲
YASA 内部机制深入解析 主笔记 4:第二讲
掌握 Checker 编写艺术 主笔记 4:第三讲

微信合集的当前展示位置是 1→2→3→4→5→6→7→8,但课程学习顺序是 1→2→3→4→5→7→6→8;即实验“原理简介”先于“内部机制”。

辅助资料

  • 勘误与概念辨析:集中列出最危险的术语混淆和文章技术问题;
  • 参考资料:系列引用、YASA 官方入口、文档和固定源码链接;
  • 来源与复现说明:精简后的 Markdown 资料布局、抓取命令和完整性边界;
  • 微信原文可读归档:8 篇 GitHub 可读 Markdown 与正文必需的 109 张本地图;
  • .work/transcripts/:三次视频带时间戳 ASR,仅作检索线索;
  • .work/lesson-scenes/:视频场景帧和 contact sheet;
  • sources/yasa-docs/:21 篇官方公开 YASA 文档的 Markdown 快照,来源信息保留在 front matter;
  • .work/YASA-Engine/:源码核验快照。

证据标签

YASA 章节尤其强调版本和来源:

  • 【课】:微信文章、课程视频/画面明确给出的内容;
  • 【仓】:当前官方文档、固定源码或官方项目论文可核验;
  • 【推】:为了教学而做的解释或重建,不冒充课程原话;
  • 【缺】:公开材料确实不足,例如完整 UQL 规范、受登录保护的 PDF 正文、精确课程 commit。

ASR 会把 UAST、Call Graph、CheckerPack、Source/Sink 等词识别错,因此笔记只把转写当作时间索引,并用画面、官方文档和源码校正。

如何使用

  1. 每章先读“目标/主线”,再手算例子;
  2. 对照 公式与术语速查.md 复述集合包含关系和方程;
  3. 独立完成练习后再展开 <details> 中的答案;
  4. YASA 实验记录目标版本、命令、规则和输出,不把当前 API 倒灌成 2025 年课程原话;
  5. 遇到结论时明确:查询正例、近似方向、合并维度、终止策略和证据等级。

复现与自检

重新抓取官方合集:

python scripts/fetch_series.py

检查 Git 中保留的资料和 Markdown 链接;若本地仍有被忽略的视频证据,再追加严格检查:

python scripts/verify_materials.py
python scripts/verify_materials.py --require-work-evidence

视频、转写、场景和 YASA 文档的复现命令见 来源与复现说明。重新抓取可能改变快照;更新时必须比较 album_id、文章数量/msgidcontinue_flagisupdating,而不是只看网页标题。

使用边界

  • 本资料以释义、重算、重构和勘误为主,不替代公众号原文和视频;
  • 当前 YASA 文档/源码可能晚于课程现场版本,具体 API 以目标提交为准;
  • 第四次独立实验尚无官方发布,不会用普通 Mux/Django 文档伪造课程内容;
  • 静态分析结论始终依赖语言语义、外部模型和 soundness 契约,不能脱离前提使用。

About

高校教学系列《静态程序分析原理与实践》中文学习笔记、原始资料索引与 YASA 实验文档

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages