Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

다른 syscall 부르는 방법에 대한 질문 #7

Open
minitu opened this issue Oct 12, 2015 · 5 comments
Open

다른 syscall 부르는 방법에 대한 질문 #7

minitu opened this issue Oct 12, 2015 · 5 comments

Comments

@minitu
Copy link

minitu commented Oct 12, 2015

System Call Interposition 부분의 2번인 register에 담긴 system call number와 argument를 바꾸어 원래와 다른 system call을 부르도록 하려고 합니다.

tracer 코드에서 ptrace(PTRACE_SYSCALL, child, NULL, NULL)을 부르면
system call이 불린 이후(entry)와 끝난 다음(exit)에서 tracee가 잡히는 것 같은데
불린 이후에 잡힌다면 system call을 수정할 수 없는 것 아닌가요?
맨 처음 불리는 execve (syscall # 59)을 잡을 때 entry 부분에서 SETREGS를 통해 레지스터 값을 수정해 보았는데 execve가 그대로 불리는 것을 확인했습니다.

도움 부탁드립니다!

@wynot12
Copy link
Contributor

wynot12 commented Oct 13, 2015

@minitu, 안녕하세요 :)

확인 해본 결과, x86에서는 ptrace로 system call number를 바꿀 수 없다고 합니다.
architecture마다 가능/불가능이 다르다고 합니다.

해당 case를 미리 테스트를 해보지 않아 혼동을 드려 죄송합니다.

과제에서 1.2를 삭제하도록 하겠습니다.
제보 감사합니다 :)

@minitu
Copy link
Author

minitu commented Oct 13, 2015

@wynot12 답변 감사합니다.
그런데 1.2에 argument를 변경하는 것은 그대로 두신 것 같은데요,
말씀드린대로 tracee가 system call을 실행한 이후에야 tracer가 register 값을 변경할 수 있으므로 argument 변경 역시 불가능한 것 아닌가요?

@wynot12
Copy link
Contributor

wynot12 commented Oct 13, 2015

ptrace에게 잡히는 system call entry는 system call이 실행된 이후는 아니고 system call이 시작된 이후라고 표현하는 것이 더 적절한 것 같습니다.
system call number에 따라 특정 system call routine이 시작된 후에 ptrace에 의해 interpose되는 것으로 보입니다.

system call argument는 ptrace로 변경이 가능합니다. 실습 시간에 ptrace를 통해 system call argument를 변경해보는 case를 진행했었습니다.

@minitu
Copy link
Author

minitu commented Oct 13, 2015

@wynot12 아 실습시간에 했었는데 깜빡했네요. 감사합니다.

@wynot12
Copy link
Contributor

wynot12 commented Oct 13, 2015

네, 다른 분들에게 도움이 될 수 있도록 질문 주셔서 감사합니다 :)

추가적인 질문이 있으시면 언제든 말씀해주시기 바랍니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants