问题标签 [execve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - What's the difference between system() and execve()
I use linux and c.
First, I soft link bin/zsh to sh
Second, I login as root the run the following program.
Third, I login as a normal user(not root). Now, I can remove or rewrite a file which I don't have write privilege by using the execute file of this program.
Like this:
Now I can write "Not right" into the file "text". I only have read privilege of this file
The read and write privilege of these files.
Fourth, I change q to 1. That means, this time I use execve instead.
And do the same thing as above. But this time I cannot change the content of the file.
Why? I google in the internet, but I can not find the different between system and execve.
linux - nasm 上的 execvp 用法
我现在正在学习 NASM,可能是 linux 系统调用。我正在尝试复制一个进程并调用 linux 实用程序,但与 execvp 有同样的问题,我不知道如何将参数传递给它。我怎样才能做到这一点?
c - 执行错误:没有这样的文件或目录
我正在尝试编写一个程序来执行和安排进程列表。我的 main.c 代码如下。运行时,我收到来自 perror 的错误,说没有这样的文件或目录。我猜这是因为我的 files.txt 中的文件/程序不是二进制可执行文件,但我不知道如何解决这个问题。files.txt 包含我要运行的程序列表。它们已经全部转换为二进制可执行文件。程序是一个数组,其中包含已被 readPrograms 函数读取的四个程序
文件.txt 下面
(我分别为所有这些文件做了“cc first.c -o first”)
c - 进程控制器以随机顺序运行文件
我正在尝试执行和安排我自己的从文件中读取的进程列表。这些文件以随机顺序运行,我只是好奇为什么会这样。我在第一个、第二个等文件中有简单的打印语句,这些语句告诉哪个正在运行,它们总是以不同的(看似随机的)顺序打印。到目前为止,它并没有弄乱我的功能,我只是好奇为什么会这样。
main.c 下面
阅读下面的Programs.c
文件.txt 下面
linux - linux中系统调用的多个命令
我正在尝试执行具有以下内容的程序(例如 target.c)
现在我试图通过从另一个程序调用它来获取 shell(从下面显示的另一个程序调用很重要:
我的问题是当我尝试执行目标并提供命令行参数时;/bin/sh 然后我得到 shell,但在从 execve 调用的情况下没有。任何帮助将非常感激
好的,这是输出:
上面的程序将用户输入字符串附加到 ls 并将其传递给系统,因此 system(ls ds;/bin/sh " 给了我 shell
但是当我尝试对另一个程序(第二个程序)的 execve 执行相同操作时,它不起作用说“ds”目录未找到
linux - execve 如何调用动态链接器/加载器(ld-linux.so.2)
我用gcc编译和链接了最基本的C程序test.c:
正如预期的那样,输出是一个动态链接的可执行文件:
运行 strace 给出以下输出:
我期待在 strace 输出中的某处看到“/lib64/ld-linux.so.2”,因为根据 execve 手册:
如果可执行文件是动态链接的 ELF 可执行文件,则在 >PT_INTERP 段中命名的解释器用于加载所需的共享库。对于与 glibc 2 链接的二进制文件,此解释器 > 通常是 /lib/ld-linux.so.2
我的猜测是链接器/加载器(/lib64/ld-linux.so.2)调用是 execve 的一部分。有人可以确认吗?
c - 错误地址 C(命令行解释器)
这是我的代码:
每当我输入(例如)/bin/ls 时,我都会收到一条错误消息,指出“地址错误”。我检查了 cmd 和 args 并确保它们收到正确的值。
c - 如何记录 execve 调用的输出?
我写了这个简单的程序。我希望将它的输出记录到下面打开的 test.log 中。我可以这样做吗?
assembly - mov ebx, esi 和 lea ebx, [esi] 有什么区别
我正在完成 shellcoders 手册中的练习。
此代码工作正常,但我不理解这些行lea ebx, [esi]
和mov ebx, esi
,它们都将相同的值存储到 ebx 中。事实上,如果我通过 gdb 运行它,我可以看到寄存器值没有改变。
我知道 mov 访问地址处的值,而 lea 仅访问地址。如果这种情况下的 mov 指令在 mov ebx, [esi] 中的 esi 周围有括号 - 那么我可以看到差异,但事实并非如此,我错过了什么?
c - 执行到我刚刚写的文件——“文本文件忙”
下面的 C 程序的预期行为是将其自己的可执行文件复制到一个新的随机命名的文件中,然后执行该文件,令人作呕。这应该会创建很多很多可执行文件的副本。这显然是一个糟糕的想法,但它仍然是我想要做的。
但是,输出如下:
我认为文本文件“忙”,因为./execTest
仍在访问它......但我确实关闭了该文件的文件流。我做错了什么?