阿π
專注于網絡協議,系統底層,服務器軟件
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
阿π
閱讀(1168)
評論(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
<
2025年6月
>
日
一
二
三
四
五
六
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
1
2
3
4
5
留言簿
(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.?網絡通訊協議圖(18017)
2.?linux makefile編寫(13992)
3.?C++中的四種強制類型轉換的區別 [轉](10840)
4.?分享以前收藏的TCP狀態轉換圖(9963)
5.? Socket粘包問題(8828)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 阿π
亚洲天堂久久精品
|
大美女久久久久久j久久
|
国产精品99久久久久久董美香
|
国产精品亚洲综合专区片高清久久久
|
segui久久国产精品
|
久久99精品久久久久久野外
|
熟妇人妻久久中文字幕
|
久久99国产精一区二区三区
|
欧美伊人久久大香线蕉综合69
|
久久国产精品成人片免费
|
国产成人精品久久综合
|
亚洲色欲久久久综合网
|
久久国产成人午夜aⅴ影院
|
麻豆亚洲AV永久无码精品久久
|
狠狠人妻久久久久久综合蜜桃
|
国产精品久久久久国产A级
|
香蕉aa三级久久毛片
|
欧美一区二区精品久久
|
久久久久国产精品
|
亚洲精品国产综合久久一线
|
久久AV高清无码
|
中文字幕久久久久人妻
|
99久久亚洲综合精品成人
|
欧美一区二区三区久久综
|
久久亚洲日韩看片无码
|
亚洲一级Av无码毛片久久精品
|
精品久久人人做人人爽综合
|
国产精品国色综合久久
|
久久久久久久久无码精品亚洲日韩
|
亚洲国产香蕉人人爽成AV片久久
|
51久久夜色精品国产
|
国产AV影片久久久久久
|
亚洲国产精品久久66
|
精品国产一区二区三区久久
|
久久精品亚洲一区二区三区浴池
|
亚洲精品国产美女久久久
|
伊人久久大香线蕉av一区
|
久久精品国产色蜜蜜麻豆
|
久久SE精品一区二区
|
久久精品国产第一区二区三区
|
久久久久婷婷
|