我根本没有逆向工程经验。我希望这个基本问题适合这个网站。基本上我想知道从哪里DARWIN_USER_CACHE_DIR读取值。我正在尝试像这样跟踪系统调用:
sudo bash dtruss /usr/bin/getconf DARWIN_USER_CACHE_DIR -h -f -a
因此,它也将遵循任何分叉流程。但是,我看不到任何表明它来自何处的呼叫。
我根本没有逆向工程经验。我希望这个基本问题适合这个网站。基本上我想知道从哪里DARWIN_USER_CACHE_DIR读取值。我正在尝试像这样跟踪系统调用:
sudo bash dtruss /usr/bin/getconf DARWIN_USER_CACHE_DIR -h -f -a
因此,它也将遵循任何分叉流程。但是,我看不到任何表明它来自何处的呼叫。
注意:我对 OSX 不太了解,如果 24 小时后有另一个答案,我也不会回答。
根据Apple 的说法,getconf使用sysconf和confstr找到这些配置值,使用confstr处理DARWIN_USER_CACHE_DIR。该confstr库函数很可能硬编码这些值-如果你检查glibc的源代码,你看到的glibc的版本confstr会有限制CS_PATH,以及。
但是,confstr手册页还指出,EIO如果存在“与 opendirectoryd(8) 通信的 I/O 错误”,它可以返回错误代码。这意味着这些值也可能是 opendirectory 属性。如果有任何套接字调用,请检查您的 dtruss 输出;如果没有,这些属性可能是在 libc 中硬编码的;否则,这些路径可能隐藏在 opendirectory 配置中的某处。