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:
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导出函数给其它PE调用
- Depends.exe —— PE依赖模块、导入导出函数查询
- 如何调用内核未导出的函数
- VB调用DLL导出函数出现"Bad DLL call convention"的解决
- VC中调用和运行其它应用程序(比如使用cmd.exe的功能)
- 【转】调用未知DLL中的导出函数
- 关于在VC中调用其它EXE
- 在驱动中调用其它驱动的函数(fastcall)
- DLL导出函数方法以及动态调用
- 【原创+整理】简述何为调用约定,函数导出名以及extern C
- delphi中调用外部dll导出函数
- dll导出函数调用封装
- 获取PE文件的导出函数
- 动态链接库中导出函数的调用
- cocos2dx中注册导出c++函数供lua调用(使用tolua++)
- 使用动态包导出函数的调用单元完整源代码
- Js文件中调用其它Js函数的方法
- DLL 导出函数 _stdcall 和 _cdecl调用约定
- 透过汇编另眼看世界之DLL导出函数调用
- 动态加载DLL实现不同DLL的相同导出函数调用问题