Software Analysis Basics
Background and Basics
Test oracle: a mechanism for determining whether software executed correctly for a test.
Differential test: Provide the same input to similar applications, and observe output differences.
Metamorphic testing: Provide the manipulated inputs to same application, and observe if output differences are as expected.
Program Analysis Basics
Abstract syntax tree(AST): Represents the abstract syntactic structure of a language construct.
Control flow graph(CFG):
- Divide the program into basic blocks.
- Basic blocks: A sequence of straight-line code that can be entered only at the beginning and exited at the end.
- Connect basic blocks together to generate CFG.

![[Review] Assisting Static Analysis with Large Language Models: A ChatGPT Experiment](/blog/images/42/cover.png)
![[Review] Detecting Missed Security Operations Through Differential Checking of Object-based Similar Paths](/blog/images/41/cover.png)
![[Review] GPTScan: Detecting Logic Vulnerabilities in Smart Contracts by Combining GPT with Program Analysis](/blog/images/40/cover.png)
![[Review] MoonShine: Optimizing OS Fuzzer Seed Selection with Trace Distillation](/blog/images/39/cover.png)
![[Review] One Simple API Can Cause Hundreds of Bugs: An Analysis of Refcounting Bugs in All Modern Linux Kernels](/blog/images/38/cover.png)