然 PRFLPPRFL, 但 是 这 对 于 库 函 数 识 别 的 结 果 没 有 确定从 Lscan 开始的第一条 ret 指令的地址 Lend; 只 如 什么影响, 是增加识别过程的复杂度而已。
实际上, 果让 ( if Lstart 到 Lend 之间不存在跳转指令) PPRFL 为所有编译器所提供的库函数集, 库函数识别也是可行 return Lend; 但 这 要 的 , 是 其 复 杂 度 太 大 ; 也 是 设 计 PPRFL 的 初 衷 所 在 : 尽 取出 Lstart 到 Lend 之间所有跳转地址的最大值 Ljmp; 可能地找出包含 PRFL 的最小子集, 降低后续匹配的复杂度。
( if Ljmp≤Lend) 2.5 静态库函数集的提取 return Lend; 一 建 实际上, 个库函数就是一个伪函数模块; 立库函数集 LscanLjmp; 的过程,也就是提取每个伪函数模块的特征属性。
由于编译中 goto Begin ; 不 而 重定位的发生, 能直接提取其特征属性, 需要对这些特征2.3 单个库函数的提取 属性进行再加工,找出其中的不变量。
定义 D2 对于任何编译系统的自带的一个库函数,把其函 定义 D4 在对静态库的编 译 连 接 中 , 其 中 不 发 生 地 址 重数名、对应的中间代码序列这些属性称为该函数的特征属性。
定位的指令,把这些指令称为有效操作指令。
这些指令在编译 这 一个编译器所自带的所有库函数都在一些库文件中, 些 连接中是直接从库文件中写入到目标文件中,不作任何操作数 所库文件都是 标 准 的 COFF 文 件 结 构 形 式 12; 以 提 取 库 函 数 实 的修改(地址重定位)。
相应的有有效操作数的概念,就是指库质上就是从库文件中提取其所包含的所有库函数特征属性的 函数的联编前后,该操作指令的相应的操作数不发生变化。
凡一些相应数据结构 13。
反 有 是具有有效操作数的指令就是有效操作指令, 之, 效操作 对 事 实 上 , 于 任 意 给 定 一 个 为 COFF 结 构 , 以 提 取 出 其 可 指令必定具有有效操作数。
该中包含一个指向第一个库函数的指针 ptr, ptr 指针实际内容 更进一步,中间代码的指令分为有效操作指令和非 有 效 操又是指向一个包含实际库函数中间代码的结构指针(如图 2 所 而 其 作指令; 对于实际联编的库函数而言, 非有效操作指令集示)。
通过反复读取每个 ptr 指针的内容,就可以获取该库文件 的 势 很 小 , 常 为 1~5 , 个 集 合 根 据 编 译 过 程 的 目 标 代 码 生 通 这所包含的所有库函数的特征属性了。
成过程可以求出 10。
对于任意一个中间代码的指令 P, ( , 设其操作码为 OP P) 其 ( , ( 。
对于任意一个伪 操作数集为 ON P) 该指令的长度为 OL P) 函数模块 Fi, ( , 不妨设其指 令 的 总 长 度 为 FLEN Fi) 其 指 令 序 列 ( , ( 1 F 2 n (其 中 个 数 SE Fi) 因 此 其 所 有 的 指 令 序 列 就 是 Fi,, i,...Fi,)T ( ) ( ( 1 , ( nSE Fi) 。
所有的指令的操作码序列就是 OP Fi) OP Fi,) ( 2 ...OP ) ( )操 ( OP Fi,) (Fi,)(其 中 nSE Fi) , 作 数 序 列 就 是 ON Fi) n T 图2 ( ( 1 , ( 2 ...ON n ) ( )则 ON Fi,) ON Fi,) (Fi,)( 其 中 n SE Fi) , 有 Fi, T k ( Se Fi ) .
上一篇:
股票 华夏资源淘宝小店光盘产品目录
下一篇:
计算机科学与技术专业毕业论文例文