繁体   English   中英

在C(Linux)中复制execve?

[英]Replicating execve in c (Linux)?

我正在做一个项目,以了解如何在Linux中执行程序。 基本上,我试图通过在ac程序中运行一系列系统调用来复制execve的功能,以获取可执行二进制文件,将其加载到内存中并成功运行它。

我可以使用任何相对容易理解的在线资源(或技巧)来学习如何做吗? 我对此没有太多经验,我正在尝试学习。 这似乎是一项相当复杂的任务,而我目前完全陷入困境。

谢谢。

您的主要问题是exec系统调用的一部分覆盖了内核中的进程描述符。 这是您无法在用户空间中执行的操作。 即使关闭所有文件描述符,仍然会有许多其他值无法达到,也无法释放动态加载的库并释放自己程序的代码页(因为它们将被写保护)。

加载和运行代码文件的基本方法是将其mmap到内存中,然后清除堆栈,解析ELF标头并跳转到程序启动功能(汇编jmp指令,请注意),但是ELF还有很多其他功能文件,因此如果没有其他初始化和动态链接,它可能无法工作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM