欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

aix xcoff可执行文件分析1

程序员文章站 2022-03-10 08:23:36
...

注意:分析中没有明确说明32bit,64bit模式,仅记录本人学习过程,其数据、说明可能不正确、准确,请自行核实。如果许久以后,恰逢本人无聊,也许会重新整理一个标准的说明系列出来,当然,这是遥遥无期的事情,您千万别有期待。

如果有对xcoff兴趣的同道想深入分析,欢迎留言探讨。

看起来XCOFF比ELF复杂不少,但ELF有自己的先进特点,例如自带interceptor,所以所谓复杂,并不代表xcoff有多好,只能说xcoff是老古董,一步一步扩展走过来,尾大不掉,为了兼容,只能如此了。xcoff的各种说明,介绍里有好多语义不祥的信息,本人也踩了无数的坑,如有可能,在此为后人做个垫脚石,希望大家走得轻松一些。
第一个天坑,好多概念差不多,但ibm文档里前后说明很模糊,例如重定位表,不同的段可能都有(两种?三种?),但定义稍有差别,有10bytes,有12bytes;另一种情况是定义、说明其实是一样的,但在不同的地方,不同的属主。我不幸入坑,找错地方了,结果数据对不上。。。总之,要多看定义,写下来,写清楚,画图,精确,这样就没问题了。后面先上一个总图。
第二个小坑,loader是个描述section,并不包含真实可执行代码或数据,我看了loader以为就是被加载的。。。然后翻前翻后找为何有load text section,却没有load loader section的过程?
第三个小坑,section和segment是没关系的,甚至非aix(指power linux)操作系统可能都没有segment的概念。这个坑还没填平,我继续研究中。
用了差不多一星期,才对应上基本的section,relocation table,symbol file string和symbol file id,还差toc,symbol string,希望后面可以快一点。

    _________________________________________       
    |_______________HEADER_DATA_____________|
    |                                       |
    |       File Header                     |    
    |.......................................|
    |                                       |
    |       Auxilliary Header Information   |   
    |_______________________________________|
    |       ".text" section header          |
    |.......................................|
    |       ".pad" section header           |
    |.......................................|
    |       ".data" section header          |
    |.......................................|
    |       ".bss" section header           |
    |.......................................|
    |       ".loader" section header        |
    |.......................................|
    |       ".typchk" section header        |
    |.......................................|
    |       ".debug" section header         |
    |.......................................|
    |       ".except" section header        |
    |.......................................|
    |       ".info" section header          |
    |_______________________________________|
    |______________RAW_DATA_________________|
    |       ".text" section data            |
    |               (rounded to 4 bytes)    |
    |.......................................|
    |       ".pad" section data             |
    |               (file alignment)        |
    |.......................................|
    |       ".data" section data            |
    |               (rounded to 4 bytes)    |
    |.......................................|
    |       ".loader" section data          |
    |.......................................|
    |       ".typchk" section data          |
    |.......................................|
    |       ".debug" section data           |
    |.......................................|
    |       ".except" section data          |
    |.......................................|
    |       ".info" section data            |
    |_______________________________________|
    |____________RELOCATION_DATA____________|
    |                                       |
    |       ".text" section relocation data |
    |                                       |
    |.......................................|
    |                                       |
    |       ".data" section relocation data |
    |                                       |
    |_______________________________________|
    |__________LINE_NUMBER_DATA_____________|
    |                                       |
    |       ".text" section line numbers    |
    |                                       |
    |_______________________________________|
    |________________SYMBOL_TABLE___________|
    |                                       |
    |       ".text", ".data" and ".bss"     |
    |               section symbols         |
    |                                       |
    |_______________________________________|
    |________________STRING_TABLE___________|
    |                                       |
    |       long symbol names               |
    |_______________________________________|
相关标签: aix XCOFF aix