나는 읽은 시스템 호출을 후킹하고있는 커널 모듈을 가지고있다. 제가해야 할 일 중 하나는 교사가 제출 한 외부 프로그램을하는 읽기 시스템의 내용을 포착하는 것입니다. strace를 가진 후크 읽기 syscall
, 나는 선생님의 프로그램이 읽기 어떻게하고 있는지 볼 수 있었다 :read(6, "\v\0\0\0\tExercise1", 14)
그리고 노력 읽기 후킹, 문제는, 내가 읽는 방법을 모르는 원래의 syscall 읽기가 호출 될 때까지 필자가 올바르게 * buf가 비어 있고 채워지지 않기 때문에 새 읽기 함수 내부의 내용. 그래서, 이론적으로 파일 기술자로부터 직접 읽어야하지만, 읽는 시스템 호출을 사용하지 않고 나는 그것을 어떻게하는지 모른다.
아이디어가 있으십니까? 감사! 당신이 buf
의 내용을 읽고 싶다면
size_t my_hooked_read(int fildes, void *buf, size_t nbytes)
{
size_t ret;
//Do something before original call
ret = original_read(fildes, buf, nbytes); //call the original read !
//Do something after original call
//buf is correctly filled here !
return ret;
}
은 원래 통화 후 읽기 :
후킹 모듈의 코드를 보여줄 수 있습니까? – Michael