主权项 |
一种基于中间语言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):函数体解析分析代码的结构,判断代码结构类型并析取代码语义。 |