mirror of
https://github.com/paolo-projects/unlocker.git
synced 2025-07-28 16:34:29 +02:00
Fixes for Workstation 12 on Linux
This commit is contained in:
parent
24e7e4d5bb
commit
6c8b757129
@ -20,7 +20,11 @@ mkdir -p "./backup"
|
|||||||
cp -v /usr/lib/vmware/bin/vmware-vmx ./backup/
|
cp -v /usr/lib/vmware/bin/vmware-vmx ./backup/
|
||||||
cp -v /usr/lib/vmware/bin/vmware-vmx-debug ./backup/
|
cp -v /usr/lib/vmware/bin/vmware-vmx-debug ./backup/
|
||||||
cp -v /usr/lib/vmware/bin/vmware-vmx-stats ./backup/
|
cp -v /usr/lib/vmware/bin/vmware-vmx-stats ./backup/
|
||||||
|
if [ -d /usr/lib/vmware/lib/libvmwarebase.so.0/ ]; then
|
||||||
cp -v /usr/lib/vmware/lib/libvmwarebase.so.0/libvmwarebase.so.0 ./backup/
|
cp -v /usr/lib/vmware/lib/libvmwarebase.so.0/libvmwarebase.so.0 ./backup/
|
||||||
|
elif [ -d /usr/lib/vmware/lib/libvmwarebase.so/ ]; then
|
||||||
|
cp -v /usr/lib/vmware/lib/libvmwarebase.so/libvmwarebase.so ./backup/
|
||||||
|
fi
|
||||||
|
|
||||||
echo Patching...
|
echo Patching...
|
||||||
python2 ./unlocker.py
|
python2 ./unlocker.py
|
||||||
|
@ -18,7 +18,11 @@ echo Restoring files...
|
|||||||
cp -v ./backup/vmware-vmx /usr/lib/vmware/bin/
|
cp -v ./backup/vmware-vmx /usr/lib/vmware/bin/
|
||||||
cp -v ./backup/vmware-vmx-debug /usr/lib/vmware/bin/
|
cp -v ./backup/vmware-vmx-debug /usr/lib/vmware/bin/
|
||||||
cp -v ./backup/vmware-vmx-stats /usr/lib/vmware/bin/
|
cp -v ./backup/vmware-vmx-stats /usr/lib/vmware/bin/
|
||||||
|
if [ -d /usr/lib/vmware/lib/libvmwarebase.so.0/ ]; then
|
||||||
cp -v ./backup/libvmwarebase.so.0 /usr/lib/vmware/lib/libvmwarebase.so.0/
|
cp -v ./backup/libvmwarebase.so.0 /usr/lib/vmware/lib/libvmwarebase.so.0/
|
||||||
|
elif [ -d /usr/lib/vmware/lib/libvmwarebase.so/ ]; then
|
||||||
|
cp -v ./backup/libvmwarebase.so /usr/lib/vmware/lib/libvmwarebase.so/
|
||||||
|
fi
|
||||||
|
|
||||||
echo Removing backup files...
|
echo Removing backup files...
|
||||||
rm -rf ./backup
|
rm -rf ./backup
|
||||||
|
27
unlocker.py
27
unlocker.py
@ -43,6 +43,7 @@ Offset Length struct Type Description
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import struct
|
import struct
|
||||||
|
import subprocess
|
||||||
|
|
||||||
if sys.version_info < (2, 7):
|
if sys.version_info < (2, 7):
|
||||||
sys.stderr.write('You need Python 2.7 or later\n')
|
sys.stderr.write('You need Python 2.7 or later\n')
|
||||||
@ -197,7 +198,7 @@ def patchkeys(f, vmx, key, osname):
|
|||||||
i += 1
|
i += 1
|
||||||
return smc_old_memptr, smc_new_memptr
|
return smc_old_memptr, smc_new_memptr
|
||||||
|
|
||||||
def patchsmc(name, osname):
|
def patchsmc(name, osname, so):
|
||||||
with open(name, 'r+b') as f:
|
with open(name, 'r+b') as f:
|
||||||
|
|
||||||
# Read file into string variable
|
# Read file into string variable
|
||||||
@ -259,7 +260,7 @@ def patchsmc(name, osname):
|
|||||||
|
|
||||||
# Find matching RELA record in .rela.dyn in ESXi ELF files
|
# Find matching RELA record in .rela.dyn in ESXi ELF files
|
||||||
# This is temporary code until proper ELF parsing written
|
# This is temporary code until proper ELF parsing written
|
||||||
if osname == 'vmkernel':
|
if so == True:
|
||||||
print 'Modifying RELA records from: ' + hex(smc_old_memptr) + ' to ' + hex(smc_new_memptr)
|
print 'Modifying RELA records from: ' + hex(smc_old_memptr) + ' to ' + hex(smc_new_memptr)
|
||||||
patchELF(f, smc_old_memptr, smc_new_memptr)
|
patchELF(f, smc_old_memptr, smc_new_memptr)
|
||||||
|
|
||||||
@ -333,6 +334,8 @@ def main():
|
|||||||
else:
|
else:
|
||||||
osname = os.uname()[0].lower()
|
osname = os.uname()[0].lower()
|
||||||
|
|
||||||
|
vmx_so = False
|
||||||
|
|
||||||
# Setup default paths
|
# Setup default paths
|
||||||
if osname == 'darwin':
|
if osname == 'darwin':
|
||||||
vmx_path = '/Applications/VMware Fusion.app/Contents/Library/'
|
vmx_path = '/Applications/VMware Fusion.app/Contents/Library/'
|
||||||
@ -346,6 +349,11 @@ def main():
|
|||||||
vmx = vmx_path + 'vmware-vmx'
|
vmx = vmx_path + 'vmware-vmx'
|
||||||
vmx_debug = vmx_path + 'vmware-vmx-debug'
|
vmx_debug = vmx_path + 'vmware-vmx-debug'
|
||||||
vmx_stats = vmx_path + 'vmware-vmx-stats'
|
vmx_stats = vmx_path + 'vmware-vmx-stats'
|
||||||
|
vmx_version = subprocess.check_output(["vmware", "-v"])
|
||||||
|
if vmx_version.startswith('VMware Workstation 12'):
|
||||||
|
vmx_so = True
|
||||||
|
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so/libvmwarebase.so'
|
||||||
|
else:
|
||||||
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so.0/libvmwarebase.so.0'
|
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so.0/libvmwarebase.so.0'
|
||||||
|
|
||||||
elif osname == 'vmkernel':
|
elif osname == 'vmkernel':
|
||||||
@ -353,6 +361,7 @@ def main():
|
|||||||
vmx = vmx_path + 'vmx'
|
vmx = vmx_path + 'vmx'
|
||||||
vmx_debug = vmx_path + 'vmx-debug'
|
vmx_debug = vmx_path + 'vmx-debug'
|
||||||
vmx_stats = vmx_path + 'vmx-stats'
|
vmx_stats = vmx_path + 'vmx-stats'
|
||||||
|
vmx_so = True
|
||||||
vmwarebase = ''
|
vmwarebase = ''
|
||||||
libvmkctl = vmx_path + 'libvmkctl.so'
|
libvmkctl = vmx_path + 'libvmkctl.so'
|
||||||
|
|
||||||
@ -370,19 +379,11 @@ def main():
|
|||||||
print('Unknown Operating System: ' + osname)
|
print('Unknown Operating System: ' + osname)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Test - remove
|
|
||||||
# osname = 'vmkernel'
|
|
||||||
# vmx = 'D:\\vmware\\test\\patched\\vmx'
|
|
||||||
# vmx_debug = 'D:\\vmware\\test\\patched\\vmx-debug'
|
|
||||||
# vmx_stats = 'D:\\vmware\\test\\patched\\vmx-stats'
|
|
||||||
# vmwarebase = ''
|
|
||||||
# libvmkctl = 'D:\\vmware\\test\\patched\\libvmkctl.so'
|
|
||||||
|
|
||||||
# Patch the vmx executables skipping stats version for Player
|
# Patch the vmx executables skipping stats version for Player
|
||||||
patchsmc(vmx, osname)
|
patchsmc(vmx, osname, vmx_so)
|
||||||
patchsmc(vmx_debug, osname)
|
patchsmc(vmx_debug, osname, vmx_so)
|
||||||
try:
|
try:
|
||||||
patchsmc(vmx_stats, osname)
|
patchsmc(vmx_stats, osname, vmx_so)
|
||||||
except IOError:
|
except IOError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user