use*_*545 1 c linux assembly execute execve
我试图在Linux上使用execve()
from 生成一个新进程unistd.h
.我试过传递以下参数,execve("/bin/ls", "/bin/ls", NULL);
但没有得到任何结果.我也没有出错,程序就退出了.有没有理由发生这种情况?我尝试以root用户身份启动它.我需要使用的原因execve()
是因为我试图让它在这样的汇编调用中工作
program: db "/bin/ls",0
mov eax, 0xb
mov ebx, program
mov ecx, program
mov edx, 0
int 0x80
Run Code Online (Sandbox Code Playgroud)
谢谢!
你传递的论据execve
是错误的.第二个和第三个必须是具有NULL sentinel值的char指针数组,而不是单个指针.
换句话说,像:
#include <unistd.h>
int main (void) {
char * const argv[] = {"/bin/ls", NULL};
char * const envp[] = {NULL};
int rc = execve ("/bin/ls", argv, envp);
return rc;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我确实得到了当前目录中的文件列表.
归档时间: |
|
查看次数: |
11041 次 |
最近记录: |