原創(chuàng):星綻紫輝 2009-1-4 轉(zhuǎn)載請注明出處: http://www.shnenglu.com/rawdata
RVA(reverse virtual address) 和 VA 地址的概念我就不說了,網(wǎng)上一大堆,就看你有沒有心去找了。在解析PE文件格式時(shí),需要將RVA地址轉(zhuǎn)化成VA地址,才能對如:IMAGE_IMPORT_DESCRIPTOR類的結(jié)構(gòu)進(jìn)行正確訪問。這樣,exe/dll等導(dǎo)出的函數(shù)和導(dǎo)入的函數(shù)等重要信息你就可以獲得了。
我寫的這段函數(shù)是參考羅云彬的匯編主頁上的PE文件格式的匯編代碼,是由GuFeng翻譯 Iczelion的,現(xiàn)在我寫成C/C++的形式,以供參考。












































其中的pMapping 是目標(biāo)exe/dll文件的內(nèi)存映像指針,由(MapViewOfFile返回),dwRVA為相對地址,返回的是該P(yáng)E程序在內(nèi)存的對應(yīng)dwRVA的偏移地址,得到VA就很簡單了:VA = pMapping + 返回值. (返回-1標(biāo)識無效.)
如果代碼有什么謬誤或者待完善的地方,請留言或EmailToMe:xiaolu69soft@yahoo.com.cn.
2009-1-4 星綻紫輝(rawdata)