맞는듯 다른듯한 설명... 일단 컴퓨터공학 공부를 하면서 잘못된 개념 이해를 유발할 수도 있는 거라 정정함
일단 후킹은 운영체제의 인터럽트에 국한되지 않고 운영체제 및 일반 응용 프로그램의 함수 호출이나 메세지, 이벤트를 가로채서 조작하는 것을 말함. 그런데 하드웨어-운영체제 사이에서 외부의 상태 변화에 따라 실행 흐름을 변화시키는 인터럽트는 이에 비해 상당히 좁은 의미의 용어임. 인터럽트에 의한 결과를 도중에 변경한다고 하더라도 운영체제가 이러한 인터럽트를 전달하는 걸 가로채는 게 아니라, 운영체제가 인터럽트를 받으면 발생시키는 시스템 콜을 이용해서 후킹을 한다고 이해하는 게 정확함.
특히 아랄트랜스와 같은 텍스트 후킹 프로그램은 외부 하드웨어 조작을 감시한다기보다는 원래 프로그램에서 화면에 텍스트를 출력하려고 하는 일련의 과정에 개입해서 텍스트를 추출하거나 번역된 텍스트를 대신 넘겨주거나 하는 건데, 이건 주로 메모리 주소를 감시해서 텍스트를 추출하는 거라 본문의 설명과는 거리가 있음. 또한 운영체제가 후킹을 위한 기능을 제공한다는 건 잘못된 사실임.
ㄹㅇ 사실 인터럽트를 가로채는건 말도 안되는 개념이긴 함
애초에 인터럽트 벡터에 박혀있는 핸들러 주소를 함부로 바꾸는것도 안될뿐더러 설사 커널에서 인터럽트를 가로채는 것을 허용하는 구조로 설계했다 할지라도 이미 유저 프로그램에서 인터럽트 핸들링을 한다는 것 자체가 커널 모드가 존재할 이유를 없애버림
근데 그거랑 별개로 후킹으로 다른 프로세스에 전달되는 메시지를 가로채려면 OS에서 제공해줘야하는거 맞지 않음? 애초에 OS가 시스템콜로 후킹을 제공하지 않았다면 이벤트고 메시지고 낚아채서 조작한 다음 다시 전달하려면 진짜 취약점 찾아서 뚫는것밖에 없을텐데