发明名称 基于中间语言IL的遗产软件结构析取方法
摘要 本发明公开了一种基于中间语言IL的遗产软件结构析取方法,属软件工程的软件进化研究领域。本发明所述方法包括如下步骤:首先,通过VS(VisualStudio2010)提供的ILDASM程序生成IL文件;其次,分析软件程序信息,进行程序集初始化、初始化类、初始化函数;最后对函数体解析分析代码的结构,判断代码结构类型及析取代码语义,实现提取程序。本发明能够有效地解析出DotNet遗产代码的语义,可实现DotNet遗产代码的复用和集成,方法简单,复杂度低。
申请公布号 CN102866893A 申请公布日期 2013.01.09
申请号 CN201210357744.X 申请日期 2012.09.24
申请人 南京工业大学 发明人 李晓丽;杜振龙
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 朱小兵
主权项 一种基于中间语言IL的DotNet遗产软件结构析取方法,其特征在于包括如下步骤:步骤(1):通过Visual Studio软件提供的ILDASM程序,将OCX、EXE、DLL、SYS和COM格式的类型文件生成中间语言IL文件,所述中间语言IL文件是PE类型文件;步骤(2):定位至PE文件的.text节中的#~位置,进行以下处理:A、通过在#~流中查找.class关键字,为每一个.class关键字构建对应一个类,进行类名初始化;B、通过在#~流中查找.assembly关键字,建立程序集名称,进行程序集初始化;C、通过在#~流查找.assembly extern,从每个.assembly extern后面的内容中解析出引用类;步骤(3):根据.field字段初始化全局变量的定义,基于.method关键字和括号匹配原则查找类的函数来完成初始化类方法;步骤(4):初始化非类成员函数,具体如下:a,查找.method关键字,对该关键字后的内容进行析取,确定非类成员函数名称;b,识别中间语言IL的函数类型是静态函数还是实例函数;判断含有指令.entrypoint的函数为程序集的入口函数;c,根据函数所用变量初始化函数体的局部变量,初始化程序全局变量和函数输入参数;d,通过去除无意义的指令和数据完成函数体代码预处理;分开存放指令地址和指令数据,建立二者的对应关系;步骤(5):函数体解析分析代码的结构,判断代码结构类型并析取代码语义。
地址 211816 江苏省南京市浦口区浦珠南路30号