首页
社区
课程
招聘
call dword ptr [XXXXXXXX]是怎么调用的,程序中没有XXXXXXXX这个地址
发表于: 2005-10-18 13:41 8273

call dword ptr [XXXXXXXX]是怎么调用的,程序中没有XXXXXXXX这个地址

2005-10-18 13:41
8273
有如下问题请教各位:

1.  为什么程序在调用window api或者dll中的输出函数时用的形式是
:00401375 FF1514324000            Call dword ptr [00403214]

上例中便是调用GetSystemMenu函数的.
我感到疑惑的是难道这个函数的入口地址每次在window启动时都放在内存00403214处吗?且我反编译后没有403214这个地方。

2.  静态反编译软件如w32dasm是如何根据这个地址知道了函数名字的?如下
* Reference To: USER32.GetSystemMenu, Ord:0145h
                                  |
:00401375 FF1514324000            Call dword ptr [00403214]
:0040137B 50                      push eax

3.  是不是Call dword ptr [XXXXXXXX] 只能用于系统的dll中的导出函数?

谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 441
活跃值: (149)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
自己想明白了,

call dword prt [XXXXXXXX]

此处的XXXXXXXX就是FirstThunk (IMAGE_IMPORT_DESCRIPTOR 结构中的一个成员) 指向的IMAGE_THUNK_DATA 数组中的某个元素的值。此值在程序装入内存时由装载器将它替换成实际函数的地址。
2005-10-19 09:36
0
游客
登录 | 注册 方可回帖
返回
//