阿π
專注于網絡協議,系統底層,服務器軟件
C++博客
|
首頁
|
發新隨筆
|
發新文章
| | |
管理
定位IAT并輸出導入函數名稱和對應的函數地址
?1
#include?
<
stdio.h
>
?2
#include?
<
windows.h
>
?3
?4
void
?main()
?5
{
?6
//
取得主模塊的模塊句柄(即進程模塊基地址)
?7
HMODULE?hMod?
=
?GetModuleHandle(NULL);
?8
?9
//
把進程基址賦給pDosHeader,即起始基址就是PE的IMAGE_DOS_HEADER
10
IMAGE_DOS_HEADER
*
?pDosHeader?
=
?(IMAGE_DOS_HEADER
*
)hMod;
11
12
//
定位到PE?HEADER
13
//
基址hMod加上IMAGE_DOS_HEADER結構的e_lfanew成員到達IMAGE_NT_HEADERS
14
//
NT文件頭的前4字節是文件簽名("PE00"?字符串),然后是20字節的IMAGE_FILE_HEADER結構
15
//
即到達IMAGE_OPTIONAL_HEADER結構的地址,獲取了一個指向IMAGE_OPTIONAL_HEADER結構體的指針
16
IMAGE_OPTIONAL_HEADER?
*
?pOptHeader?
=
17
(IMAGE_OPTIONAL_HEADER?
*
)((BYTE
*
)hMod?
+
?pDosHeader
->
e_lfanew?
+
?
24
);
18
19
//
定位到導入表
20
//
通過IMAGE_OPTIONAL_HEADER結構中的DataDirectory結構數組中的第二個成員中的
21
//
VirturalAddress字段定位到IMAGE_IMPORT_DESCRIPTOR結構的起始地址
22
//
即獲得導入表中第一個IMAGE_IMPORT_DESCRIPTOR結構的指針(導入表首地址)
23
IMAGE_IMPORT_DESCRIPTOR
*
?pImportDesc?
=
?(IMAGE_IMPORT_DESCRIPTOR
*
)
24
((BYTE
*
)hMod?
+
?pOptHeader
->
DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
25
26
while
(pImportDesc
->
FirstThunk)
27
{
28
//
遍歷結構的OriginalFirstThunk字段所指向的IMAGE_IMPORT_BY_NAME結構得到導出函數名
29
//
遍歷IMAGE_IMPORT_DESCRIPTOR結構的FirstThunk數組得到每個函數的地址
30
31
//
導出模塊的名稱
32
char
*
?pszDllName?
=
?(
char
*
)((BYTE
*
)hMod?
+
pImportDesc
->
Name);
33
printf(
"
\n模塊名稱:%s?\n
"
,?pszDllName);
34
35
//
?一個IMAGE_THUNK_DATA就是一個雙字,它指定了一個導入函數
36
IMAGE_THUNK_DATA
*
?pThunk?
=
?(IMAGE_THUNK_DATA
*
)
37
((BYTE
*
)hMod?
+
?pImportDesc
->
OriginalFirstThunk);
38
int
?n?
=
?
0
;
39
while
(pThunk
->
u1.Function)
40
{
41
//
?取得函數名稱。hint/name表前兩個字節是函數的序號,后4個字節是函數名稱字符串的地址
42
char
*
?pszFunName?
=
?(
char
*
)
43
((BYTE
*
)hMod?
+
?(DWORD)pThunk
->
u1.AddressOfData?
+
?
2
);
44
//
?取得函數地址。IAT表就是一個DWORD類型的數組,每個成員記錄一個函數的地址
45
PDWORD?lpAddr?
=
?(DWORD
*
)((BYTE
*
)hMod?
+
?pImportDesc
->
FirstThunk)?
+
?n;
46
47
//
?打印出函數名稱和地址
48
printf(
"
???從此模塊導入的函數:%-25s,
"
,?pszFunName);
49
printf(
"
函數地址:%X?\n
"
,?lpAddr);
50
n
++
;?pThunk
++
;
51
}
52
53
pImportDesc
++
;
54
}
55
MessageBox(NULL,
"
Test
"
,
"
Test
"
,
0
);
56
}
發表于 2010-08-23 13:22
阿π
閱讀(1153)
評論(0)
編輯
收藏
引用
所屬分類:
其它
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Linux下makefile教程
c++ 中關于int,unsigned int , short的跨平臺移植
C++中的四種強制類型轉換的區別 [轉]
c++ 枚舉網頁
[收藏]QQ_dll Function
[分享收藏]IP協議族協議頭結構
atoi,atof實現
c++ web Kit簡介
PE文件頭的結構圖
DLL在應用程序間共享數據
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
隨筆:64 文章:15 評論:65 引用:0
<
2010年1月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
留言簿
(14)
給我留言
查看公開留言
查看私人留言
隨筆分類
非技術(13)
(rss)
服務器開發(3)
(rss)
流媒體
(rss)
其它(25)
(rss)
驅動編程
(rss)
圖形開發
(rss)
網絡編程(14)
(rss)
隨筆檔案
2012年6月 (1)
2012年3月 (1)
2011年4月 (1)
2010年12月 (1)
2010年11月 (13)
2010年10月 (1)
2010年9月 (10)
2010年8月 (7)
2010年7月 (5)
2010年6月 (6)
2010年5月 (9)
2010年4月 (3)
2010年2月 (1)
2010年1月 (5)
收藏夾
收藏(1)
(rss)
最新隨筆
1.?Linux下makefile教程
2.?Delete Gmail account
3.?c++ 中關于int,unsigned int , short的跨平臺移植
4.?【轉帖】青年買不起房欲自殺折射四大悲哀
5.?C++中的四種強制類型轉換的區別 [轉]
6.?成都地鐵規劃[圖]
7.?linux makefile編寫
8.?c++ 枚舉網頁
9.?設計winsock服務器需要注意的幾個問題
10.?CVC內部雜志
最新評論
1.?re: UNICODE與ANSI的區別
內容簡明扼要,適合我的理解,謝謝
--欣豆兒
2.?re: c++ 中關于int,unsigned int , short的跨平臺移植
跨平臺移植寫的很全面,學習了。
--poker
3.?re: 網絡通訊協議圖
太好了!謝謝!
--雨
4.?re: 我常去的編程技術網站
評論內容較長,點擊標題查看
--home loans
5.?re: 我常去的編程技術網站
評論內容較長,點擊標題查看
--forum profile service
閱讀排行榜
1.?網絡通訊協議圖(18000)
2.?linux makefile編寫(13978)
3.?C++中的四種強制類型轉換的區別 [轉](10828)
4.?分享以前收藏的TCP狀態轉換圖(9956)
5.? Socket粘包問題(8815)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 阿π
亚州日韩精品专区久久久
|
久久精品九九亚洲精品天堂
|
久久无码人妻精品一区二区三区
|
久久亚洲中文字幕精品一区
|
久久国产香蕉视频
|
蜜臀av性久久久久蜜臀aⅴ麻豆
|
狠狠狠色丁香婷婷综合久久五月
|
久久久久综合中文字幕
|
久久国产精品无码一区二区三区
|
久久精品国产亚洲5555
|
久久精品国产亚洲AV大全
|
久久久中文字幕日本
|
91精品国产色综合久久
|
久久综合伊人77777麻豆
|
97久久综合精品久久久综合
|
武侠古典久久婷婷狼人伊人
|
国产精品久久久久久
|
久久AV高潮AV无码AV
|
狠狠综合久久综合中文88
|
国产精品久久久久久吹潮
|
久久久这里有精品中文字幕
|
99久久精品免费
|
久久久久亚洲精品天堂
|
久久久久久久久久久精品尤物
|
亚洲va中文字幕无码久久
|
精品综合久久久久久88小说
|
久久久久无码精品国产
|
中文字幕乱码久久午夜
|
日本精品久久久久影院日本
|
狠狠色伊人久久精品综合网
|
国产精品久久久久9999高清
|
亚洲av伊人久久综合密臀性色
|
久久综合伊人77777
|
亚洲国产成人精品91久久久
|
欧美久久一级内射wwwwww.
|
久久天天躁狠狠躁夜夜av浪潮
|
狠狠色综合网站久久久久久久高清
|
亚洲人成无码网站久久99热国产
|
中文字幕成人精品久久不卡
|
中文字幕精品无码久久久久久3D日动漫
|
久久精品国产99国产精品澳门
|