系统调用如何转换为CPU指令?
假设有一个简单的程序,例如: #include<stdio.h> void main() { int x printf("Cool") fd = open("/tmp/cool.txt", O_READONLY) } open 这里是一…
我如何知道 pthread_mutex_destroy 中的系统错误是什么?
我正在使用命令“pthread_mutex_destroy(&lock)”。 当我检查返回值时 - 它返回数字 16。 在该命令的手册页中,据说失败时会返回非零值,但没有指…
syscall、sys_open 或 open 哪个是?
我认为 sys_open 是规范的系统调用, 即那些以 sys_ 为前缀的系统调用。 但是 strace 应该记录所有系统调用,输出 open 作为系统调用(非前缀版本),…
Linux 中的所有系统调用都在哪里恢复?
pstrace 可用于跟踪所有SYSCALL, 但是所有SYSCALL都在哪里恢复? 我需要知道这一点,以便我可以使用 grep xxx 来知道 xxx 是否是系统调用。…
sys_open 的 ptrace %edx 不一致
我正在尝试使用 ptrace 从 sys_open 系统调用中获取文件名。我获得了文件路径指针,并且能够从该地址获取正确的数据,但是,我需要一种方法来知道要获…
Linux:通过 ptrace() 执行系统调用
嘿 :) 我目前正在为 x86/x64 Linux 开发一个内存黑客库。 我挣扎的重点是实现某种远程系统调用执行。 这是我的代码,当我尝试执行有效的系统调用时…
在 Linux 中,在进入 sys 调用时,%eax 中的值是多少? (不是 orig_eax)
当系统调用返回时,我在 êx 中得到系统调用返回值,但是在输入时我得到 -38,即十六进制的 0xFFFFFFDA。这适用于写/读。这个数字是多少?它可以用来安…
Linux中真的没有超过6个参数的系统调用吗?
unistd.h中有_syscall0~_syscall6: _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) 那么我的结论对不对…
strace:如何确定一个系统调用是否调用了另一个系统调用?
“strace 是一个系统调用跟踪器,即一个调试工具,它打印出另一个进程/程序进行的所有系统调用的跟踪。” 如果系统调用递归地工作或者一个系统调用调…
NASM中断x86参考?
我似乎找不到关于 Linux 系统上 NASM x86 中断的好参考。例如,int 0x60 是什么?它与 int 0x80 有什么不同? 是否有手册列出了可以与 int 结合使用的…
使用 gdb 进行 fork() 系统调用
我想使用 gdb 来研究 fork() 系统调用的各种细节。为此,我在 fork() 处使用了一个断点,从那里开始我使用步骤命令,但这样它就不能正常工作。 有人可…
c++ cgi应用程序调用其他程序失败
我开发了一个在 Windows 和 Linux 下运行的 C++ CGI 程序。 该程序调用另一个程序,如下所示: system("otherProgram.exe arguments") 我也尝试过: s…