macOS Unlocker V4.0 for VMware Workstation

macOS Unlocker V4.0 for VMware Workstation


IMPORTANT

  1. Use a release from the Releases section of this GitHub repository. https://github.com/DrDonk/golocker/releases
  2. Always uninstall the previous version of the Unlocker before using a new version or running an update on the VMware software. Failure to do this could render VMware unusable.
  3. You use this software at your own risk and there are no guarantees this will work in future versions of VMware Workstation.

1. Introduction

Unlocker 4 is designed for VMware Workstation and Player 16 and has been tested against:

  • Workstation Pro 16 on Windows and Linux
  • Workstation Player 16 on Windows and Linux

It is important to understand that the Unlocker does not add any new capabilities to VMware Workstation and Player but enables support for macOS that is disabled in the VMware products that do not run on Apple Hardware. These capabiltiites are normally exposed in Fusion and ESXi when running on Apple hardware. The Unlocker cannot add support for new versions of macOS, add paravirtualized GPU support or any other features that are not already in the VMware compiled code.

What the Unlocker can do is enable certain flags and data tables that are required to see the macOS type when setting the guest OS type, and modify the implmentation of the virtual SMC controller device. The patch code carries out the following modifications dependent on the product being patched:

  • Fix vmware-vmx and derivatives to allow macOS to boot
  • Fix vmwarebase.dll or libvmwarebase.so to allow Apple guests to be selected during VM creation
  • Provide a copy of the macOS VMware Tools for the guest

In all cases make sure VMware is not running, and any background guests have been shutdown.

2. Prerequisites

The code has no pre-requisites and should run directly from the download. The code is written in Go with some utility Bash and Powershell files.

3. Windows

On Windows you will need to either run a Command or Powershell prompt as Administrator and navigate to the folder where the golocker has been unpacked and run:

.\windows\unlocker.exe <install | uninstall>
   install - install patches
   uninstall - uninstall patches

4. Linux

On Linux you will need to be either root or use sudo to run the scripts in the terminal and navigate to the folder where the golocker has been unpacked and run:

./linux/unlocker <install | uninstall>
   install - install patches
   uninstall - uninstall patches

5. VMware Downloads

These URLs will link to the latest versions of VMware's hosted products:

6. VMware Tools

The Unlocker provides the VMware tools ISO images. There can be newer releases available which can be downloaded from these URLs if the script has not yet been updated:

These URLs require a VMware login to download.

Version 16 of Workstation Pro recognises the darwin.iso files and the tools can be installed in the usual way by using the "Install VMware Tools" menu item. The Player version does not automatically pick up the ISO images and so the ISO must be maually attached to the VM via the guest's settings.

9. Thanks

Thanks to Zenith432 for originally building the C++ Unlocker and Mac Son of Knife (MSoK) for all the testing and support.

Thanks also to Sam B for finding the solution for ESXi 6 and helping me with debugging expertise. Sam also wrote the code for patching ESXi ELF files and modified the Unlocker code to run on Python 3 in the ESXi 6.5 environment.

(c) 2011-2021 David Parsons

