<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > COFF文件分析提取器的實(shí)現(xiàn)及其應(yīng)用

          COFF文件分析提取器的實(shí)現(xiàn)及其應(yīng)用

          作者: 時(shí)間:2009-04-24 來(lái)源:網(wǎng)絡(luò) 收藏

          頭中的標(biāo)記包含了諸如大小端模式、是否為可執(zhí)行等信息,具體解釋見(jiàn)參考文獻(xiàn)。
          (2)可選頭:可選頭接在頭的后面,也就是從文件的Ox0014偏移處開(kāi)始。長(zhǎng)度可以為O。不同平臺(tái)的可選頭,長(zhǎng)度和結(jié)構(gòu)都不相同,TI DSP采用的可選頭長(zhǎng)度為28 B,用C的結(jié)構(gòu)描述如下:

          本文引用地址:http://www.ex-cimer.com/article/152521.htm


          (3)段頭:段頭緊跟在可選文件頭的后面(如果可選文件頭的長(zhǎng)度為0,它緊跟在文件頭后),一般包含多個(gè)段頭,數(shù)目就是文件頭中的usSection―Counter。它的長(zhǎng)度為48 B,用C的結(jié)構(gòu)描述如下:


          段頭可以說(shuō)是最重要的頭,文件器的核心就是用它來(lái)描述它的。一個(gè)COFF文件可以不要其它的節(jié),但文件頭和段頭這兩節(jié)是必不可少的。有必要詳述一下它的成員:
          cName用來(lái)保存段名,常用的段名有.text,.da―ta,.bss等。對(duì)于用戶(hù)自定義長(zhǎng)度超過(guò)8 B的段名,則為指向符號(hào)表的指針。
          uiVirtAddr是段數(shù)據(jù)載入或連接時(shí)的虛擬地址。對(duì)于可執(zhí)行文件,這個(gè)地址是相對(duì)于它的地址空間而言。當(dāng)可執(zhí)行文件被載入內(nèi)存時(shí),這個(gè)地址就是段中數(shù)據(jù)的第一個(gè)字節(jié)的位置。大多數(shù)情況下與uiPhyAddr相同。
          uiSecSize是段中數(shù)據(jù)的實(shí)際長(zhǎng)度,在讀取段數(shù)據(jù)時(shí)就由它來(lái)確定要讀多少字節(jié)。
          uiSecPointer是段數(shù)據(jù)在COFF文件中的偏移量,以絕對(duì)地址標(biāo)識(shí)。
          uiRelPointer是該段重定位信息的絕對(duì)地址,它指向了重定位表的1個(gè)記錄。
          uiLNOffset是該段行號(hào)表的絕對(duì)地址,它指向的是行號(hào)表中的1個(gè)記錄。
          uiRelSize是重定位信息的記錄數(shù),從uiRelPointer指向的記錄開(kāi)始,到第ulNumRel個(gè)記錄為止,都是該段的重定位信息。
          uiLNSize和uiRelSize相似,不過(guò)它是行號(hào)信息的記錄數(shù)。
          uiFlags是該段的屬性標(biāo)識(shí),與下載相關(guān)的標(biāo)識(shí)如表1所示。



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();