0

我有两个共享库。A lib 使用dlopen.

它们实现了相同的 API 集。

我的客户端在同一系统上运行,当它尝试访问它要加载的库的 API 时?

或者这是一件无效的事情?我必须使 B 成为静态库。

我的目标是让客户端只能访问 lib A。

4

1 回答 1

0

您是否可以控制客户端(即,您可以重新编译它)?如果是这样,您可以在链接时指定库 A;那么这将是 A 对dlopenB的关心。

如果您试图劫持fooB 中的函数调用,那么您的客户端正在尝试加载库 B。您可以使用LD_PRELOAD它来强制它加载库 A。然后客户端将发出一个调用foo(),A 将应答它,A 将能够foo()@B在修改、更改和/或记录输入值和返回值之后将调用路由到。

你打电话给你的客户,LD_PRELOAD=B.so ./client而不是./client

于 2012-09-28T13:14:01.133 回答