박스 내부에서 DOSBox 감지하기
DOSBox 내부에서 DOSBox임을 감지하는 방법이 새롭게 제시되었습니다.
기존에는 BIOS 버전 문자열이나 드라이브 시리얼 번호 같은 외부 정보로 감지했으나, 이는 쉽게 위조가 가능하여 신뢰도가 낮았습니다.
DOSBox는 x86 명령어 집합에 없는 자체 커스텀 명령어(0xFE /7)를 도입해 콜백 기능을 구현하고 있습니다.
이 명령어는 일반 x86 CPU에서는 Invalid Instruction 예외를 발생시키지만, DOSBox 내에서는 정상적으로 처리되어 이를 이용한 감지가 가능합니다.
따라서, 이 커스텀 명령어 실행 시 발생하는 예외를 잡아내는 인터럽트 핸들러를 구현하면 DOSBox 환경임을 정확히 판별할 수 있습니다.
86Box와 같은 다른 에뮬레이터에서는 이 명령어 처리에 버그가 있었으나, 최근 수정되어 실제 하드웨어 동작과 일치하도록 개선되었습니다.
이 방법은 DOSBox뿐 아니라 NTVDM, Win9x MS-DOS 프롬프트, DOSEMU 등 다른 DOS 에뮬레이터 감지에도 응용할 수 있습니다.
요약하면, DOSBox 고유의 가상 CPU 명령어를 활용한 예외 처리 방식이 가장 확실한 DOSBox 감지 기법으로 자리잡았습니다.