当前位置:网站首页>[Nanjing University] - [software analysis] course learning notes (I) -introduction
[Nanjing University] - [software analysis] course learning notes (I) -introduction
2022-07-07 08:42:00 【Xihang】
List of articles
Nanjing University Static program analysis
introduction
1. program language and static analysis

programing language :
- theory
- Language design
- Type system
- Semantics and logic
- …
- Environmental Science
- compiler
- Runtime system
- …
- application
- Program analysis
- Program validation
- Program synthesis
- …
background : In the past decade , The core of language is basically unchanged , But the program has become significantly larger and more complex ;
Challenge : How to ensure the reliability of large-scale and complex programs 、 Security and other commitments
2. why we learn static analysis
The reliability of the program reliability:
- null pointer dereference Null pointer reference
- There is no reference define, Will bring a lot bug
- memory leak Memory leak
- malloc No, free, Too much memory will lead to crash
The security of the program security:
- private information leak Disclosure of private information
- injection attack Injection attack
Compiler optimization
- dead code elimination Dead code elimination
- code motion Code movement
Program understanding
- IDE call hierarchy Call level
- type indication Type indication
3. what is static analysis
Static analysis analyzes a program P to reason about its behaviors and determines whether it satisfies some properties before running P.
Static analysis through the analysis program P To infer its behavior , And running P Before determining whether it meets certain properties
- Does P contain any private information leaks?
- Does P dereference any null potinters?
- Are all the cast operations in P safe? Type conversion operators
- Can v1 and v2 in P point to the same memory location?
- Will certain assert statements in P fail?
- Is this piece of code in P dead(so that it could be eliminated)?
Rice theory Rice theorem : There is no way to determine whether a program satisfies some nontrivial properties .
Any non-trivial property of the behavior of programs in a r.e. language is undecidable
r.e. (recursively enumerable) = recognizable by a Turing-machine
Recursively enumerable languages are languages recognized by Turing machines
non-trivial Not simple , important
The above expression is a perfect static analysis It doesn't exist
From an academic point of view , One perfect Of static analysis There are two conditions that need to be met :
- sound:over approximate contain true
- complete: under approximate true contain

So we don't pursue perfect static analysis , It's about pursuing useful static analysis:
- Compromise soundness(false negatives) Compromise under reporting control
- Compromise completeness (false positives) Compromise false alarm control
Mostly compromising completeness: Sound but not fully-precise static analysis
Most static analysis pursues Soundness, It will cause false positives
Soundness is critical to a collection of important(static-analysis) applications such as compiler optimization and program verification.
Static analysis: ensure (or get close to) soundness, while making good trade-offs between analysis precision and analysis speed.
Make sure soundness, And make a trade-off between analysis accuracy and analysis speed
4. static analysis features and examples
Abstraction + Over-approximation
Abstract and over approximate
- abstraction
- over-approximation
- transfer function
- control flows
Example:

Determine the symbols of all variables in a given program : just 、 Negative or 0.
- T:unknow Positive but negative (over-approximation Over approximate )
- bottom:undefined, Divide by zero operation , Throw exception operation

transfer function It defines how to evaluate different program states on abstract values , And it should be defined according to the semantics of analysis problems and different program states

- 1 The problem is divide by zero 、 Throw an exception , It should be undefined;
- 2 The problem is that the subscript is negative , Throw an exception , It should also be for undefined
- 3 The problem is over-approximated, That is, false positives , In the actual procedure a=x+y=9, So it won't report an error , This boundary will be blurred in the process of abstracting into symbols , Cause false positives

Control flow analysis ,y The two values of are two branch, Taking different branches will make z Change the value of . And it is impossible to enumerate all paths in practice , The space is huge , therefore flow merging Is used by many static analysis .
边栏推荐
- 基本数据类型和string类型互相转化
- Splunk query CSV lookup table data dynamic query
- 国标GB28181协议视频平台EasyGBS新增拉流超时配置
- Gson转换实体类为json时报declares multiple JSON fields named
- [Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
- Redis summary
- Iptables' state module (FTP service exercise)
- Basic data types and string types are converted to each other
- 指针进阶,字符串函数
- [Yugong series] February 2022 U3D full stack class 005 unity engine view
猜你喜欢
![[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?](/img/ff/81a7b2ec08a6a422a5cf578c1fed13.jpg)
[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?

SSM integration

Virtual address space

Opencv learning note 4 - expansion / corrosion / open operation / close operation

单场带货涨粉10万,农村主播竟将男装卖爆单?

Input of mathematical formula of obsidan

One click deployment of highly available emqx clusters in rainbow

Rapid integration of authentication services - harmonyos platform

Implement your own dataset using bisenet

Open3d ISS key points
随机推荐
Three series of BOM elements
Laravel8 uses passport login and JWT (generate token)
PLSQL的安装和配置
Using nocalhost to develop microservice application on rainbow
[Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
Implement your own dataset using bisenet
2-3 lookup tree
Opencv learning note 5 - gradient calculation / edge detection
Exercise arrangement 2.10, 11
2-3查找樹
POJ - 3784 Running Median(对顶堆)
数据库存储---表分区
One click deployment of highly available emqx clusters in rainbow
FPGA knowledge accumulation [6]
Golan idea IntelliJ cannot input Chinese characters
Obsidan之数学公式的输入
Open3d ISS key points
Splunk query CSV lookup table data dynamic query
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
Other 7 features of TCP [sliding window mechanism ▲]