● 優(yōu)質(zhì)軟件,因加密無(wú)法運(yùn)行
人機(jī)對(duì)話口語(yǔ)考試系統(tǒng),是英語(yǔ)聽(tīng)說(shuō)考試與練習(xí)的創(chuàng)新形式,它可以借助計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)對(duì)英語(yǔ)口語(yǔ)考試進(jìn)行實(shí)施、管理,并可以根據(jù)考試設(shè)計(jì)的需求,有針對(duì)性地進(jìn)行命題、組卷,完成試題呈現(xiàn)、接受答案、計(jì)分、數(shù)據(jù)分析以及結(jié)果解釋等一系列環(huán)節(jié)。考生只要在計(jì)算機(jī)屏幕上閱讀試題,并通過(guò)鼠標(biāo)和鍵盤(pán)操作完成作答即可,既方便,又能避免面對(duì)面問(wèn)答時(shí)多種干擾因素。此外,用計(jì)算機(jī)系統(tǒng)自動(dòng)把“人機(jī)對(duì)話”過(guò)程進(jìn)行錄音,還能一改以往不可再現(xiàn)口試現(xiàn)場(chǎng)的不足,可確??荚嚨恼鎸?shí)重現(xiàn),給考生帶來(lái)保障。
由于該系統(tǒng)在教育教學(xué)過(guò)程中的種種優(yōu)勢(shì),我校規(guī)定其為學(xué)生參加中考與高考英語(yǔ)口語(yǔ)考試時(shí)必須使用的模擬與正式考試軟件之一,在平常的英語(yǔ)學(xué)習(xí)中,正確使用該軟件還可以幫助學(xué)生適應(yīng)考試環(huán)境,在正式考試時(shí)得心應(yīng)手。
但是人機(jī)對(duì)話口語(yǔ)考試系統(tǒng)包含的三個(gè)程序,即服務(wù)端、制卷系統(tǒng)、評(píng)卷系統(tǒng)中,都分別用某公司開(kāi)發(fā)的Soft Dog進(jìn)行了加密,在教師沒(méi)有軟件狗或者軟件狗出現(xiàn)問(wèn)題的情況下,上述的任何程序都無(wú)法運(yùn)行,這為教師的使用帶來(lái)了很大的不便。同時(shí),為了將這一系統(tǒng)成功安裝在學(xué)校的HP服務(wù)器上,我校請(qǐng)來(lái)該軟件公司的維護(hù)人員進(jìn)行安裝操作,卻仍以失敗告終。因此,為了能讓英語(yǔ)教師以及學(xué)生方便地使用該軟件,我決定自己研究該系統(tǒng)及其采用的加密狗程序,并進(jìn)行跟蹤調(diào)試實(shí)驗(yàn)。
● 知己知彼,做好破解前準(zhǔn)備
軟件狗Soft Dog是使用在計(jì)算機(jī)并行口和USB口上的用于軟件保護(hù)的硬件產(chǎn)品。軟件開(kāi)發(fā)商可以采用多種方法保護(hù)軟件,防止軟件被非法拷貝使用。該款軟件狗的開(kāi)發(fā)套件由以下組件組成。
1.Soft Dog軟件狗:它是一個(gè)可編程、可讀寫(xiě)的存儲(chǔ)設(shè)備,應(yīng)用端口噪聲技術(shù),對(duì)抗最流行的解密軟件,具有加密數(shù)據(jù)庫(kù)程序、反跟蹤的功能,內(nèi)置100字節(jié)掉電保持存儲(chǔ)器。如果軟件狗插在計(jì)算機(jī)上,用戶(hù)便可以通過(guò)相應(yīng)的保護(hù)接口函數(shù)或開(kāi)發(fā)商工具對(duì)軟件狗進(jìn)行訪問(wèn)。
2.加密接口:軟件狗開(kāi)發(fā)套件提供的保護(hù)接口是一套包含各種開(kāi)發(fā)語(yǔ)言的程序接口模塊,它可以嵌在程序的源代碼中。用戶(hù)可以在程序中使用軟件狗開(kāi)發(fā)套件提供的保護(hù)接口對(duì)軟件狗進(jìn)行操作。
3.開(kāi)發(fā)商工具: 軟件狗開(kāi)發(fā)商工具可以使開(kāi)發(fā)商方便地對(duì)軟件狗存儲(chǔ)區(qū)進(jìn)行編輯、讀取系列號(hào)以及連續(xù)初始化等操作。
經(jīng)過(guò)對(duì)該款軟件狗功能的分析,我準(zhǔn)備了以下幾種檢測(cè)軟件。
1.檢測(cè)軟件PEiD v0.94,該軟件用于分別檢測(cè)人機(jī)對(duì)話口語(yǔ)考試系統(tǒng)中的三個(gè)程序的加密情況和語(yǔ)言編寫(xiě)情況。
2.反編譯軟件C32Asm-v0.4.12,該軟件用于對(duì)程序進(jìn)行反編譯,通過(guò)匯編語(yǔ)言,來(lái)研究如何跳過(guò)程序保護(hù)。
3.注冊(cè)機(jī)編寫(xiě)器keymake2.0修改版,這是一款實(shí)用的編寫(xiě)內(nèi)存注冊(cè)機(jī)、文件補(bǔ)丁及內(nèi)存補(bǔ)丁程序。
在完成以上準(zhǔn)備后我決定動(dòng)手嘗試破解這款加密軟件。
● 動(dòng)手破解,牽一發(fā)而動(dòng)全身
下面我就以人機(jī)對(duì)話口語(yǔ)考試系統(tǒng)中的評(píng)卷系統(tǒng)為例,說(shuō)明如何跟蹤調(diào)試加密技術(shù),以下操作均在沒(méi)有狗的條件下進(jìn)行測(cè)試。
1.運(yùn)行人機(jī)對(duì)話口語(yǔ)考試系統(tǒng)中評(píng)卷系統(tǒng)ProCA,出現(xiàn)提示信息:加密狗檢測(cè)失?。ㄒ?jiàn)圖1),這說(shuō)明加密狗對(duì)程序進(jìn)行了保護(hù)。由于用戶(hù)沒(méi)有加密狗,所以本程序不能運(yùn)行,要想運(yùn)行,必須把加密狗檢測(cè)程序部分無(wú)條件跳過(guò),我們就從這里入手。
2.利用檢測(cè)軟件PEiD v0.94,檢測(cè)評(píng)卷系統(tǒng)ProCA,看該程序是否還采用了其他加密軟件,并檢測(cè)程序的編寫(xiě)語(yǔ)言。結(jié)果顯示,該程序沒(méi)有用其他加密軟件(如nSpack)加密或者沒(méi)有用其它壓縮軟件(ASPack)壓縮,采用的編程語(yǔ)言是Borland Delphi 6.0-7.0(見(jiàn)圖2),這樣就好辦多了。
如果采用了其他加密軟件,我們還需用其他軟件進(jìn)行脫殼(如OD調(diào)試跟蹤程序+調(diào)試腳本進(jìn)行脫殼)或者解壓(專(zhuān)用脫殼程序Un-ASPACK,相對(duì)應(yīng)的脫殼程序進(jìn)行脫殼),這樣的解密工作就會(huì)更加困難,耗時(shí)多,難度加大。
3.用反編譯軟件 C32Asm-v0.4.12,來(lái)打開(kāi)評(píng)卷系統(tǒng)proca.exe,并在“字符串”調(diào)用下面輸入“加密狗檢測(cè)失敗”,打回車(chē),顯示如圖3。
在分析圖3中顯示代碼后,我找出兩處“JNZSHORT 0090579C\\:JMPDOWN,”語(yǔ)句,分別位于“MOV