현대 x86 데스크탑에서 레거시 MIPS Windows 바이너리 실행
MIPS R4000 명령어를 에뮬레이트하면서 네이티브 PE MIPS 바이너리를 로드하고, 시스템 호출을 매핑하며, 멀티스레드 앱을 위한 스레드별 CPU 상태를 유지합니다. x86matthew가 만든 WoWMIPS는 동적 API 리디렉션과 벡터 예외 처리를 사용하여 MIPS 콜백을 호스트 API로 라우팅하는 Windows 유틸리티 도구입니다. 주요 기능으로는 재배치 인식 PE 로딩, 스레드 로컬 CPU 상태, 그리고 경량의 프로세스 내 실행이 포함됩니다. 이는 전체 머신 에뮬레이터 없이 오래된 Windows NT MIPS 코드를 실행해야 하는 리버스 엔지니어, 레트로 컴퓨팅 취미자, 보안 연구자에게 적합합니다.
WoWMIPS가 MIPS 프로그램을 실행할 때 실제로 하는 일
WoWMIPS는 MIPS R4000 명령어를 x86으로 즉시 변환합니다 그리고 MIPS 형식의 Portable Executable 파일을 로드하며, 재배치 처리를 하여 Windows NT를 위해 컴파일된 바이너리가 호스트 프로세스에서 실행될 수 있도록 합니다. 로더는 로드 시간에 API 스텁을 생성하여 MIPS 시스템 호출을 네이티브 Windows API로 리디렉션하며, 이 도구는 각 스레드마다 CPU 레지스터와 상태를 유지하여 다중 스레드 MIPS 바이너리가 별도의 실행 컨텍스트를 유지하도록 합니다.
실행 중 호스트 시스템에 미치는 영향
이 프로젝트는 오버헤드를 줄이기 위해 프로세스 내에서 실행됩니다, 에뮬레이트된 코드에 직접 메모리 접근을 제공하여 별도의 가상 머신을 실행하는 대신에. 이러한 설계는 전체 시스템 에뮬레이터와 비교하여 자원 사용을 줄이며, Vectored Exception Handling은 지속적인 수동 훅 없이 콜백을 가로챕니다. 실행이 호스트 주소 공간 내에서 발생하기 때문에, 이 도구는 설계상 성능과 단순성을 위해 격리를 거래합니다.
안전성, 호환성 한계 및 사용해야 하는 사람
WoWMIPS는 명시적인 한계를 가진 개념 증명으로 작동합니다: 부동 소수점 장치(FPU) 지원이 부족하여 FPU에 의존하는 애플리케이션의 호환성이 제한되며, 원래 오래된 Windows NT 릴리스를 위해 빌드된 사용자 모드 MIPS-I/R4000 바이너리를 대상으로 합니다. 개발자는 검토를 위한 소스 코드를 제공하여 명령어 매핑 및 API 리디렉션 메커니즘에 대한 가시성이 필요한 연구자 및 역공학자에게 도움을 줍니다.
전문가를 위한 실용적인 도구, 명확한 호환성 절충안
WoWMIPS는 현대 데스크탑에서 간단한 MIPS 시대 Windows 바이너리를 프로세스 내에서 실행해야 하는 연구자 및 레트로 컴퓨팅 사용자들을 위한 실용적인 실험입니다. 낮은 오버헤드, 논-썽크 API 리디렉션 및 VEH 기반 콜백은 강점이며, FPU 지원의 부재는 광범위한 애플리케이션 호환성을 방해하는 단일 기술적 제한입니다.