您的位置:首页 > 职场人生

EXE导出函数给其它PE调用

2011-09-21 15:25 246 查看
一个比较简单的做法就是如果自己要导出函数给别的EXE调的话.那个导出函数没有用到全局变量(就是说它用的变量都是调用者传入的) 那么可以不用考虑重定位的问题.比如:

导出函数给别人用的EXE:

extern "C" int __declspec(dllexport) add(int a,int b)

{

return a+b;

}

调用有导出函数的EXE:

typedef int (*ADD)(int,int);

void main()

{

ADD add;

HMODULE hmod =LoadLibrary("exp.exe");

if (hmod)

{

add=(ADD)GetProcAddress(hmod,"add");

int x=add(3,3);

}

}

这种简单的就不用处理重定位的问题了.

PS:因为也可以导出变量.直接用GetProcAddress取导出的变量是取不到的.所以猜测结果如下:

函数地址的重定位直接交给GetProcAddress处理就行了.但是如果导出函数中用到了不是参数传入的变量就要自己处理重定位问题了.不然就报了个访问不允许的那个错误.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 exe 休闲