Win32 syscall emulator based on OpenSolaris branded zone - PowerPoint PPT Presentation

About This Presentation
Title:

Win32 syscall emulator based on OpenSolaris branded zone

Description:

Create new win brand, that supports execution of Windows applications on top of ... return (fd); 9. Project progress. Set of scripts for convenient brand testing ... – PowerPoint PPT presentation

Number of Views:20
Avg rating:3.0/5.0
Slides: 13
Provided by: vizov
Category:

less

Transcript and Presenter's Notes

Title: Win32 syscall emulator based on OpenSolaris branded zone


1
Win32 syscall emulator based on OpenSolaris
branded zone
  • Chimera project team
  • Vizovitin Nicolay
  • Sizov Mikhail
  • Kolbin Dmitry
  • Khlebnikov Sergey

Tutor Irtegov D.V.
2
Outline
  1. Idea behind the project
  2. Sources and the goal
  3. How system call emulation works
  4. Project status progress and plans
  5. QA

3
The idea
  • is to mix OpenSolaris and Windows

4
Why OpenSolaris?
  1. Open source
  2. Zones Containers
  3. BrandZ infrastructure support for non-native
    kernel personalities
  4. Numerous interesting kernel features (e.g. DTrace)

5
The chimera parts
  1. OpenSolaris sources (ON)
  2. Windows Research Kernel (WRK) some kernel parts
    of Windows 2003 SP1
  3. Other open-source projects like Wine and ReactOS

6
Our goal
  • Create new win brand, that supports execution of
    Windows applications on top of OpenSolaris kernel

7
System call emulation global zone
Global zone (native)
Solaris process open()
userland
kernel
Solaris kernel
Syscall handler if (process is branded)
brand_syscall_handler() else rval
do_native_syscall() return to userspace
Native open implementation open()
return (fd)
8
System call emulation win zone
Windows zone
Win brand support library win_NtCreateFile(args)
fd open(win2sol(args)) if (fd lt 0)
return (sol2win(errno)) else return (fd)
Windows process NtCreateFile()
userland
kernel
Solaris kernel
Windows brand module
Syscall handler if (process is branded)
brand_syscall_handler() else rval
do_native_syscall() return to userspace
win_syscall() trampoline to userland
Native open implementation open()
return (fd)
9
Project progress
  1. Set of scripts for convenient brand testing
  2. Dynamic memory allocation is now available in
    brand support library
  3. Arbitrary calls to libraries from brand support
    library is safe now (first of all to libc.so)
  4. Partially implemented PE loader
  5. Emulation code for several syscalls

10
Current project status
  • Extensive documentation of WRK sources
  • Learned to build ON and WRK
  • Created basic win zone
  • win brand kernel module
  • win brand support library
  • zone configuration files
  • support for system calls via sysenter
  • Number of test programs
  • Partial PE loader implementation
  • Some system calls implemented

11
Plans on project development
  1. Finish PE loader implementation
  2. Emulation code for other Windows system calls
  3. Create minimal Windows environment in the zone
  4. Allowing other technics for entering the kernel
    (int 2e, syscall)

12
QA
Write a Comment
User Comments (0)
About PowerShow.com