我需要在我的 nasm 程序中调用不同 C 库中的一些函数。
图书馆:
<sys/ptrace.h>
<sys/wait.h>
...以及 ptrace、execl、wait 等函数。
我需要在我的 nasm 程序中调用不同 C 库中的一些函数。
图书馆:
<sys/ptrace.h>
<sys/wait.h>
...以及 ptrace、execl、wait 等函数。
通常有两种方法可以从汇编程序中使用 C/或任何其他 HLL 函数:
静态链接 - 如果您使用链接器,您可以将您的程序与所需的 HLL 生成的 .obj 或 .lib 文件链接在一起,并且
动态链接 - 您的程序在加载期间链接到所需的函数,而不是编译。有两种可能的实现:
2.1。手动加载动态库并获取所需函数的地址。为此,您必须使用操作系统提供的服务。例如,在 Linux 中,这是 sys_uselib(相当过时),或者自己加载库并解析 ELF 文件以获取函数地址;
2.2. 构建包含要使用的库和函数列表的导入表。然后操作系统加载器将自动在占位符变量中提供函数的地址,您可以从中间接调用它们。
所有这些方法都高度依赖于操作系统和汇编程序,所以我只能为我使用的汇编程序提供示例:
为 Linux 构建导入表的 FreshLib导入宏。