通过LD_PRELOAD重定向文件系统路径

时间:2013-01-25 21:51:30

标签: android linux libc ld-preload

我正在尝试在Android终端模拟器中建立一个可运行的Linux生态系统,但实际上没有root权限。这意味着我需要调整每个引用,例如我正在尝试编译和使用的每个程序的源代码中/bin/sh

在启动应用程序之前设置LD_PRELOAD允许我修改libc函数的行为,就像fakeroot一样;所以我可能只是编写一个库,用绝对路径名(例如/ dev,/ sys和/ proc除外)将所有系统调用重定向到我有写访问权限的文件夹。

这个库必须:

  • 重写所有路径名,使它们保留在假根目录
  • 尽管如此,允许来自此目录外部的引用,例如procfs仍将提供系统绝对路径名称
  • 确保子进程不会意外取消设置LD_PRELOAD

但结果会有多好?对于低级代码,我不是专家,所以:

  • 我如何一致地模仿这样一个“伪造的根目录”?我是从内核开始注定不会合作的吗?
  • “假根”内的进程意外地突破它有多容易?我不是在谈论故意通过汇编程序代码逃避。

编辑:也许这个库甚至可以作为libc的替代品,只要我链接在该系统上编译的所有软件对它?

0 个答案:

没有答案