|
平台:Linux
语言:C++
编译器:GNU C/C++ 3.0 以上
问题:
已知一些参数,和一个函数指针,该函数指针通过:
void *f = dlsym(dl_handler, "xxx");
获得,但是不知道参数情况,任务是要把已知的参数传入这个函数指针
并呼叫,不管成功与否,该模块就是一个中间件,只负责把别的模块传
进来的参数传递给从动态连接库里面获取到的函数指针。
开始用:
asm("push %0;"
"push %1;"
"push %2;"
: /*no outputs*/
: "r"(var1), "r"(var2), "r"(var3));
这样把参数压入栈,然后用call f来呼叫函数。
结果发现执行完f函数之后,esp的值不对,于是在push之前记录下
esp的值到一个临时变量,call完f之后,再把esp的值改回来,这样
虽然可以呼叫f了,但是还有一个问题,就是我如何获得f的返回值呢?
|
|