有的批次檔是加密的,我們用記事本一開啟全部是亂碼,它是怎麼製作的?怎麼查看它?看了下面的應該就可以知道了。
先給個例子,一個加密批次檔的例子。
%%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
cls
@echo off
CLS
color 0a
echo.
echo Vmware Workstaion6.0綠色精簡版
echo.
echo 中國vmware專版 http://www.vmware.cn
echo.
echo 即將進行安裝,是否要繼續......
echo.
echo ---------------------------------------------------------------------------
echo.
SET /P ST= 請輸入 Y (繼續安裝)或 N (退出安裝):
echo.
if /I "%ST%"=="Y" goto ST
if /I "%ST%"=="N" goto EX
goto EX
:ST
start winrar x drive.rar -ibck -y %systemroot%/
echo 正在註冊所需的DLL檔案....
regsvr32 /s "%cd%/vmappcfg.dll"
regsvr32 /s "%cd%/vmappsdk.dll"
regsvr32 /s "%cd%/vmdbCOM.dll"
regsvr32 /s "%cd%/vmhwcfg.dll"
:addreg
echo 正在添加註冊表項目...
set regadd=reg add "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Setup
%regadd%" /v "SourcePath" /d "%systemroot%/inf" /f
set regadd=reg add "HKEY_LOCAL_MACHINE/SOFTWARE/VMware, Inc.
%regadd%" /v Core /d "VMware Workstation" /f
set regadd=%regadd%/VMware Workstation
%regadd%" /v "InstallPath" /d "%cd%" /f
set regadd=%regadd%/License.ws.6.0.200907
%regadd%" /v "StartFields" /d "Cpt, ProductID, LicenseVersion, LicenseType, Epoch" /f
%regadd%" /v "Cpt" /d "COPYRIGHT (c) VMware, Inc. 1999-2007" /f
%regadd%" /v "ProductID" /d "VMware Workstation for Win32" /f
%regadd%" /v "LicenseVersion" /d "6.0" /f
%regadd%" /v "LicenseType" /d "User" /f
%regadd%" /v "Epoch" /d "2009-7-1" /f
%regadd%" /v "Hash" /d "6b3d34d9-b34f898e-2600b82e-9f65a272-44f2afe8" /f
%regadd%" /v "Serial" /d "ERHUD-2RGAC-X01FZ-4MRN2" /f
%regadd%" /v "Name" /d "vmware.cn" /f
%regadd%" /v "CompanyName" /d "中國虛擬化先鋒" /f
:adduser
echo 開始建立 __vmware_user__ 賬戶 ...
net user __vmware_user__ /add /comment:"VMware User" /fullname:"__vmware_user__"
net localgroup __vmware__ /add /comment:"VMware User Group" >nul
net localgroup users __vmware_user__ /del >nul
net localgroup __vmware__ __vmware_user__ /add >nul
:Start VM basic service
echo 裝載虛擬機器需要基本服務 ...
sc create vmx86 type= kernel start= auto binpath= "system32/DRIVERS/vmx86.sys" displayname= "VMware Virtualization Driver"
net start vmx86
sc create VMnetuserif type= kernel start= auto binpath= "system32/DRIVERS/vmnetuserif.sys" displayname= "VMware Network Application Interface"
net start VMnetuserif
CALL server.bat
----------------------------------------------------------------------------------------------------------------------------------------
上面給出了一個例子,在開始加上許多%%a ,也不知道加多少個,把上面的內容複寫到bat檔案中,看著還沒事,一運行,在用記事本編輯bat檔案,可以看到怎麼是亂碼的,這其實是前面的許多個%%a 讓系統誤認為這是一個Unicode 編碼的檔案了,其實它不是Unicode編碼的檔案.是ANSI的.
我們做個小實驗,把上文中前面的%%a去掉,分別儲存為ans、/UNICODE、UNICODE BIG ENDIAN、UTF-8格式的bat檔案,只有ANSI 和UTF-8編碼的bat檔案可以運行,但是UTF-8文本不是亂碼,顯示卻是亂碼,這說明,包含中文的字元的bat檔案只能在ANSI格式下正常運行;
下面我們進行另外一個實驗,加上%%a我們再儲存為ANSI 和UNICODE編碼的文字檔,此時,我們分別用記事本開啟ANSI和UNICODE編碼的檔案,發現,ANSI的是亂碼,而UNICODE的不是。這說明了系統認為在ANSI編碼下的這些%%a是UNICODE編碼的,其後面的所有字元也都被誤認為是UNICODE編碼的。
具體系統是怎麼識別這些編碼的我也不知道,有時間了我再百度吧。這個方法可以為自己的批次檔做個簡單的加密,但是我不喜歡,還怕著作權問題?如果不懂的人看了代碼也看不懂,能看懂代碼的人,這點加密算什麼啊。
從網上下載一個 亂碼查看器.EXE 277KB 就一個檔案,把那個檔案往亂碼查看器一拖就能看到亂碼的本來面目了。用一些編輯器也可以看,因為我們一般用記事本來查看bat批次檔的嘛·~
第一篇文章,有空了再寫。CSDN.NET 很不錯啊。以後在這裡紮窩了,有時間了就寫點自己研究的東西。
我還沒有工作,還在學習中,以後將會向那一個方向發展還說不清楚,可能就是網路方向了。