星綻紫輝(rawdata)的Blog
快樂地學(xué)習(xí),快樂地工作!
C++博客
::
首頁
::
聯(lián)系
::
聚合
::
管理
16 Posts :: 0 Stories :: 37 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(5)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊
隨筆檔案
(16)
2012年9月 (1)
2012年2月 (1)
2011年11月 (3)
2009年3月 (2)
2009年2月 (2)
2009年1月 (4)
2008年12月 (3)
精品文章
Windows XP系統(tǒng)中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc鍵序列
喜好鏈接
CCTV
谷歌搜索
我的藍(lán)月博客
中鳴機(jī)器人
搜索
最新評論
1.?re: 如何將.spl剝離成.emf文件格式
在嗎?樓主現(xiàn)在的新聯(lián)系方式有嗎?
--dabao
2.?re: 淺談靜態(tài)dll注入PE[未登錄]
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--none
3.?re: 如何將.spl剝離成.emf文件格式
我的電腦生成的SPL文件是raw格式的? 修改打印處理器為winprint emf格式也不好使。怎么才能導(dǎo)出emf的SPL格式呢?
--申麗玲
4.?re: 如何將.spl剝離成.emf文件格式
我在虛擬機(jī)上生成的SPL可以生成EMF文件, 但是安裝到我的電腦以后, 用國外的SPL Viewer 也說是invalid SPL File 是為什么呢?
--申麗玲
5.?re: 如何將.spl剝離成.emf文件格式 [未登錄]
想要這個程式,怎么聯(lián)系你,我的QQ號是1079436838
--dd
閱讀排行榜
1.?如何將.spl剝離成.emf文件格式 (8162)
2.?如何卸載 IP GUARD 2.82.0824 客戶端(7334)
3.?給PE文件增加多個區(qū)段(sections)(3395)
4.?將RVA(相對虛擬地址)地址轉(zhuǎn)化成Offset VA(偏移地址)(2449)
5.?淺談靜態(tài)dll注入PE(2021)
評論排行榜
1.?給PE文件增加多個區(qū)段(sections)(13)
2.?如何將.spl剝離成.emf文件格式 (10)
3.?到底該不該降低本碩畢業(yè)生的工資?(6)
4.?如何卸載 IP GUARD 2.82.0824 客戶端(5)
5.?淺談靜態(tài)dll注入PE(2)
將RVA(相對虛擬地址)地址轉(zhuǎn)化成Offset VA(偏移地址)
原創(chuàng):星綻紫輝 2009-1-4 轉(zhuǎn)載請注明出處:
http://www.shnenglu.com/rawdata
RVA(reverse virtual address) 和 VA 地址的概念我就不說了,網(wǎng)上一大堆,就看你有沒有心去找了。在解析PE文件格式時,需要將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++的形式,以供參考。
//
RVA To Offset
DWORD CPEReaderDlg::RVAToOffset(DWORD pMapping,DWORD dwRVA)
{
//
Defines
DWORD pNTDst
=
0
;
IMAGE_DOS_HEADER
*
pidh
=
(IMAGE_DOS_HEADER
*
)pMapping;
pNTDst
=
pMapping
+
pidh
->
e_lfanew;
DWORD pSeDst
=
pNTDst;
IMAGE_NT_HEADERS
*
pinh
=
(IMAGE_NT_HEADERS
*
)pNTDst;
IMAGE_SECTION_HEADER
*
pish
=
NULL;
//
First Session
pSeDst
=
pNTDst
+
sizeof
(IMAGE_NT_HEADERS);
pish
=
(IMAGE_SECTION_HEADER
*
)pSeDst;
//
Session Count
UINT nCount
=
pinh
->
FileHeader.NumberOfSections;
DWORD dwPosTmp
=
0
;
//
Scan
for
(UINT i
=
0
;i
<
nCount;i
++
)
{
if
(dwRVA
>=
pish
->
VirtualAddress)
{
dwPosTmp
=
pish
->
VirtualAddress;
dwPosTmp
+=
pish
->
SizeOfRawData;
}
if
(dwRVA
<
dwPosTmp)
{
dwRVA
=
dwRVA
-
pish
->
VirtualAddress;
return
dwRVA
+
pish
->
PointerToRawData;
}
pish
=
pish
+
1
;
//
sizeof(IMAGE_SECTION_HEADER);
}
return
-
1
;
}
其中的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)
posted on 2009-01-04 12:41
星綻紫輝
閱讀(2449)
評論(1)
編輯
收藏
引用
Feedback
#
re: 將RVA(相對虛擬地址)地址轉(zhuǎn)化成Offset VA(偏移地址)
2012-03-03 16:18
憑凡 fire_the_hole@163.com
NICE,我直接復(fù)制走了~~~謝謝哈
回復(fù)
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright @ 星綻紫輝
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
伊人精品久久久久7777
|
久久精品国产色蜜蜜麻豆
|
蜜桃麻豆www久久
|
久久成人永久免费播放
|
思思久久99热只有频精品66
|
亚洲国产精品综合久久一线
|
欧美牲交A欧牲交aⅴ久久
|
99久久人人爽亚洲精品美女
|
国产精品久久久久久五月尺
|
久久福利青草精品资源站免费
|
亚洲精品无码久久不卡
|
国产婷婷成人久久Av免费高清
|
久久国产成人午夜aⅴ影院
|
伊人久久大香线蕉AV一区二区
|
AV狠狠色丁香婷婷综合久久
|
少妇被又大又粗又爽毛片久久黑人
|
国内精品伊人久久久久av一坑
|
99久久国产主播综合精品
|
精品一二三区久久aaa片
|
久久久受www免费人成
|
久久久久高潮毛片免费全部播放
|
欧美久久综合九色综合
|
情人伊人久久综合亚洲
|
久久人人爽人人爽人人片AV不
|
亚洲精品无码久久毛片
|
精品国产乱码久久久久久浪潮
|
人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区
|
97精品国产97久久久久久免费
|
人妻无码αv中文字幕久久
|
人妻少妇精品久久
|
国产成人99久久亚洲综合精品
|
久久久久亚洲AV成人片
|
无码精品久久久久久人妻中字
|
97精品国产97久久久久久免费
|
久久青青草原亚洲av无码app
|
久久精品国产免费观看
|
亚洲欧美日韩精品久久亚洲区
|
久久精品国产亚洲麻豆
|
国产成人综合久久综合
|
精品久久久久久久久中文字幕
|
久久久精品人妻一区二区三区蜜桃
|