从其他二进制文件加载符号

时间:2011-11-10 03:21:08

标签: c dynamic-loading

我对C和C ++编程相对缺乏经验,但是如果可以从共享库加载和调用符号(据我所知,编译和链接很像二进制文件),是否也可以从另一个加载符号[可运行的二进制文件在运行时?

我特别感兴趣的是在Linux上使用GCC。

2 个答案:

答案 0 :(得分:2)

如果您在Windows上编程

  1. LoadLibrary将共享库加载到当前进程
  2. GetProcAddress获取您要调用的函数的地址
  3. 在像Oses这样的unix上。像 dlopen dlsym

    之类的东西

    An example of dlsym寻找6.6。文件demo_dynamic.c

答案 1 :(得分:1)

理论上是的,您应该能够从二进制文件中提取对象并对其进行链接(静态或动态),但它需要您检查二进制结构。这很容易做到,因为现代Linux系统都使用ELF二进制文件,这是有据可查的。建议您从wikipedia article开始,然后从那里开始。