星綻紫輝(rawdata)的Blog
快樂地學習,快樂地工作!
C++博客
::
首頁
::
聯系
::
聚合
::
管理
16 Posts :: 0 Stories :: 37 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(5)
給我留言
查看公開留言
查看私人留言
我參與的團隊
隨筆檔案
(16)
2012年9月 (1)
2012年2月 (1)
2011年11月 (3)
2009年3月 (2)
2009年2月 (2)
2009年1月 (4)
2008年12月 (3)
精品文章
Windows XP系統中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc鍵序列
喜好鏈接
CCTV
谷歌搜索
我的藍月博客
中鳴機器人
搜索
最新評論
1.?re: 如何將.spl剝離成.emf文件格式
在嗎?樓主現在的新聯系方式有嗎?
--dabao
2.?re: 淺談靜態dll注入PE[未登錄]
評論內容較長,點擊標題查看
--none
3.?re: 如何將.spl剝離成.emf文件格式
我的電腦生成的SPL文件是raw格式的? 修改打印處理器為winprint emf格式也不好使。怎么才能導出emf的SPL格式呢?
--申麗玲
4.?re: 如何將.spl剝離成.emf文件格式
我在虛擬機上生成的SPL可以生成EMF文件, 但是安裝到我的電腦以后, 用國外的SPL Viewer 也說是invalid SPL File 是為什么呢?
--申麗玲
5.?re: 如何將.spl剝離成.emf文件格式 [未登錄]
想要這個程式,怎么聯系你,我的QQ號是1079436838
--dd
閱讀排行榜
1.?如何將.spl剝離成.emf文件格式 (8244)
2.?如何卸載 IP GUARD 2.82.0824 客戶端(7397)
3.?給PE文件增加多個區段(sections)(3447)
4.?將RVA(相對虛擬地址)地址轉化成Offset VA(偏移地址)(2469)
5.?淺談靜態dll注入PE(2040)
評論排行榜
1.?給PE文件增加多個區段(sections)(13)
2.?如何將.spl剝離成.emf文件格式 (10)
3.?到底該不該降低本碩畢業生的工資?(6)
4.?如何卸載 IP GUARD 2.82.0824 客戶端(5)
5.?淺談靜態dll注入PE(2)
將RVA(相對虛擬地址)地址轉化成Offset VA(偏移地址)
原創:星綻紫輝 2009-1-4 轉載請注明出處:
http://m.shnenglu.com/rawdata
RVA(reverse virtual address) 和 VA 地址的概念我就不說了,網上一大堆,就看你有沒有心去找了。在解析PE文件格式時,需要將RVA地址轉化成VA地址,才能對如:IMAGE_IMPORT_DESCRIPTOR類的結構進行正確訪問。這樣,exe/dll等導出的函數和導入的函數等重要信息你就可以獲得了。
我寫的這段函數是參考羅云彬的匯編主頁上的PE文件格式的匯編代碼,是由GuFeng翻譯
Iczelion
的,現在我寫成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 是目標exe/dll文件的內存映像指針,由(MapViewOfFile返回),dwRVA為相對地址,返回的是該PE程序在內存的對應dwRVA的偏移地址,得到VA就很簡單了:VA = pMapping + 返回值. (返回-1標識無效.)
如果代碼有什么謬誤或者待完善的地方,請留言或EmailToMe:xiaolu69soft@yahoo.com.cn.
2009-1-4 星綻紫輝(rawdata)
posted on 2009-01-04 12:41
星綻紫輝
閱讀(2469)
評論(1)
編輯
收藏
引用
Feedback
#
re: 將RVA(相對虛擬地址)地址轉化成Offset VA(偏移地址)
2012-03-03 16:18
憑凡 fire_the_hole@163.com
NICE,我直接復制走了~~~謝謝哈
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright @ 星綻紫輝
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
久久99热精品
|
国产精品99久久久久久宅男小说
|
无码人妻精品一区二区三区久久
|
久久久久亚洲av无码专区喷水
|
97热久久免费频精品99
|
精品欧美一区二区三区久久久
|
久久综合九色综合网站
|
久久亚洲精品无码AV红樱桃
|
精品久久久久一区二区三区
|
久久发布国产伦子伦精品
|
免费一级做a爰片久久毛片潮
|
国产午夜免费高清久久影院
|
久久久无码精品亚洲日韩京东传媒
|
99久久国产综合精品女同图片
|
国产69精品久久久久99
|
久久精品一本到99热免费
|
欧美与黑人午夜性猛交久久久
|
青青青青久久精品国产
|
欧美亚洲色综久久精品国产
|
午夜精品久久久久9999高清
|
久久激情五月丁香伊人
|
久久亚洲国产欧洲精品一
|
久久av无码专区亚洲av桃花岛
|
思思久久99热免费精品6
|
国产精品久久久久久久久久免费
|
无码伊人66久久大杳蕉网站谷歌
|
亚洲欧美日韩久久精品
|
久久综合五月丁香久久激情
|
国产99久久九九精品无码
|
国产一区二区三区久久精品
|
久久人人爽人人爽人人片av高请
|
区亚洲欧美一级久久精品亚洲精品成人网久久久久
|
噜噜噜色噜噜噜久久
|
久久天天躁狠狠躁夜夜2020老熟妇
|
77777亚洲午夜久久多喷
|
亚洲精品午夜国产VA久久成人
|
热久久视久久精品18
|
久久精品青青草原伊人
|
狠狠色综合网站久久久久久久高清
|
欧美日韩精品久久久免费观看
|
久久久久高潮综合影院
|