시스템콜에 대해 궁금한점이...

newold의 이미지

리눅스에서 시스템 콜이 호출되면 entry.S에서 sys_call_table에 각 시스템 콜에 대한 처리 루틴 주소가 있어서 시스템 콜이 수행되는 걸로 알고 있는데

만약 모든 시스템 콜이 발생하기 전에 각 시스템 콜에 대한 log를 남기려 한다면 어떤 방법이 있나요? 가능 한가요?

strace를 이용하면 특정 명령어에 대해서만 어떤 시스템 콜을 호출했는지는 출력되던데
이런 거 말고 모든 시스템콜이 호출되면 그 시스템 콜을 한 process의 uid와 같은 정보를 logging하는 방법이 없을까요?

powerson의 이미지

음.. current 프로세스를 가지고 하면 현재 시스템 콜 한 process의 uid 정보를 얻을 수 있습니다.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

new5244의 이미지

Quote:
리눅스에서 시스템 콜이 호출되면 entry.S에서 sys_call_table에 각 시스템 콜에 대한 처리 루틴 주소가 있어서 시스템 콜이 수행되는 걸로 알고 있는데

이대로 하시면 됩니다.

entry.S 에서 system_call 을 보시면 요청한 시스템콜 번호에 따라 sys_call_table 에서 해당 주소를 얻어와 시스템콜을 수행합니다.
요 시점에 로깅함수를 넣으면 쉽게 구현 할 수 있습니다.

from saibi

emptysky의 이미지

powerson wrote:
음.. current 프로세스를 가지고 하면 현재 시스템 콜 한 process의 uid 정보를 얻을 수 있습니다.

current 포인터겠죠 :)

『 아픔은.. 아픔을 달래줄 약이 무엇인지 알면서도 쓰지 못할 때 비로소 그 아픔의 깊이를 알수가 있음이다. 』
『 for return...』