李明 胡春暉
摘要:在Apple Mac OS X在各領域應用逐漸廣泛的現狀下,實踐教學中部署Apple Mac OS X的需求迫切。傳統模式下,實踐教學如果需要使用Apple Mac OS X,需要投入蘋果機房來用于教學,往往會因遇到投資巨大而擱置,近年來在利用虛擬化部署Windows平臺、Linux平臺技術較為成熟的模式下,如何利用虛擬化技術部署Apple Mac OS X已成為技術熱點。Unloker技術可以較好的利用VMware虛擬化技術實現Apple Mac OS X平臺的部署,但相關文獻對Unlocker原理等技術介紹較少,本文針對其核心解碼流程進行探究。
關鍵詞: Unlocker;VMware;Apple Mac OS X
【中圖分類號】G434
一、Unlocker
Unlocker工具是一款用于解鎖被占用文件或模塊的工具。比如說某個文件被其它進程打開,而造成無法刪除或修改,某DLL被某進程載入而占用,造成文件無法刪除、修改或更新。使用這個工具可以解鎖該占用文件。通常這種情況都是由于,進程或者線程僵死,或者文件句柄未能及時關閉造成的。
Unlocker可以強制刪除電腦上無法刪除的文件,如刪除文件時提示“訪問被拒絕。請確定磁盤未滿或未被寫保護而且文件未被使用”等原因。在使用Unlocker前請大家要搞清楚為什么有些文件無法刪除,一般情況都是因為該文件正在被另一個程序所使用,所以就無法刪除。打個比喻就好像一輛高速行駛的汽車,你需要卸下他的輪胎,唯一的辦法就是先讓汽車停下來才能卸下(輪胎相當于我們需要刪除的文件,汽車相當于另一個程序,而像Unlocker這樣的軟件就是可以讓汽車停下來的軟件)。
二、VMware使用中Ulocker的用途
1、用途
Unlocker 2是專為VMware Workstation 11,Player 7及Fusion 7解除對Apple Mac OS X系統的限制。從而在VMware虛擬機上安裝蘋果系統提供支持。VMware Workstation允許專業技術人員在同一個PC上同時運行多個基于x86的Windows、Linux和其他操作系統以開發、測試、演示和部署軟件。如果您使用的是較早VMware10的產品,請繼續使用Unlocker 1的版本。以下為在各操作系統上如何使用Ulocker。
(1)Windows:win-install.cmd - VMware補丁
(2)Linux:lnx-install.sh - VMware補丁
(3)Apple Mac OS X:osx-install.sh - VMware補丁
在Apple Mac OS X,你將需要超級用戶或使用sudo來運行腳本。這個,如果你想使用的Apple Mac OS X的客戶端版本是真的只需要。您可能需要確保OS X腳本執行權限,通過運行使用chmod + X對2個文件。
2、Unlocker解鎖VMware虛擬化安裝Apple Mac OS X效果
以管理員身份運行其中的Win-install.cmd進行解鎖后,打開VMware出現Apple Mac OS X界面,說明VMware解鎖成功,可以按照VMware的一般方法來制作Apple Mac OS X,這里不再贅述。
三、Unlocker的工作原理
1、流程
主程序Unlocker.exe通過ZwQuerySystemInformation查詢當前系統的所有句柄信息,然后調用OpenProcess獲取目標進程句柄,遍歷當前所有進程,根據進程ID,得到此進程打開的所有句柄信息,接下來用DuplicateHandle復制Handle到本地進程,然后把文件句柄發給驅動UnlockerDriver5.sys進行名字的查詢,sys將返回文件句柄對應的內核文件對象的完整名字。
確定文件名后,如果要刪除文件,則調用OpenProcess與DuplicateHandle關閉句柄,然后ZwDeleteFile刪除文件。
2、UnlockerAssistant.exe分析
Unlockerasistent.EXE是一個托盤應用程序,負責加載UnlockerHook.dll,并按照用戶的需求來加載和卸載鉤子,當用戶手動操作一個文件失敗后(當然這種失敗用戶是感知不到的),比如刪除一個文件等,此時Unlocker的界面就會跳出來提示用戶是否需要解鎖等操作。
UnlockerHook.dll的功能就是通過CBT鉤子來植入每個進程的方式來打入exploer.exe,通過inlinehook SHFileOperationW的方式來掛鉤,只要該函數執行返回錯誤,通過識別不同的錯誤碼來判斷是否需要調用unlocker程序,并通過ShellExecuteExW的方式來觸發unlocker程序。
3、Unlocker.exe分析
unlocker最主要的功能實現都在unlocker.exe和一個.sys驅動里,值得關注的是它怎么實現的關閉句柄和刪除文件。關鍵的函數(部分也是未公開的API),比如:ZwQuerySystemInformation、ZwQueryObject、ZwDeleteFile、ObReferenceObjectByHandle、ObQueryNameString、SHFileOperationW、MoveFileExW、DuplicateHandle。
參考文獻:
[1]韓榮珍.使用VMware技術實現服務器群的熱備與恢復[J].計算機安全,2009(9):58-59.
[2]張興虎.網絡服務器的組建、配置與安全管理[M].北京:清華大學出版社,2005.
[3]韓起云,冉維,李靜.基于VMware的網絡安全虛擬實驗平臺構建[J].重慶教育學院學報,2011(11):31-34
作者簡介:李明(1981-),男,河南周口人,講師,碩士研究生,主要研究方向:計算機教育應用、網絡工程;
胡春暉(1987-),男,河南項城人,助教,碩士研究生,主要研究方向:網絡安全、網絡系統工程。