日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

备忘录——通过RVA计算文件位置

發布時間:2023/12/2 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 备忘录——通过RVA计算文件位置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

備忘錄——通過RVA計算文件位置

原創:Anders Liu

摘要:本文介紹了如何通過PE文件中某一項的RVA來計算其在文件中的位置。

參考文獻

ECMA-335——Common Language Infrastructure (CLI) 4th Edition, June 2006

范疇

該備忘錄描述了在分析PE(可移植可執行,Portable Executable)文件時,如何通過某一項的RVA確定該項在磁盤文件中的位置。

術語

  • 磁盤文件,文件——存儲在磁盤上的可執行文件。
  • 鏡像文件——內存中的一塊地址空間,其內容按照某種映射關系對應于磁盤文件中的內容。
  • RVA——相對虛擬地址(Relative VirtualSize Address)。某一項加載到內存之后,將其地址減去鏡像文件基地址后得到的值。
  • 文件位置——某一項在磁盤文件中,相對于文件起始位置(0字節)的位置值。

正文

以下是ECMA-335中對RVA的描述及文件位置的計算方法(Part II, 25, P299/556):

引用

The PE format frequently uses the term RVA (Relative Virtual Address). An RVA is the address of an item once loaded into memory, with the base address of the image file subtracted from it (i.e., the offset from the base address where the file is loaded). The RVA of an item will almost always differ from its position within the file on disk. To compute the file position of an item with RVA r, search all the sections in the PE file to find the section with RVA s, length l and file position p in which the RVA lies, ie s ≤ r < s+l. The file position of the item is then given by p+(r-s).

翻譯如下:

參考翻譯

PE格式經常使用術語RVA(相對虛擬地址,Relative Virtual Address)。RVA是將某一項加載到內存之后的地址,減去鏡像文件的基地址得到的值(也就是從文件加載到內存之后的基地址開始的偏移量)。一個項的RVA通常與其在磁盤文件中的位置不一樣。要計算一個RVA為r的項在文件中的位置,首先搜索PE文件中的所有節(section),找到一個RVA為s,長度為l的節,滿足s ≤ r < s+l;假設該節的文件位置為p,則項的文件位置可以由p+(r-s)給出。

具體計算方法參見圖1。

圖1 - RVA和文件位置的對應關系

從圖1不難看出文件位置(?)和RVA之間的對應關系:

  • ?=p+δ (參見圖左)
  • δ=r-s (參見圖右)
  • 因此,?=p+(r-s)

參考實現

清單1所示的方法給出了一種參考實現。需要注意的是,一定要在加載完所有節信息(即Section Headers)之后才能開始RVA到文件位置的換算。

清單1 - RvaToFilePosition方法

/// /// 將一個RVA換算成文件中的位置。 /// /// RVA。 /// 相對于文件開頭的偏移量。 /// 必須在調用了Load之后再調用該方法。 public UInt32 RvaToFilePosition(UInt32 rva) { // 檢查RVA位于哪個Section中 var sec = this.ImageSectionHeaders.FirstOrDefault(sechdr => rva >= sechdr.VirtualAddress.Value && rva < sechdr.VirtualAddress.Value + sechdr.VirtualSize.Value); if (sec == null) return 0; // 計算文件位置 var s = sec.VirtualAddress.Value; var p = sec.PointerToRawData.Value; return p + (rva - s); }

EOF.

轉載于:https://www.cnblogs.com/AndersLiu/archive/2008/08/04/rva-to-file-position.html

總結

以上是生活随笔為你收集整理的备忘录——通过RVA计算文件位置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青草在线免费 | 超碰在线国产 | 高清一区二区视频 | 国产精选久久久 | 黄色大片一级片 | 亚洲伦理在线视频 | 午夜不卡在线观看 | 国产一级啪啪 | 中国女人毛茸茸 | 九九影院最新理论片 | 高潮一区二区 | 日韩一级免费 | 亚洲欧美精品久久 | 香蕉视频国产在线观看 | 美女高潮视频在线观看 | 黄色资源网 | 日本高清在线一区 | 天天色棕合合合合合合合 | 中国女人真人一级毛片 | 91蝌蚪91九色白浆 | 91视频99| 成年人免费网站 | 稀缺小u女呦精品呦 | 免费在线观看www | 中文一区二区在线 | 亚欧精品视频一区二区三区 | 精品欧美乱码久久久久久 | 超碰97在线播放 | 精品人妻无码专区在线 | 极品粉嫩国产18尤物 | 色爱综合网 | 中文字幕人妻精品一区 | 中文字幕在线播放av | 麻豆高清免费国产一区 | 五月婷婷六月色 | a天堂在线观看视频 | 欢乐谷在线观看免费播放高清 | 日韩精品一区二区在线看 | 精品国产污污免费网站入口 | 老司机午夜免费福利 | 久久av一区二区三区漫画 | 免费在线观看小视频 | 已满18岁免费观看电视连续剧 | 亚洲国产黄色av | 国产视频一区二区三区四区 | 蘑菇福利视频一区播放 | 国产探花一区 | 依人久久| 天天操天天撸 | 美女久久久久 | 四川一级毛毛片 | 噼里啪啦高清 | 黄色网免费看 | 精品在线视频一区 | 最近中文字幕在线观看视频 | 最新日本中文字幕 | 高清一区二区 | 美国美女黄色片 | 国产亚洲黄色片 | h视频亚洲| a√国产 | 日本高清www免费视频 | 欧美综合亚洲 | 老熟妇仑乱视频一区二区 | 800av在线播放| 欧美日韩高清在线观看 | 一本久道视频一本久道 | 天天干天天操av | 国产性―交一乱―色―情人 | 欧美a一级 | 精品少妇人妻av免费久久久 | 好吊妞操 | 亚洲国产精品午夜久久久 | 国产二级毛片 | 香港黄色网址 | 青青视频在线免费观看 | 影音先锋激情 | 久久国产成人精品国产成人亚洲 | 国产福利网站 | 欧美风情第一页 | 涩涩涩涩涩涩涩涩涩 | 亚洲永久无码精品一区二区 | 真实乱视频国产免费观看 | 午夜av电影在线观看 | 九九热视频免费观看 | 国产欧美一区二区视频 | 中文字幕性 | 久色精品视频 | 69影院少妇在线观看 | 亚洲视频在线网 | 国产又猛又黄 | 欧美成人一区二区三区片免费 | 午夜影院在线观看18 | 午夜性色福利影院 | 天天舔天天舔 | 九一国产在线观看 | 午夜伦伦| 午夜黄色av | 亚洲4438 |