阿π
專注于網(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久久精品影院老鸭窝
|
久久久久久久久久久
|
久久精品无码一区二区三区
|
高清免费久久午夜精品
|
久久久久一本毛久久久
|
免费精品久久天干天干
|
老司机国内精品久久久久
|
香蕉aa三级久久毛片
|
91久久成人免费
|
性做久久久久久久久
|
久久电影网一区
|
久久久国产视频
|
久久精品国产精品亚洲艾草网美妙
|
亚洲国产高清精品线久久
|
久久福利青草精品资源站
|
亚洲精品无码久久一线
|
亚洲欧洲精品成人久久曰影片
|
韩国免费A级毛片久久
|
久久亚洲日韩看片无码
|
国产亚洲精午夜久久久久久
|
精品久久无码中文字幕
|
亚洲国产一成久久精品国产成人综合
|
久久精品国产亚洲av麻豆色欲
|
aaa级精品久久久国产片
|
青青草原综合久久大伊人导航
|
久久精品黄AA片一区二区三区
|
国产精品久久久久久五月尺
|
国产精品综合久久第一页
|
国产精品久久午夜夜伦鲁鲁
|
中文字幕热久久久久久久
|
亚洲国产日韩欧美久久
|
久久久久香蕉视频
|
婷婷久久综合九色综合98
|
久久精品国产亚洲AV大全
|
狠狠色丁香久久婷婷综合
|
亚洲精品久久久www
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
国产精品嫩草影院久久
|
国产亚洲美女精品久久久
|
91久久国产视频
|
久久久久综合中文字幕
|