/ecnu-sa-labs

Lab sessions for the software analysis course at East China Normal University.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Labs for "Software Analysis, Testing and Verification"

This repository provides the lab sessions for the course "Software Analysis, Testing and Verification (软件分析与验证前沿)" at East China Normal University.

We welcome any comments or contributions. Feel free to create issues and pull requests.


Course (课程内容)

Lectures Title Extended Readings Relevant Links
lec1 Course Introduction: Program Analysis soundiness, false positives/negatives
lec2 The LLVM Framework LLVM
lec3 Software Specifications oracle problem, programs, tests, and oracles, code coverage effectiveness, mutation testing effectiveness, testing techniquessanitizers
lec4 Random (Fuzz) Testing classic fuzz testing, havoc, fuzzing book, Fuzzing101 AFL, AFL++, LibFuzzer
lec5 Property-based Testing

Lab Instructions (教程指引)

Before preceding the labs, you need to setup the lab environment. Checkout this lab tutorial. Later, you can access the lab tutorials for our labs in the following table.

Quick Notes

  • Get familar with using VScode, Git, Linux shell commands and Docker. If you are not familar with these stuffs, go and grab The Missing Semester of Your CS Education.
  • Always be patient and careful when reading the documentation (e.g., lab tutorial, instructions).
  • Before rasing questions to TAs, please double check with the documentation.
Labs Lab Title Relevant Research Projects
lab1 Introduction to Software Analysis
lab2 The LLVM Framework
lab3 Random Testing / Fuzzing
lab4 Property-based Testing Kea
lab5 Delta Debugging
lab6 Dataflow Analysis
lab7 Pointer Analysis
lab8 Taint Analysis BinPRE
lab9 Dynamic Symbolic Execution SmartRocket TestGrid

Troubleshooting (常见问题汇总)

  • 第一次配置实验课环境(lab tutorial),由于需要下载docker image,请使用科学上网工具。Windows上的科学上网工具有:Clash for windows, Clash Meta, V2rayN(请打开tun模式实现接近于全局的代理)。
  • 如果你的电脑系统是Mac,且使用的是Mac M芯片,可能需要安装Rosetta (Rosetta enables a Mac with Apple silicon to use apps built for a Mac with an Intel processor)。另外,确认Docker的Settings -> General里是否已经勾选上Use Rosetta for x86_64/amd64 emulation on Apple Silicon

Contributors (贡献者)

主讲老师:苏亭孙海英

We thanks the TAs and students who have contributed to this course design:

明孟立, 黄杉, 麻恩泽, 徐瑞阳, 王祺昌, 方润渲, 梁锡贤, 沈佳伟

林童奕凡、高雨宸

Acknowledgement: The lab sessions are currently developed based on the cis547 course, and we are further designing and refining the materials based on our ideas.