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

> Clean Markdown view of GeekNews topic #30623. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30623](https://news.hada.io/topic?id=30623)
- GeekNews Markdown: [https://news.hada.io/topic/30623.md](https://news.hada.io/topic/30623.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-06-19T09:31:02+09:00
- Updated: 2026-06-19T09:31:02+09:00
- Original source: [github.com/momo5502](https://github.com/momo5502/sogen)
- Points: 5
- Comments: 0

## Topic Body

- **시스템콜(syscall) 수준** 에서 동작하는 고성능 윈도우/리눅스 유저스페이스 에뮬레이터로, 포괄적인 후킹을 통해 프로세스 실행 전반을 제어  
- **보안 연구, 멀웨어 분석, DRM 연구** 등 프로세스 실행에 대한 세밀한 제어가 필요한 작업에 적합  
- Windows API를 재구현하지 않고 **syscall 레벨**에서 동작해 기존 시스템 DLL을 그대로 활용 가능  
- **C++** 로 작성되었으며 원하는 백엔드로 구동 가능: **[Unicorn Engine](https://github.com/unicorn-engine/unicorn), [icicle-emu](https://github.com/icicle-emu/icicle-emu), [Hyper-V(WHP)](https://learn.microsoft.com/en-us/virtualization/api/hypervisor-platform/hypervisor-platform)**  
- **고급 메모리 관리**: Unicorn의 메모리 관리 위에 구축되어 reserved·committed 등 Windows 고유 메모리 타입 지원  
- **완전한 PE 로딩 지원**: 실행 파일 및 DLL 로딩 처리, 적절한 메모리 매핑, 재배치(relocations), TLS 지원  
- **예외 처리**: Windows 구조적 예외 처리(SEH) 구현, 예외 디스패처 및 언와인딩 지원  
- **쓰레딩 지원**: 라운드 로빈(round-robin) 방식의 스케줄링 스레딩 모델 제공  
- **State 관리**: 전체 상태 직렬화와 빠른 인메모리 스냅샷 모두 지원  
- **디버깅 인터페이스**: GDB 시리얼 프로토콜 구현으로 IDA Pro, GDB, LLDB, VS Code 등과 연동 가능  
- 멀웨어 분석 시에 호스트 격리가 완벽하지 않을 수 있어, **[브라우저 샌드박스 기반 웹 버전 사용](https://sogen.dev/#/playground)** 을 권장  
- Python 으로 자동화 가능   
  - `pip install sogen` 으로 설치  
  - 에뮬레이터 실행, 콜백 등록, WinAPI 콜 인터셉트를 파이썬 안에서 바로 처리 가능  
### 발표 자료 슬라이드 참고: [Fake It ‘til We Make It: The Art of Windows User Space Emulation](https://docs.google.com/presentation/d/1pha4tFfDMpVzJ_ehJJ21SA_HAWkufQBVYQvh1IFhVls/edit?slide=id.p1#slide=id.p1)  
- **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** 덕분

## Comments



_No public comments on this page._
