离开这个问题后,我修补了我的内核以寻求在 Linux 上启动 SQL Server 2017。现在我走得更远,但我被关闭了,
strstr("TracerPid:\t0\n", "TracerPid:") = "TracerPid:\t0\n"
strtol(0x7fe0cf01840b, 0x7ffd380d5eb0, 10, 0) = 0
free(0x7fe0cf018400) = <void>
fclose(0x7fe0cf011980) = 0
getpid() = 3474
getpid() = 3474
getauxval(31, 9, 5, 0x7fe0d034ea67) = 0x7ffd380dcfe0
strncpy(0x7ffd380d5f00, "/opt/mssql/bin/sqlservr", 4095) = 0x7ffd380d5f00
realpath(0x7ffd380d5f00, 0x7ffd380d6f00, 0, 0x7fe0d0323720) = 0x7ffd380d6f00
getpid() = 3474
abort( <no return ...>
--- SIGABRT (Aborted) ---
我相信在检查之后proc
,SQL Server 会做一些其他的巫术来做与回退相同的事情,只是为了“额外安全”,没有人试图让他们的软件工作。
现在,我想知道是否getauxval(3)
可以用来确定是否正在跟踪进程?似乎CAPABILITIES
表明这是可能的,CAP_SYS_ADMIN
并且CAP_SYS_PTRACE