次のように、kext を使用して OS X でシステム コールをログに記録しています。
int hook_read(struct proc *p, struct read_args *u, user_ssize_t *r) {
/* get som params here... */
printf("[IDEN] SYS_read called, %s, %d, %d, %d.\n", params);
return read(p, u, r);
}
これは に記録されsystem.log
ます。現在の問題は、printf
負荷が高い場合 (多くのシステム コールが呼び出される場合)、出力のsystem.log
形式が正しくないことが多いこと
ID]SYS_readEN] callparam, 123, ed 123, 123
です。たとえば、. 文字列はスクランブルされています。kprintf
シリアル ポートに出力するを使用すると、不正な形式のログが発生することはありません。
この動作を引き起こしているアイデアは大歓迎です!