寻C++编译过程论文一篇,谁有?
具体要求有C++编译器的编译过程原理。
具体要求有C++编译器的编译过程原理。
答案:基于开放编译的C_程序静态分析机制
摘要
随着软件系统的日益复杂,软件开发、维护以及进化的大部分工作和主要成
本集中在对现有系统的理解上。逆向工程是一种辅助程序理解的重要手段,是软
件工程的一个重要分支,它通过抽取程序的静态信息和动态信息来抽象其高层表
示,辅助程序理解。
本文介绍了软件逆向工程的基本原理及研究现状,深入分析了基于反射技术
的开放编译器OpenC++。通过修改源代码、扩充MOP接口,成功地把OpenC++
改造成为程序分析工具。通过该工具对目标系统进行深入的静态分析获得的信息
不仅可以用来恢复系统的静态模型,也可以用来直接恢复出符合UML2.0标准的
序列图和辅助对目标系统的植入。
论文中提出的所有方法、算法均已在XDRE(XiDian Reverse Engineering,西
电逆向工程)工具中实现。
关键词:面向对象逆向工程开放编译反射植入序列图stract
For the complexity of software system,the main works of software development,
maintenance and evolution have been focused on the comprehension of existing systems.
Reverse engineering is an effective method to program comprehension,and it has been
a significant research branch of software engineering.It creates representations of the
system at a higher level of abstraction to assist program comprehension by extracting
the static information and dynamic information from the program.
This 易做图 begins with an introduction of the principles and applications of
software reverse engineering,and discusses the open compiler of OpenC++in detail,
which is based on the reflection technique.By means of source code modification,MOP
extension,this 易做图 turns OpenC++into a program 易做图ysis tool,though which we can
extract the static information to recover not only the static model of the target system
but UML2.0 sequence diagrams of the target system.The tool can assist program
instrumentation too.
All of the algorithms and methods provided in this 易做图 have been implemented
in a tool named XDRE(XiDian Reverse Engineering).
Key word:Object-Oriented,Reverse Engineering,Open Compiler,Reflective
Instrumentation,Sequence Diagram目录
摘要................................................................................................................................1
Abstract........................................................................................................................1
第一章绪论................................................................................................................1
1.1逆向工程........................................................................................................1
1.1.1逆向工程的重要性...............................................................................1
1.1.2逆向工程研究方法和目标...................................................................2
1.1.3国内外逆向工具现状...........................................................................2
1.2项目背景........................................................................................................4
1.3项目工作介绍................................................................................................6
1.3.1项目工作简介.......................................................................................6
1.3.2项目工作进展.......................................................................................7
1.4本文工作及论文结构....................................................................................7
第二章相关理论与技术............................................................................................9
2.1反射技术........................................................................................................9
2.1.1反射概念...............................................................................................9
2.1.2反射原理.............................................................................................10
2.1.3反射模型.............................................................................................12
2.2开放编译器OpenC++.................................................................................14
2.2.1 OpenC++简介....................................................................................14
2.2.2 OpenC++的工作原理........................................................................15
2.2.3 OpenC++对静态解析的支持............................................................15
2.2.4 OpenC++MOP分析..........................................................................18
2.3 UML 2.0........................................................................................................19
2.3.1 UML概述.............................................................................................19
2.3.2 UML2.0中序列图的改进...................................................................20
第三章类信息的抽取方法......................................................................................23
3.1对OpenC++的扩展策略.............................................................................23
3.2类信息的抽取..............................................................................................25
3.2.1正确的区分结构、联合、类和模板.................................................25
3.2.2 OpenC++中与类信息提取相关的接口............................................25
3.2.3获取属性和方法返回值的类型.........................................................26
3.2.4为类信息的分层抽象提供支持.........................................................26
3.3类信息的存储..............................................................................................26
3.4实例分析......................................................................................................27
3.4.1测试用例.............................................................................................27
3.4.2结果分析.............................................................................................28
3.5本章小结......................................................................................................28
第四章序列图信息的抽取方法..............................................................................29
4.1传统序列图恢复方法..................................................................................29
4.2 UML2.0序列图相关概念............................................................................30
4.2.1序列图的主要构成要素.....................................................................30
4.2.2框架元件(Frame Element).........................................................31................................................31
4.3对OpenC++的扩展策略.............................................................................32
4.4静态分析抽取序列图信息..........................................................................33
4.4.1抽取序列图信息的算法.....................................................................34
4.4.2对动态方式的支持.............................................................................36
4.4.3静态程序依赖图的定义.....................................................................38
4.4.4静态程序依赖图信息的获取.............................................................40
4.5实例分析......................................................................................................42
4.5.1测试用例.............................................................................................42
4.5.2结果分析.............................................................................................42
4.6本章小结......................................................................................................45
第五章总结与展望..................................................................................................47
致谢..................................................................................................