阿π
專注于網(wǎng)絡(luò)協(xié)議,系統(tǒng)底層,服務(wù)器軟件
C++博客
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
| | |
管理
定位IAT并輸出導(dǎo)入函數(shù)名稱和對應(yīng)的函數(shù)地址
?1
#include?
<
stdio.h
>
?2
#include?
<
windows.h
>
?3
?4
void
?main()
?5
{
?6
//
取得主模塊的模塊句柄(即進(jìn)程模塊基地址)
?7
HMODULE?hMod?
=
?GetModuleHandle(NULL);
?8
?9
//
把進(jìn)程基址賦給pDosHeader,即起始基址就是PE的IMAGE_DOS_HEADER
10
IMAGE_DOS_HEADER
*
?pDosHeader?
=
?(IMAGE_DOS_HEADER
*
)hMod;
11
12
//
定位到PE?HEADER
13
//
基址hMod加上IMAGE_DOS_HEADER結(jié)構(gòu)的e_lfanew成員到達(dá)IMAGE_NT_HEADERS
14
//
NT文件頭的前4字節(jié)是文件簽名("PE00"?字符串),然后是20字節(jié)的IMAGE_FILE_HEADER結(jié)構(gòu)
15
//
即到達(dá)IMAGE_OPTIONAL_HEADER結(jié)構(gòu)的地址,獲取了一個(gè)指向IMAGE_OPTIONAL_HEADER結(jié)構(gòu)體的指針
16
IMAGE_OPTIONAL_HEADER?
*
?pOptHeader?
=
17
(IMAGE_OPTIONAL_HEADER?
*
)((BYTE
*
)hMod?
+
?pDosHeader
->
e_lfanew?
+
?
24
);
18
19
//
定位到導(dǎo)入表
20
//
通過IMAGE_OPTIONAL_HEADER結(jié)構(gòu)中的DataDirectory結(jié)構(gòu)數(shù)組中的第二個(gè)成員中的
21
//
VirturalAddress字段定位到IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)的起始地址
22
//
即獲得導(dǎo)入表中第一個(gè)IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)的指針(導(dǎo)入表首地址)
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
//
遍歷結(jié)構(gòu)的OriginalFirstThunk字段所指向的IMAGE_IMPORT_BY_NAME結(jié)構(gòu)得到導(dǎo)出函數(shù)名
29
//
遍歷IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)的FirstThunk數(shù)組得到每個(gè)函數(shù)的地址
30
31
//
導(dǎo)出模塊的名稱
32
char
*
?pszDllName?
=
?(
char
*
)((BYTE
*
)hMod?
+
pImportDesc
->
Name);
33
printf(
"
\n模塊名稱:%s?\n
"
,?pszDllName);
34
35
//
?一個(gè)IMAGE_THUNK_DATA就是一個(gè)雙字,它指定了一個(gè)導(dǎo)入函數(shù)
36
IMAGE_THUNK_DATA
*
?pThunk?
=
?(IMAGE_THUNK_DATA
*
)
37
((BYTE
*
)hMod?
+
?pImportDesc
->
OriginalFirstThunk);
38
int
?n?
=
?
0
;
39
while
(pThunk
->
u1.Function)
40
{
41
//
?取得函數(shù)名稱。hint/name表前兩個(gè)字節(jié)是函數(shù)的序號(hào),后4個(gè)字節(jié)是函數(shù)名稱字符串的地址
42
char
*
?pszFunName?
=
?(
char
*
)
43
((BYTE
*
)hMod?
+
?(DWORD)pThunk
->
u1.AddressOfData?
+
?
2
);
44
//
?取得函數(shù)地址。IAT表就是一個(gè)DWORD類型的數(shù)組,每個(gè)成員記錄一個(gè)函數(shù)的地址
45
PDWORD?lpAddr?
=
?(DWORD
*
)((BYTE
*
)hMod?
+
?pImportDesc
->
FirstThunk)?
+
?n;
46
47
//
?打印出函數(shù)名稱和地址
48
printf(
"
???從此模塊導(dǎo)入的函數(shù):%-25s,
"
,?pszFunName);
49
printf(
"
函數(shù)地址:%X?\n
"
,?lpAddr);
50
n
++
;?pThunk
++
;
51
}
52
53
pImportDesc
++
;
54
}
55
MessageBox(NULL,
"
Test
"
,
"
Test
"
,
0
);
56
}
發(fā)表于 2010-08-23 13:22
阿π
閱讀(1153)
評論(0)
編輯
收藏
引用
所屬分類:
其它
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
Linux下makefile教程
c++ 中關(guān)于int,unsigned int , short的跨平臺(tái)移植
C++中的四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別 [轉(zhuǎn)]
c++ 枚舉網(wǎng)頁
[收藏]QQ_dll Function
[分享收藏]IP協(xié)議族協(xié)議頭結(jié)構(gòu)
atoi,atof實(shí)現(xiàn)
c++ web Kit簡介
PE文件頭的結(jié)構(gòu)圖
DLL在應(yīng)用程序間共享數(shù)據(jù)
網(wǎng)站導(dǎo)航:
博客園
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)
給我留言
查看公開留言
查看私人留言
隨筆分類
非技術(shù)(13)
(rss)
服務(wù)器開發(fā)(3)
(rss)
流媒體
(rss)
其它(25)
(rss)
驅(qū)動(dòng)編程
(rss)
圖形開發(fā)
(rss)
網(wǎng)絡(luò)編程(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++ 中關(guān)于int,unsigned int , short的跨平臺(tái)移植
4.?【轉(zhuǎn)帖】青年買不起房欲自殺折射四大悲哀
5.?C++中的四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別 [轉(zhuǎn)]
6.?成都地鐵規(guī)劃[圖]
7.?linux makefile編寫
8.?c++ 枚舉網(wǎng)頁
9.?設(shè)計(jì)winsock服務(wù)器需要注意的幾個(gè)問題
10.?CVC內(nèi)部雜志
最新評論
1.?re: UNICODE與ANSI的區(qū)別
內(nèi)容簡明扼要,適合我的理解,謝謝
--欣豆兒
2.?re: c++ 中關(guān)于int,unsigned int , short的跨平臺(tái)移植
跨平臺(tái)移植寫的很全面,學(xué)習(xí)了。
--poker
3.?re: 網(wǎng)絡(luò)通訊協(xié)議圖
太好了!謝謝!
--雨
4.?re: 我常去的編程技術(shù)網(wǎng)站
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--home loans
5.?re: 我常去的編程技術(shù)網(wǎng)站
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--forum profile service
閱讀排行榜
1.?網(wǎng)絡(luò)通訊協(xié)議圖(18000)
2.?linux makefile編寫(13978)
3.?C++中的四種強(qiáng)制類型轉(zhuǎn)換的區(qū)別 [轉(zhuǎn)](10828)
4.?分享以前收藏的TCP狀態(tài)轉(zhuǎn)換圖(9956)
5.? Socket粘包問題(8815)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 阿π
国产亚洲色婷婷久久99精品
|
男女久久久国产一区二区三区
|
久久综合色区
|
久久无码AV中文出轨人妻
|
一本一本久久aa综合精品
|
国产成年无码久久久久毛片
|
精品国产乱码久久久久久浪潮
|
久久久久久国产精品无码超碰
|
麻豆AV一区二区三区久久
|
91久久成人免费
|
人妻无码αv中文字幕久久
|
99久久婷婷国产综合精品草原
|
国产69精品久久久久9999APGF
|
久久免费美女视频
|
人妻精品久久久久中文字幕一冢本
|
久久亚洲精品中文字幕
|
久久人人爽人人澡人人高潮AV
|
久久久久高潮毛片免费全部播放
|
青青青国产成人久久111网站
|
2021久久精品免费观看
|
国产精品久久久久久久午夜片
|
久久精品嫩草影院
|
久久人人爽人人爽人人片av麻烦
|
日本福利片国产午夜久久
|
久久青青草原精品国产
|
久久久精品久久久久影院
|
久久久久亚洲AV无码专区网站
|
99精品久久精品一区二区
|
亚洲国产另类久久久精品
|
色综合久久天天综线观看
|
欧美久久综合性欧美
|
久久精品男人影院
|
久久国产精品一区二区
|
久久久综合九色合综国产
|
久久精品国产亚洲网站
|
国产香蕉97碰碰久久人人
|
亚洲国产精品婷婷久久
|
91精品婷婷国产综合久久
|
91亚洲国产成人久久精品
|
久久午夜综合久久
|
亚洲精品WWW久久久久久
|