【发布时间】:2014-03-04 10:15:42
【问题描述】:
目标
我想解析链接到我的二进制文件(不是共享库)的特定部分的所有符号的签名。
我做了什么
在汇编中,您可以定义 section .example(NASM 语法),然后使用以下命令将其链接到我的二进制文件中的特定位置:
exampleStart = .;
*(.example)
exampleEnd = .;
这允许我使用exampleStart 和exampleEnd 遍历所有符号,只要我知道它们是什么。例如,如果我知道所有符号都是不需要参数且不返回任何内容的方法,我可以将它们强制转换为 void(*)() 并将它们作为方法调用。
问题
- 有没有办法在 C++ 中定义节,类似于 NASM 中的
.section语法? - 我可以告诉链接器创建一个符号表之类的东西,它还包含方法的签名吗?
一个例子
在下面我想展示一个我想要实现的小例子(伪C++):
SECTION example
void somePrefix_myFunction() {
// ...
}
int somePrefix_anotherFunction(int a, int b) {
return a + b;
}
ENDSECTION
然后我希望能够在其他地方迭代本节中的符号并获取符号的位置和签名。
【问题讨论】: