EXE导出函数给其它PE调用
2015-05-22 04:52
204 查看
http://laokaddk.blog.51cto.com/368606/670486
一个比较简单的做法就是如果自己要导出函数给别的EXE调的话.那个导出函数没有用到全局变量(就是说它用的变量都是调用者传入的) 那么可以不用考虑重定位的问题.比如:
导出函数给别人用的EXE:
PS:因为也可以导出变量.直接用GetProcAddress取导出的变量是取不到的.所以猜测结果如下:
函数地址的重定位直接交给GetProcAddress处理就行了.但是如果导出函数中用到了不是参数传入的变量就要自己处理重定位问题了.不然就报了个访问不允许的那个错误.
一个比较简单的做法就是如果自己要导出函数给别的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导出函数给其它PE调用
- Depends.exe —— PE依赖模块、导入导出函数查询
- 【原创+整理】简述何为调用约定,函数导出名以及extern C
- 内核分析PE获取DLL导出函数地址
- Ring0上调用未导出Zw函数通用函数
- Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
- Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
- asp.net导出数据到Excel的方法(完全无组件,不用调用Excel.exe)
- 【转】调用未知DLL中的导出函数
- 在vc中调用一般的.exe只需要一个函数
- 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?
- DLL导出函数方法以及动态调用
- 调用未知DLL中的导出函数
- DLL模块例2:使用__declspec(dllexport)导出函数,extern "C"规范修饰名称,隐式连接调用dll中函数
- 内核分析PE获取DLL导出函数地址
- 在C#中动态调用native dll的导出函数
- VC中调用和运行其它应用程序(比如使用cmd.exe的功能)
- VC中创建DLL,导出全局变量,函数和类(隐式调用)
- Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
- 透过汇编另眼看世界之DLL导出函数调用