防止其他程序执行库中的函数
Prevent function in library to be executed from other programs
我在 Linux 上用 C++ 编写了一个共享库,其中包含一个函数 f()
。这个库被多个程序使用,调用函数。
现在我想用那个函数进行一些调试,同时从程序 A
调用它。从任何其他程序调用它时,只要我调试该函数,它就应该失败。在我无法完全控制其他程序何时为 运行 之后,我想添加一个异常,它会在调试会话期间调用函数 f
时停止除程序 A
之外的所有程序。
我该如何解决?
没有绕不过去的路。如果另一个进程在你的进程上有 PTRACE,它可以在你的进程中发生任何事情,所以你执行的任何试图使该功能不起作用的检查都可以被禁用。
我唯一能想到的办法就是查看当前运行进程的信息。您可以通过调用 getpid()
函数来获取 pid
。 linux 系统上所有进程的所有信息都可以在 /proc/<pid>
目录中找到。调用函数f
时,可以查看此信息,决定是否抛出异常。
我在 Linux 上用 C++ 编写了一个共享库,其中包含一个函数 f()
。这个库被多个程序使用,调用函数。
现在我想用那个函数进行一些调试,同时从程序 A
调用它。从任何其他程序调用它时,只要我调试该函数,它就应该失败。在我无法完全控制其他程序何时为 运行 之后,我想添加一个异常,它会在调试会话期间调用函数 f
时停止除程序 A
之外的所有程序。
我该如何解决?
没有绕不过去的路。如果另一个进程在你的进程上有 PTRACE,它可以在你的进程中发生任何事情,所以你执行的任何试图使该功能不起作用的检查都可以被禁用。
我唯一能想到的办法就是查看当前运行进程的信息。您可以通过调用 getpid()
函数来获取 pid
。 linux 系统上所有进程的所有信息都可以在 /proc/<pid>
目录中找到。调用函数f
时,可以查看此信息,决定是否抛出异常。