dll知识点查遗补缺

1.
导入函数
(1)如果程序静态连接时,声明函数采用了__declspec(dllimport)
调用Foo时,被翻译成call [_imp_Foo]
其中_imp_Foo是idata节里面的数据,dll的loader会修改这个地址里的数值。
_imp_Foo是FirstTrunk值。

(2)如果程序静态连接时,没有采用了__declspec(dllimport)
调用Foo时,被翻译成call _Foo
而编译器会自动生成_Foo函数,这只是个躯壳。
_Foo:
jump [_imp_Foo]

(3)采用GetProcAddress方式
这种方式不会有_imp_Foo类似的地址,GetProcAddress返回的就是函数地址,直接call就可以了


posted @ 2009-03-20 22:42  Fan Zhang  阅读(250)  评论(0编辑  收藏  举报