如何从二进制数据中调用函数

Eta*_*tan 2 c++ function-pointers

我有一些二进制数据,其中包含一堆函数,并希望调用其中一个.我知道这些函数的签名以及相对于文件开头的偏移量.调用约定是默认约定:__cdecl.该文件已加载到具有执行权限的内存页面中.

例如(A,B,C是一些类型的)

void myFunction (A *arg1, B arg2, C arg3); // Signature
int myOffset = 0x42; // Offset
Run Code Online (Sandbox Code Playgroud)

我该如何指定myOffset要点myFunction

ebo*_*ebo 6

// define a function pointer
typedef __cdecl void (*your_function) (A *arg1, B arg2, C arg3); 
your_function ftr;

char * memory = 0x123456; // base segment address

fptr = (your_function)(memory + 0x42); //calculate memory address

(*ftpr)(a,b,b); // call function
Run Code Online (Sandbox Code Playgroud)