본문으로 건너뛰기

© 2026 Molayo

GeekNews헤드라인2026. 06. 19. 09:41

sogen - 고성능 Windows & Linux 유저스페이스 에뮬레이터

요약

sogen은 syscall 수준에서 동작하는 고성능 Windows 및 Linux 유저스페이스 에뮬레이터입니다. C++로 작성되어 Unicorn Engine 등을 백엔드로 활용하며, 보안 연구 및 멀웨어 분석을 위한 정밀한 프로세스 제어 기능을 제공합니다.

핵심 포인트

  • syscall 레벨 동작으로 기존 시스템 DLL을 그대로 활용 가능
  • 보안 연구, 멀웨어 분석, DRM 리버싱에 최적화된 설계
  • Unicorn, Hyper-V 등 다양한 백엔드 지원 및 Python 자동화 가능
  • JIT 기술을 통한 빠른 에뮬레이션 속도 확보
  • GDB 프로토콜 지원으로 IDA Pro, VS Code 등과 연동 가능

시스템콜(syscall) 수준 에서 동작하는 고성능 윈도우/리눅스 유저스페이스 에뮬레이터로, 포괄적인 후킹을 통해 프로세스 실행 전반을 제어
보안 연구, 멀웨어 분석, DRM 연구 등 프로세스 실행에 대한 세밀한 제어가 필요한 작업에 적합

  • Windows API를 재구현하지 않고
    syscall 레벨에서 동작해 기존 시스템 DLL을 그대로 활용 가능
    C++ 로 작성되었으며 원하는 백엔드로 구동 가능: Unicorn Engine, icicle-emu, Hyper-V(WHP)
    고급 메모리 관리: Unicorn의 메모리 관리 위에 구축되어 reserved·committed 등 Windows 고유 메모리 타입 지원
    완전한 PE 로딩 지원: 실행 파일 및 DLL 로딩 처리, 적절한 메모리 매핑, 재배치(relocations), TLS 지원
    예외 처리: Windows 구조적 예외 처리(SEH) 구현, 예외 디스패처 및 언와인딩 지원
    쓰레딩 지원: 라운드 로빈(round-robin) 방식의 스케줄링 스레딩 모델 제공
    State 관리: 전체 상태 직렬화와 빠른 인메모리 스냅샷 모두 지원
    디버깅 인터페이스: GDB 시리얼 프로토콜 구현으로 IDA Pro, GDB, LLDB, VS Code 등과 연동 가능
  • 멀웨어 분석 시에 호스트 격리가 완벽하지 않을 수 있어,
    브라우저 샌드박스 기반 웹 버전 사용 을 권장
  • Python 으로 자동화 가능
    pip install sogen

으로 설치

  • 에뮬레이터 실행, 콜백 등록, WinAPI 콜 인터셉트를 파이썬 안에서 바로 처리 가능

Windows User Space Emulation이란?

  • 프로세스를
    에뮬레이터 안에서 실행하고, 그 아래의 OS와 커널을 시뮬레이션하는 기법

  • 일반적인 에뮬레이션이 코드를 가상 CPU에서 돌리고 하드웨어를 시뮬레이션하는 것이라면, 유저스페이스 에뮬레이션은 그 위에서 OS·커널 계층까지 흉내내는 방식

  • 이게 주는 핵심 가치는
    실행되는 코드에 대한 완전한 제어 — 에뮬레이터가 모든 실행 단계에 개입할 수 있음

  • 제어는
    후킹 포인트(hooking points) 를 통해 이뤄짐
    메모리 접근 후킹 — read, write, execute 단위로 가로채기
    명령어 실행 후킹 — syscall, cpuid, rdtsc 같은 특정 명령어 실행 시점 포착
    새 코드 경로(new code path) 실행 후킹 — 처음 실행되는 코드 경로 감지

  • 이 후킹 능력 덕분에 외부 통신 가로채기, 실행 흐름 추적, 코드 커버리지 측정 등이 가능해,
    DRM 분석·멀웨어 분석·취약점 분석·보안 연구의 기반이 됨

  • 발표자는
    DRM 개발자로 Steam CEG, Arxan, Denuvo 등 다수 DRM을 리버싱 및 우회한 경력이 있음

  • 윈도우용 게임들이 많이 쓰는
    Denuvo DRM 분석에 에뮬레이션이 핵심 수단이었음

  • 현대 DRM은 난독화/안티 탬퍼링/안티 디버깅으로 정적 및 동적 분석이 종종 불가능하기 때문

  • 에뮬레이터를
    취약점 분석(퍼징) 에 활용: 에뮬레이터 내부ㅠ에서 입력을 무작위화하고, 후킹으로 코드 커버리지 피드백을 받으며, 실행이 예측 가능하고 반복도 가능

  • 기존 솔루션의 한계가 개발 동기

  • Qiling·Speakeasy·Dumpulator는
    Python이라 후킹이 많은 DRM 분석에서 극도로 느림

  • Binee·Unicorn PE는
    API 레벨 재구현이라 불완전하고 버그 발생 가능

  • syscall 규모: ntdll.dll 일반 syscall
    409개, win32u.dll UI syscall 1474개

  • 빠른 에뮬레이션 속도는
    JIT 덕분

댓글과 토론

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0