天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网>新闻>

Linux系统下病毒的研究

天极论坛 2003-09-09 17:04 我要吐槽
  注意:从两个表中可以看出,两种方式的指令使用不同的操作数寻址模式。但是,它们和动态连接器的接口是一样的。

  下一步,动态连接器和程序本身使用程序连接表和全局偏移表共同解析符号引用。

  1).当第一次建立程序的内存影象时,动态连接器会把全局偏移表的第二和第三个入口设置为特定的值。下面会对这些值进行介绍。

  2).如果程序连接表是位置无关的,需要把全局偏移表地址保存在%ebx中。进程影象中的每个共享目标文件都有自己的程序连接表,而且程序的执行流程改变时,也只能跳转到同一个目标文件的程序连接表入口。例如:一个程序foo,它的动态连接库为bar.so,它们都有自己程序连接表,那么foo正文段调用某个程序连接表入口时,只能跳转到foo文件自己的程序连接表,而不能转到bar.so的程序连接表中。因此,在调用程序连接表入口之前,函数调用代码应该设置全局偏移表的基址寄存器。

  3).为了便于描述,我们假设程序要调用另一个目标文件的函数name1,因此首先需要把程序执行控制权转移到标记为.PLT1的代码处。

  4).这段代码的第一条指令就是,跳转到name1在全局偏移表的入口地址。因为name1是在另一个目标文件中的调用,所以在初始化时,全局偏移表没有保存name1的真实地址,而只是保存了这段代码第二条指令pushl的地址。

  5).因而,程序会接着执行第二条指令,在栈压入一个重新定位的偏移值(offset)。这个重新定位的偏移值是重定位表中的一个32位的非负字节偏移值。这个特指的重定位入口是R_386_JMP_SLOT类型的,它的偏移值将指定先前jmp指令用到的全局偏移表的入口。重定位入口还有一个符号表索引,告诉动态连接器哪个符号被引用,在这个例子中是name1。

  6).在栈中压入重定位偏移值以后,程序接着就跳转到.PLT0,它是程序连接表的第一个入口。pushl指令在栈中压入第二个全局偏移表的入口(got_plus_4或者4(%ebx)),从而给动态连接器一个单字识别信息。程序接着跳转到全局偏移表的第三个入口中的地址(got_plus_8或者8(%ebx)),将控制权转移给动态连接器。

  7).当动态连接器获得控制权,它就会展开栈,读出指定的重定位入口,找出符号表的值,把name1的真正地址保存到全局偏移表的name1入口中,然后将控制权转移给目的目标。

  8).因此,如果再次调用name1,就会直接从程序连接表入口转移到name1,而不必再次调用动态连接器。也就是说,.PLT1的jmp指令将转移到name1,而不是接着执行push1指令。

  LD_BIND_NOW环境变量能够改变动态连接行为。如果这个环境变量不为空,动态连接器在把控制权交给程序之前会先为程序连接表赋值。也就是说,在进程初始化期间,动态连接器为R_386_JMP_SLOT类型的重定位入口赋值,以便在第一次调用时,不必通过动态连接器就能够跳转到目标地址。反之,如果这个环境变量为空,动态连接器就暂不为程序连接表入口赋值,不对符号进行解析和重定位,直到第一次调用一个程序连接表入口,才对其做相应的处理。这种方式叫作后期连接(lazy binding)方式。

  注意:后期连接(lazy binding)方式一般会大大提高应用程序的性能,因为不必为解析无用的符号浪费动态连接器的开销。不过,有两种情况例外。第一,对一个共享目标函数进行初始化处理花费的时间比调用正式的执行时间长,因为动态连接器会拦截调用以解析符号,而这个函数功能又比较简单;第二,如果发生错误和动态连接器无法解析符号,动态连接器就会终止程序。使用后期连接方式,这种错误可能会在程序执行过程中,随时发生。而有些应用程序对这种不确定性有比较严格的限制。因此,需要关闭后期连接方式,在应用程序接受控制权之前,让动态连接器处理进程初始化期间发生的这些错误。

  下面将对其细节做一些解释:

  因为在编译时共享库的调用不能被连接到程序中,所以需要对其做特殊处理。直到程序运行时,共享库才是有效的。PLT就是为了处理这种情况。PLT保存调用动态连接器的有关代码,由动态连接器对所需例程进行定位。

  可执行目标是调用PLT的某个入口来实现对共享库例程的调用,而不是直接调用共享库例程。然后,由PLT解析符号表示什么以及进行其它操作。

作者:责任编辑:)
请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电