有没有人知道如何使用NASM获取OSX中的当前工作目录? osx上没有syscall getcwd,dtruss pwd返回大量的stat sys调用。但是在手册中,我无法找到stat的哪个结构变量返回当前工作目录。 感谢。
答案 0 :(得分:1)
这是一点的较晚答案,但是仍然可以使用2个syscall来实现。
open_nocancel
0x2000018e(或open
0x2000005)打开当前目录的文件描述符fcntl_nocancel
0x20000196(或fcntl
0x2000005c)以读取实际路径示例:
#define F_GETPATH 50 ; from <sys/fcntl.h>
currentDirConstant:
db ".",0 ; needs segment read permission
outputPath:
resb 1000 ; needs segment write permission
mov rdi,currentDirConstant; input path 1st argument
xor esi, esi ; int flags 2nd argument, just use 0
xor edx, edx ; int mode 3rd argument, just use 0
mov eax, 0x2000018e ; open_nocancel syscall number
syscall
mov edi,eax ; file descriptor 1st argument of current dir from previous syscall
mov esi,F_GETPATH ; fcntl cmd 2nd argument
mov rdx, outputPath ; output buffer 3rd argument
mov eax, 0x20000196 ; fcntl_nocancel syscall number
syscall