当前位置:网站首页>[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 .
边栏推荐
- 如何在HarmonyOS应用中集成App Linking服务
- Redis summary
- Other 7 features of TCP [sliding window mechanism ▲]
- 注解@ConfigurationProperties的三种使用场景
- 数据中台落地实施之法
- Opencv learning notes 1 -- several methods of reading images
- Rainbow 5.7.1 supports docking with multiple public clouds and clusters for abnormal alarms
- 23 Chengdu instrument customization undertaking_ Discussion on automatic wiring method of PCB in Protel DXP
- 2-3 lookup tree
- Go语言中,函数是一种类型
猜你喜欢
Implement your own dataset using bisenet
[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?
What is the method of manual wiring in PCB design in 22protel DXP_ Chengdu electromechanical Development Undertaking
Merge sort and non comparison sort
Rsync remote synchronization
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]
指针进阶,字符串函数
All about PDF crack, a complete solution to meet all your PDF needs
Splunk query CSV lookup table data dynamic query
联想混合云Lenovo xCloud:4大产品线+IT服务门户
随机推荐
Leetcode 1984. Minimum difference in student scores
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
AVL平衡二叉搜索树
Greenplum6.x常用语句
国标GB28181协议视频平台EasyGBS新增拉流超时配置
[hard core science popularization] working principle of dynamic loop monitoring system
Merge sort and non comparison sort
登山小分队(dfs)
关于基于kangle和EP面板使用CDN
如何理解分布式架构和微服务架构呢
MES系統,是企業生產的必要選擇
Through the "last mile" of legal services for the masses, fangzheng Puhua labor and personnel law self-service consulting service platform has been frequently "praised"
Analysis of using jsonp cross domain vulnerability and XSS vulnerability in honeypot
数据库存储---表分区
Xcit learning notes
Quick sorting (detailed illustration of single way, double way, three way)
数据分片介绍
注解@ConfigurationProperties的三种使用场景
数据分析方法论与前人经验总结2【笔记干货】
Three series of BOM elements