【vc++精品源码栏目提醒】:网学会员--在 vc++精品源码编辑为广大网友搜集整理了:反编译中的静态库识别研究pdf - 毕业设计绩等信息,祝愿广大网友取得需要的信息,参考学习。
反编译中的静态库识别研究 许向阳 雷 涛 朱 虹 (华中科技大学计算机学院数据库与多媒体技术研究所,武汉 430074 ) E-mail:popleitaosina.com 摘 要 库函数的识别是整个反编译过程的一个重要组成部分。
根据可执行程序的静态库的识别过程,该文提出了在这 个过程出现的中间代码生成、伪函数模块识别、库函数提取、库函数识别等问题,并给出了对这些问题的解决方法。
这些 方法在实际的静态库的识别中得到很好的应用。
关键词 反编译 静态库 库函数 伪函数 ( 文章编号 1002-8331- 2004 )09-0037-03 文献标识码 A 中图分类号 TP309 A Study of Static Library Functions Recognition in Decompiling Xu Xiangyang Lei Tao Zhu Hong (Dept. of Computer Science and Technology , Huazhong University of Wuhan 430074) Science and Technology , Abstract: Recognising library functions is a very important part during decompilation.Analysing the whole process of recognising static library functions for executive program,this paper analyses some problem appeared during this course and deals with the solutions to these problems, such as generating middle codes,recognising pseudo-funcion modules, extracting and recognising library functions.These methods is well applied during recognising the practical static library functions. Keywords: decompile ,static library ,library function ,pseudo-function1 引言 图 1 的可执行程序就是需要被反编译的程序,中间代码是 反编译是一种将目标代码转化成为等价的高级语言形式 指等价于原可执行程序的汇编代码来表示的一种代码,模块结代码的技术,它是软件逆向工程中的一个重要组成部分。
反编 构图是指识别出中间代码中各个伪函数模块后的表达形式,静译分为基于可执行程序的反编译和基于虚拟机指令的反编译, 态库集是指该程序引用的所有已定义库函数集合。
国外对于反编译的研究已经有 30 多年的历史了,但是对于可 2.1 程序的中间代码生成执行程序的反编译至今还没有成熟的实用系统 1~3,国内研究了 程序的中间代码就是一种由汇编指令组成的与原程序等基 于 TC2.0 生 成 的 可 执 行 程 序 的 反 编 译 4; 些 对 于 库 函 数 识 这 价的代码。
关于中间代码生成,结合汇编语言的特性以及程序别中的很多关键问题比如库函数提取等都没有阐述。
运作的硬件平台,有以下 2 点: 库函数的识别是整个反编译过程的一个重要组成部分,按 (1 )每条可执行指令与汇编代码之间是一种双射。
可执行照库函数的装载形式,库函数又分为动态库和静态库两大部 指令就是由 0 、 组成的代码, 1 这种映射是由指令体系结构的特 按 分分; 照库函数的编制方式, 为编译器自带的系统库和定制 点决定的;这里就以常用的 Intel 指令体系结构进行考虑,关于的第三方库,该文主要解决编译器自带的系统静态库的识别问 这种映射的细节可以参考文献 5~7 。
题。
以下讨论这个过程碰到的问题以及解决之法,并提出一种 (2 )可执行代码是由许多可执行指令组成的一种确定性序有效识别静态库的启发算法。
列。
一旦对于源程序的编译完成,这种序列就不会改变。
这种确 定性序列也叫可执行程序的代码部分,它是可执行程序的一部2 库函数识别的过程 分, ( 可以参考 PE Portable Executive )文件格式 8。
伪 程 库函数识别包括中间代码生成、 函数模块的识别, 序 所以, (1 ) (2 ) 由 和 可以断言,对于任意一个可执行程序,必所引用的静态库函数集等等,其详细流程如图 1 所示。
定存在一个唯一中间代码表示形式,这种转化规则是确定的。
这种转化其实就是反编译中的反汇编过程 9。
根据从可执行程 序中提取出来的可执行代码, (1 ) 按照 所说的这种对应法则,可 以实现程序的这种