Comments
  • macOS Ventura Testing

    macOS Ventura Testing

    It looks like there is a common issue for systems wih AMD and older Intel CPUS. There is no library available for the system.

    I will use this thread to track it, but currently do not have an answer to the problem.

    Library not loaded: /usr/lib/libSystem.B.dylib
    
      Referenced from: <2D7AC05B-8AF0-3676-A40A-E40B77ACA459> /sbin/launchd
    
      Reason: tried: '/usr/lib/libSystem.B.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/lib/libSystem.B.dylib' (no such file), '/usr/lib/libSystem.B.dylib' (no such file, no dyld cache)
    
    AMFI: Denying core dump for pid 1 (launchd)pid 1 exited -- exit reason namespace 6 subcode 0x1, description Library not loaded: /usr/lib/libSystem.B.dylib
      Referenced from: <2D7AC05B-8AF0-3676-A40A-E40B77ACA459> /sbin/launchd
      Reason: tried: '/usr/lib/libSystem.B.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/lib/libSystem.B.dylib' (no such file), '/usr/lib/libSystem.B.dylib' (no such file, no dyld cache)
    Debugger called: <panic>
    
    panic(cpu 3 caller 0xffffff800b30a796):  initproc failed to start -- exit reason namespace 6 subcode 0x1 description: Library not loaded: /usr/lib/libSystem.B.dylib
      Referenced from: <2D7AC05B-8AF0-3676-A40A-E40B77ACA459> /sbin/launchd
      Reason: tried: '/usr/lib/libSystem.B.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/lib/libSystem.B.dylib' (no such file), '/usr/lib/libSystem.B.dylib' (no such file, no dyld cache)
    
    uuid info:
     0x10585e000	uuid = <2d7ac05b-8af0-3676-a40a-e40b77aca459>
     0x10f0e4000	uuid = <0f050705-2258-3d40-b7bc-f3b35a44bbea>
    
    Thread 0 crashed
    
    RAX: 0x0000000002000209, RBX: 0x0000000000000000, RCX: 0x00007ff7ba6a0738, RDX: 0x00007ff7ba6a0ba0
    RSP: 0x00007ff7ba6a0738, RBP: 0x00007ff7ba6a0780, RSI: 0x0000000000000001, RDI: 0x0000000000000006
    R8:  0x00007ff7ba6a07a0, R9:  0x0000000000000000, R10: 0x000000000000003d, R11: 0x0000000000000246
    R12: 0x000000000000003d, R13: 0x00007ff7ba6a0ba0, R14: 0x0000000000000001, R15: 0x0000000000000006
    RFL: 0x0000000000000246, RIP: 0x000000010f14d83a, CS:  0x0000000000000007, SS:  0x0000000000000023
    
    Thread 0: 0xffffff86e5063598
    	0x000000010f14d83a
    	0x000000010f1669f9
    	0x000000010f0ee1e1
    	0x000000010f0eb660
    	0x000000010f0ea281
    
  • Test using AMD Ryzen CPU

    Test using AMD Ryzen CPU

    I recently tested the unlocker on my son's AMD Ryzen based laptop (thanks Dan), and looking for others to try it out using a vanilla macOS installation, not one with an AMD kernel or patches. The unlocker cannot patch this but we can recommend settings for the VMX file that allows macOS to run on recent AMD CPUs

    The CPU spec was: AMD Ryzen 3 3200U with Radeon Vega Mobile Gfx @ 2.60 Ghz

    It ran when the following lines were added to the VMX file:

    cpuid.0.eax = "0000:0000:0000:0000:0000:0000:0000:1011"
    cpuid.0.ebx = "0111:0101:0110:1110:0110:0101:0100:0111"
    cpuid.0.ecx = "0110:1100:0110:0101:0111:0100:0110:1110"
    cpuid.0.edx = "0100:1001:0110:0101:0110:1110:0110:1001"
    cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"
    cpuid.1.ebx = "0000:0010:0000:0001:0000:1000:0000:0000"
    cpuid.1.ecx = "1000:0010:1001:1000:0010:0010:0000:0011"
    cpuid.1.edx = "0000:0111:1000:1011:1111:1011:1111:1111"
    

    UPDATE You must have Hyper-V disabled on Windows or VMware falls back to a mode called ULM. CPUID masking is not available in ULM mode as it is pushed to Windows for the low level VMX/SVM operations. You can see if VMware is in ULM mode on Hyper_V by searching the guest's vmware.log file for these 2 lines:

    vmx IOPL_Init: Hyper-V detected by CPUID

    Monitor Mode: ULM

    Here is a link to a Microsoft artcile on disabling Hyper-V.

    https://docs.microsoft.com/en-us/troubleshoot/windows-client/application-management/virtualization-apps-not-work-with-hyper-v

    Editing the VMX file

    1. Read this KB article to learn how to edit a guest's VMX file safely https://kb.vmware.com/s/article/2057902
    2. Add the following lines to the VMX file:
    cpuid.0.eax = "0000:0000:0000:0000:0000:0000:0000:1011"
    cpuid.0.ebx = "0111:0101:0110:1110:0110:0101:0100:0111"
    cpuid.0.ecx = "0110:1100:0110:0101:0111:0100:0110:1110"
    cpuid.0.edx = "0100:1001:0110:0101:0110:1110:0110:1001"
    cpuid.1.eax = "0000:0000:0000:0001:0000:0110:0111:0001"
    cpuid.1.ebx = "0000:0010:0000:0001:0000:1000:0000:0000"
    cpuid.1.ecx = "1000:0010:1001:1000:0010:0010:0000:0011"
    cpuid.1.edx = "0000:0111:1000:1011:1111:1011:1111:1111"
    vhv.enable = "FALSE"
    vpmc.enable = "FALSE"
    
    1. Make sure there are no duplicate lines in the VMX file or the guest will not start and a dictionary error will be displayed by VMware.
    2. You can now install and run macOS as a gu

    So looking for others to try this out and report back here with any details on success or failure.

  • Keep rebooting on macOS Ventur

    Keep rebooting on macOS Ventur

    I upgraded to macOS Ventura recently. After upgrading, I applied patches to VMware. But I am getting this error. Screenshot_1

    • Release version: 4.2.3
    • OS: Windows 10
    • VMware version: 16.2.4 build-20089737
  • macOS Ventura + VMware Workstation Player on Linux = Boot error

    macOS Ventura + VMware Workstation Player on Linux = Boot error

    Hi,

    As previously mentioned in this issue ( https://github.com/DrDonk/unlocker/issues/51#issuecomment-1338316853 ) I've been trying to install macOS Ventura on the latest VMware Workstation Player on Linux on Arch ( https://aur.archlinux.org/packages/vmware-workstation ) and I used your patcher ( https://aur.archlinux.org/packages/vmware-unlocker-bin ) which worked fine, and patched the VMWare binaries.

    I can successfully create a new VM choosing macOS ( up to version 14 ) as a confirmation of the patch and I can boot a macOS VM. Although upon using your Intel template and trying to boot the ISO I created using a genuine macOS machine on top of that said template, VMware shows up a screen like this after 30s of loading ( the progress bar moves while the Apple logo is on the screen ):

    zMY5VI.png

    Any idea how could I approach this and provide additional logs?

    Machine spec: CPU: Intel i7-8550U RAM: 8GB DDR4 SSD: 256GB NVMe GPU: Intel UHD 620 + Nvidia MX 130 Linux Kernel: 6.0.11.arch1-1

    As an additional note, running the same ISO, on the same machine, but using Windows 11 instead of Linux ( and VMware Workstation 17 patched with your unlocker ) works just fine.

    Thank you in advance, Julian

  • Failure to build for 16.2.4

    Failure to build for 16.2.4

    Log

    $ sh build.sh 16.2.4
    Building release executables
    build.sh: 10: pushd: not found
    Building check
    build.sh: 12: go-winres: not found
    no Go files in /home/user/git/unlocker
    no Go files in /home/user/git/unlocker
    rm: cannot remove 'rsrc_windows_amd64.syso': No such file or directory
    build.sh: 16: popd: not found
    build.sh: 18: pushd: not found
    Building relock
    build.sh: 20: go-winres: not found
    no Go files in /home/user/git/unlocker
    no Go files in /home/user/git/unlocker
    rm: cannot remove 'rsrc_windows_amd64.syso': No such file or directory
    build.sh: 24: popd: not found
    build.sh: 26: pushd: not found
    Building unlock
    build.sh: 28: go-winres: not found
    no Go files in /home/user/git/unlocker
    no Go files in /home/user/git/unlocker
    rm: cannot remove 'rsrc_windows_amd64.syso': No such file or directory
    build.sh: 32: popd: not found
    'LICENSE' -> './dist'
    cp: target './dist' is not a directory
    cp: cannot overwrite non-directory './dist' with directory './iso'
    
  • [windows] Unable to patch because not all required services is stopped

    [windows] Unable to patch because not all required services is stopped

    > unlocker.exe uninstall
    Unlocker 4.1.1 for VMware Workstation/Player
    ============================================
    © 2014-2022 David Parsons
    
    VMware is installed at:  C:\Program Files (x86)\VMware\VMware Workstation\
    VMware version:  17198959
    
    Stopping VMware services and tasks...
    Stopping service  VMAuthdService
    panic: Control(VMAuthdService) failed: A stop control has been sent to a service that other running services are dependent on.
    
    goroutine 1 [running]:
    github.com/drdonk/golocker/vmwpatch.svcStop({0x1027280, 0xe})
            /Users/dave/Projects/lang-go/golocker/vmwpatch/vmw_windows.go:223 +0x1f9
    github.com/drdonk/golocker/vmwpatch.VMWStop(0xc0000de000)
            /Users/dave/Projects/lang-go/golocker/vmwpatch/vmw_windows.go:71 +0xc5
    main.main()
            /Users/dave/Projects/lang-go/golocker/command/unlocker.go:73 +0x2c5
    

    OS: Windows 10 21H1

  • Cannot erase disk for MacOs on VMWare in Windows 10

    Cannot erase disk for MacOs on VMWare in Windows 10

    Hello,

    I try to install MacOS big Sur on my VMWare player on Windows 10. I have followed lot of different tutorials that are all the same, actually. This worked one time (the first time), but then when I deleted my VM and tried to create it again, the erase action systematically failed:

    VMware Player unrecoverable error: (aioCompletion) // Exception 0xc0000005 (access violation) has occurred.

    I have full admin access on my laptop, so I guess there is some kind of "history" that is kept and that prevent me from using my disk again and erase it.

    Would you have any idea how to fix that, please?

    I tried:

    Running everything as admin (unlocker and VMWare) removing both unlocker and VMWare Rebooting after having installed VMWare and Unlocker etc...

    But still the same error.

    Thank you.

    Steve.

  • Unlocker

    Unlocker

    When you double click either check, relock or unlock, it displays yes or no for admin privilege, then, shows the command prompt and ask you to press enter, after pressing enter, the prompt disappears and it doesn't unlock, check or relock the VMWare workstation. May you resolve this please. I attempted this on Windows 11 on the latest VMWare Workstation 16 Pro. Thank you.

  • My mac ventura gets looped when booting vmware

    My mac ventura gets looped when booting vmware

        My mac ventura gets looped when booting vmware
    

    https://user-images.githubusercontent.com/78673505/206089114-bd3fe028-3e7c-4718-ae8b-b07fb969b912.mp4

    Originally posted by @Ayushprtp in https://github.com/DrDonk/unlocker/issues/62#issuecomment-1340360573

  • GPU Acceleration?

    GPU Acceleration?

    I was wondering when will Unlocker potentially support Apple VGPU support? The reason why I am asking, is because the Darwin.iso only gets you up to 128 MB, when you can have more somehow. I wish you guys the best of luck and hopefully we can get a solution to "the new way to Hackintosh."

  • About This Mac

    About This Mac

    This is not an issue. It's a request for help/documentation.

    Is there a way of having a correct mac Serial Number and Hardware in "About this Mac" ?

    Thanks Gonzalo

  • VMCorePkg

    VMCorePkg

    Hello, I need help from you I want to install macOS Ventura in vmware but after the installation macOS keeps restarting and now I saw on your site you uploaded a vmx-opencore I know there is no support from your site about this one whole files in vmx-opencore where do they belong and do you only have to copy the files after the installation of macOS or before that would be my question and if that works respect to you Warm greetings

Go library for the VMware vSphere API

govmomi A Go library for interacting with VMware vSphere APIs (ESXi and/or vCenter). In addition to the vSphere API client, this repository includes:

Dec 6, 2021
🗑️ Cleanup script for macOS

MacCleanup A cleanup script for macOS that cleans up your system. Features By default it performs the following tasks: Empty the Trash on All Mounted

Mar 29, 2022
A docker image and a launcher to run sasm on Windows and MacOS
A docker image and a launcher to run sasm on Windows and MacOS

Sasm-docker Sasm-docker simplifies the setup and use of SASM by running it inside a docker container and using x11 (X Window System) in order to displ

Nov 14, 2022
A proof-of-concept project that makes accessible buildkitd daemon from macOS

buildkit-machine buildkit-machine allows you to make buildkitd daemon accessible in your macOS environment. To do so, it uses lima, which is a Linux s

Dec 21, 2022
Official provider for VMware desktop products: Fusion, Player, and Workstation.

Vagrant VMware Desktop Providers This is the common codebase for the official providers for VMware desktop products: Fusion, Player, and Workstation.

Jan 7, 2023
go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs.

About go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs. Caveats Right now most of the heavy lifting is done by

Aug 18, 2022
Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.
Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.

pinentry-touchid Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain. Macbook Pro devic

Jan 1, 2023
Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own endpoint.
Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own endpoint.

?? security-slacker Pokes users on Slack about outstanding risks found by Crowdstrike Spotlight or vmware Workspace ONE so they can secure their own e

Nov 29, 2022
App for VMware Workstartion to auto start VM's on windows reboot

VMware Workstation AutoStart This is an auto start app for VMware Workstation to auto start VM's on windows reboot with VMware Workstation installed.

Dec 15, 2021
Go library for the VMware vSphere API

govmomi A Go library for interacting with VMware vSphere APIs (ESXi and/or vCenter). In addition to the vSphere API client, this repository includes:

Dec 6, 2021
Qt binding for Go (Golang) with support for Windows / macOS / Linux / FreeBSD / Android / iOS / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / JavaScript / WebAssembly

Introduction Qt is a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on var

Jan 2, 2023
GoC2 - MacOS Post Exploitation C2 Framework
GoC2 - MacOS Post Exploitation C2 Framework

goc2 c2 client/server/paylod GoC2 - MacOS Post Exploitation C2 Framework Custom C2 for bypassing EDR and ease of use.

Dec 23, 2022
一个不限速的天翼云网盘下载器。(支持分享链接下载、支持Windows、Linux、macOS)Based Go.

189Cloud-Downloader 一个不限速的天翼云网盘下载器。(支持分享链接下载、支持Windows、Linux、macOS)Based Go. 使用说明 NAME: 189Cloud-Downloader - 一个189云盘的下载器。(支持分享链接) USAGE: 189Cl

Dec 6, 2022
Zenity dialogs for Golang, Windows, macOS

Zenity dialogs for Golang, Windows and macOS This repo includes both a cross-platform Go package providing Zenity-like dialogs (simple dialogs that in

Dec 31, 2022
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

go-flutter - A package that brings Flutter to the desktop Purpose Flutter allows you to build beautiful native apps on iOS and Android from a single c

Jan 9, 2023
Lima launches Linux virtual machines on macOS, with automatic file sharing, port forwarding, and containerd.

Lima: Linux-on-Mac ("macOS subsystem for Linux", "containerd for Mac")

Jan 8, 2023
Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation.

Emacs Builds Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation. Features Self-contained Emacs.app applic

Dec 25, 2022
The package manager for macOS you didn’t know you missed. Simple, functional, and fast.
The package manager for macOS you didn’t know you missed. Simple, functional, and fast.

Stew The package manager for macOS you didn’t know you missed. Built with simplicity, functionality, and most importantly, speed in mind. Installation

Mar 30, 2022
gon is a simple, no-frills tool for signing and notarizing your CLI binaries for macOS
gon is a simple, no-frills tool for signing and notarizing your CLI binaries for macOS

Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.

Jan 4, 2023
WebDAV server for SSH. Similar to sshfs but does not require proprietary MacFUSE on macOS

sshwebdav: WebDAV server for SSH sshwebdav provides a WebDAV server for a remote SSH host. sshwebdav is similar to sshfs but does not require propriet

Nov 9, 2022