阿π
專注于網絡協議,系統底層,服務器軟件
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
阿π
閱讀(1176)
評論(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年8月
>
日
一
二
三
四
五
六
25
26
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
留言簿
(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.?網絡通訊協議圖(18028)
2.?linux makefile編寫(13999)
3.?C++中的四種強制類型轉換的區別 [轉](10853)
4.?分享以前收藏的TCP狀態轉換圖(9970)
5.? Socket粘包問題(8839)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 阿π
久久久精品人妻一区二区三区蜜桃
|
久久精品国产精品亚洲艾草网美妙
|
国产三级观看久久
|
亚洲欧美久久久久9999
|
浪潮AV色综合久久天堂
|
久久精品成人一区二区三区
|
精品人妻伦九区久久AAA片69
|
日本精品久久久久中文字幕
|
奇米影视7777久久精品人人爽
|
精品国产一区二区三区久久久狼
|
久久国产成人
|
91视频国产91久久久
|
99久久免费国产精品特黄
|
久久精品中文字幕久久
|
亚洲精品无码久久千人斩
|
久久香蕉国产线看观看猫咪?v
|
国产V综合V亚洲欧美久久
|
久久无码AV一区二区三区
|
久久996热精品xxxx
|
国产精品九九久久免费视频
|
久久亚洲精精品中文字幕
|
久久人人爽人人爽人人片AV麻烦
|
99久久综合狠狠综合久久止
|
久久久久亚洲av成人网人人软件
|
久久久久黑人强伦姧人妻
|
久久综合九色综合97_久久久
|
婷婷伊人久久大香线蕉AV
|
久久狠狠爱亚洲综合影院
|
久久综合色区
|
欧美成a人片免费看久久
|
久久精品无码一区二区三区日韩
|
99久久精品日本一区二区免费
|
日韩人妻无码精品久久免费一
|
精品人妻伦九区久久AAA片69
|
亚洲人成无码www久久久
|
无码国内精品久久人妻麻豆按摩
|
欧美无乱码久久久免费午夜一区二区三区中文字幕
|
无码人妻精品一区二区三区久久
|
深夜久久AAAAA级毛片免费看
|
国产精品无码久久综合网
|
久久久国产精华液
|