所屬欄目:軟件開發(fā)論文 發(fā)布日期:2010-09-15 09:38 熱度:
摘要:通過(guò)分析幾種常規(guī)軟件破解的方式,以破解出發(fā),并提出了編寫應(yīng)用程序需要注意和改進(jìn)的地方。
關(guān)鍵詞:軟件破解技術(shù);加殼軟件;逆向工程
1引言
軟件破解主要從兩個(gè)方面人手,第一是脫掉保護(hù)軟件的殼,現(xiàn)在的軟件出廠一般都使用了加密殼、壓縮殼、偽裝殼、多層殼等技術(shù),脫掉軟件的殼是能進(jìn)行跟蹤調(diào)試的前提條件。第二是根據(jù)軟件的注冊(cè)性質(zhì)決定采取什么對(duì)策進(jìn)行序列號(hào)推算,暴力破解等。
2.1殼概述
在一些計(jì)算機(jī)軟件里有一段專門負(fù)責(zé)保護(hù)軟件不被非法修改或反編譯的程序,它們一般都是先于程序運(yùn)行,拿到控制權(quán),然后完成它們保護(hù)軟件的任務(wù)。當(dāng)加殼后的文件執(zhí)行時(shí),殼一這段代碼先于原始程序運(yùn)行,它把壓縮、加密后的代碼還原成原始程序代碼,然后再把執(zhí)行權(quán)交還給原始代碼。軟件的殼分為加密殼、壓縮殼、偽裝殼、多層殼等
類,目的都是為了隱藏程序真正的OEP(人口點(diǎn),防止被破解)。
2.2加殼軟件
作者編好軟件后,編譯成exe可執(zhí)行文件。有一些版權(quán)信息需要保護(hù)起來(lái),不想讓別人隨便改動(dòng),如作者的姓名等,即為了保護(hù)軟件不被破解,•通常都是采用加殼來(lái)進(jìn)行保護(hù)。若需要把程序壓縮小一些,從而方便傳輸,于是,需要用到一些軟件,它們能將exe可執(zhí)行文件壓縮。另外在黑客界給木馬病毒等加殼以躲避殺毒軟件。能實(shí)現(xiàn)上述功能的這些軟件稱為加殼軟件,如ASPACK,UPX,PEcompace等。
2.3偵殼軟件
偵測(cè)殼和軟件所用編寫語(yǔ)言的軟件為偵殼軟件。脫殼之前必須要查它的殼的類型。常用偵殼軟件有peid,fi等。
2.4脫殼軟件
常用的脫殼工具如下:
(1)文件分析工具(偵測(cè)殼的類型):Fi,Get-Typ,peid,pe—scan;
(2)OEP人口查找工具:peid;
(3)調(diào)試工具:SoftICE,TRW,ollybdg;
(4)Dump工具:IceDump,TRW,PEditor,ProcDump32,lmrdPE;
(5)PE文件編輯工具:PEditor,Proc.Dump32,LordPE;
(6)重建ImportTable工具:ImportREC,Re-Virgin。
2.5手動(dòng)脫殼方法
軟件脫殼有手動(dòng)脫殼和自動(dòng)脫殼之分,下面僅介紹手動(dòng)脫殼。
手動(dòng)脫殼的主要步驟是尋找人口點(diǎn),轉(zhuǎn)儲(chǔ)(dump)程序,修復(fù)引人函數(shù)表(ImportTable),修復(fù)pe文件。現(xiàn)在的殼分壓縮殼,加密殼,偽裝殼,多重殼。壓縮殼的目的是使文件由大小變小,便于在網(wǎng)上傳播。并有一定的保護(hù)作用,他人無(wú)法反匯編加殼程序;加密殼的目的是用各種手段保護(hù)軟件殼不被脫掉、跟蹤,文件大小不是它的目的,有時(shí)候甚至變大;偽裝殼其實(shí)也還是一種加密殼,只不過(guò)它先是偽裝成一些開發(fā)工具的頭部,如VC,使得偵殼工具無(wú)法準(zhǔn)確地偵察出它加殼的種類;多重殼技術(shù)是采用多種殼加密技術(shù),不光加一層殼,加多重不一樣的殼達(dá)到保護(hù)的目的。
判斷加殼程序和普通程序很容易,用Ollydbg(簡(jiǎn)稱Od)載入程序,沒加殼軟件無(wú)任何提示。加密殼有些Od載人時(shí)會(huì)提示壓縮,用運(yùn)行后,Od提示程序異常。普通加殼Od載人時(shí)一般都會(huì)發(fā)現(xiàn),提示軟件被加殼,是否繼續(xù)分析。若脫殼沒有脫干凈,Od載人時(shí)也會(huì)提示加殼。手動(dòng)脫殼時(shí),用OUdbg載人程序,脫殼程序里面就會(huì)有很多循環(huán)。對(duì)付循環(huán)時(shí),只能讓程序往前運(yùn)行,基本不能讓它往回跳,要想辦法跳出循環(huán)圈。單步跟蹤,找到程序的人口地址。這就是動(dòng)態(tài)
調(diào)試脫殼的基本思想。
開始用Od載人程序,一般有殼的話都會(huì)彈出一個(gè)人口警告,屬于正常現(xiàn)象,此時(shí),如果先用peid等軟件探察過(guò)提示沒有加殼,軟件是用c++編寫的,那么如果彈出入口警告極有可能表示程序的殼是經(jīng)過(guò)偽裝的。這里有幾個(gè)小竅門,如果使用aspack或upx加的殼,人口指令一般都是pushad,用于保護(hù)現(xiàn)場(chǎng),記住這個(gè)小竅門有可能成為脫掉多層殼的捷徑。然后開始單步跟蹤調(diào)試,這也是逆向工程最常用的方法。接下來(lái)的步驟就是一路前進(jìn),保證不要往后退,對(duì)于簡(jiǎn)單殼,遇到回跳指令,可直接點(diǎn)擊其下一條指令然后強(qiáng)行跳轉(zhuǎn)到那里,但是這只是很簡(jiǎn)單的情況,一般來(lái)說(shuō)這種情況程序都要跑飛,如此就只有再看前面是否忽略可以跳出循環(huán)的地方。
3軟件保護(hù)機(jī)制
3.I常見軟件保護(hù)模式
3.I.I序列號(hào)保護(hù)模式
數(shù)學(xué)算法一直都是加密的核心,但在一般的軟件加密中,它似乎并不太為人們關(guān)心,因?yàn)榇蠖鄶?shù)時(shí)候軟件加密本身實(shí)現(xiàn)的都是一種編程的技巧,但近幾年隨著序列號(hào)加密程序的普及,數(shù)學(xué)算法在軟件加密中的比重似乎是越來(lái)越大了。但是當(dāng)今有名的加密算法如RSADES,MIM,MD5S是為了加密密文或密碼用的,與序列號(hào)加密多少有些不同。一般序列號(hào)算法都是軟件作者自己創(chuàng)造的,對(duì)于數(shù)學(xué)不可逆要求不是太高,所以一般都比較簡(jiǎn)單。破解方法:
一般軟件用序列號(hào)方式,都是輸入字符串,如用戶名,再生成正確序列號(hào),所以我們就可以利用處理字符串的消息斷點(diǎn),如WM—GETrEXT和WM—COMMAND等,攔截住軟件算號(hào)程序?qū)ψ址M(jìn)行的處理,從而讓我們有機(jī)會(huì)一步一步用調(diào)試器(如Ollydbg等)跟蹤調(diào)試,找出序列號(hào)的正確算法。
3.1.2時(shí)間限制
有些程序的試用版運(yùn)行都有時(shí)間限制,運(yùn)行一段時(shí)間就會(huì)停止,如一個(gè)月。顯然這些程序中在安裝時(shí)就記住了當(dāng)前安裝的時(shí)間,然后每次運(yùn)行的時(shí)候就和安裝時(shí)間比較,看是否過(guò)期。破解方法:
你只需動(dòng)態(tài)跟蹤程序,在幾個(gè)常用時(shí)間函數(shù)處設(shè)下斷點(diǎn),然后將其匯編語(yǔ)句改變即可,如:MOVeCX1e;把3O放人eCX,即一個(gè)月MOVeax,[esp+10];把用過(guò)天數(shù)放到eaxCMPeax,ecx,⋯所以此時(shí)只需把“MOVeax,[esp+lO]”改為”MOVeax,1”即可,常見時(shí)間函數(shù)如下:GetSystemTimeGetIz~alTimeSystemTimeTo-FileTim、SetTimer。
3.1.3KeyFile保護(hù)
KeyFile(注冊(cè)文件)是一種利用文件來(lái)注冊(cè)軟件的保護(hù)方式。KeyFile一般是一個(gè)小文件,可以是純文本文件,也可以是包含不可顯示字符的二進(jìn)制文件,其內(nèi)容是一些加密過(guò)或未加密過(guò)的數(shù)據(jù),其中可能有用戶名,注冊(cè)碼等信息。破解方法:破解過(guò)程一般就是建立一假keyf'de取代真keytile,然后用調(diào)試工具去破解,和以前大同小異。常用破解kele函數(shù)如下:ReadFile、Create-FileA、——l0pen()、FindFirstFileA()等。
3.1.4功能限制的程序
這種程序一般是DEMO版或菜單中部分選項(xiàng)是灰色。有些DEMO版本的部分功能里面根本沒有,而有些程序功能全有,只要注冊(cè)就正常了。破解方法:破解思路幾乎一致,主要就是找到程序調(diào)用函數(shù)點(diǎn),其常見函數(shù)如:EnableMenuItem、EnableWindow。
3.1.5cd檢測(cè)
簡(jiǎn)單且最常見的光盤保護(hù)就是程序在啟動(dòng)時(shí)判斷光驅(qū)中的光盤上是否存在特定的文件,如果不存在則認(rèn)為用戶沒有正版光盤,拒絕運(yùn)行。在程序運(yùn)行中一般不再檢查光盤的存在與否。破解方法:可采用靜態(tài)分析,如將游戲光盤拿出來(lái),記下屏幕上顯示的字符串,然后用W32dasm用串式數(shù)據(jù)參考功能查找相應(yīng)代碼進(jìn)行分析。相關(guān)函數(shù)有GetDrivetype(a)、GetLogicalDrives、GetI~-givalDriveStrings,GetFileAttributesA,GetFileSize,GetLastError、ReadFile等。
3.2改進(jìn)意見
逆向工程的作用不是破解軟件等程序?qū)Τ绦騿T造成損失,它的作用在于發(fā)現(xiàn)程序保護(hù)甚至程序本身的不足之處,然后提出改正。可采用以下改進(jìn)方法提高軟件破解難度。
(1)一般不要用一目了然的名字來(lái)命名敏感函數(shù)和文件,如keyiile,liscence等。
(2)程序中出現(xiàn)明文提示盡可能普遍化或加密,以免靜態(tài)調(diào)試工具搜索到。
(3)少用一些眾所周知的系統(tǒng)函數(shù)來(lái)進(jìn)行操作,如獲取時(shí)間等。
(4)注冊(cè)算法最好有嚴(yán)格的數(shù)學(xué)根據(jù),加強(qiáng)不可逆性,使之無(wú)法直接破解,采用比較成熟的密碼學(xué)算法。
(5)注冊(cè)碼最好采用一機(jī)一碼形式,也就是采用讀取機(jī)器內(nèi)部特征編號(hào)等來(lái)作為序列號(hào)演算的seed,如使用硬盤編號(hào)與網(wǎng)卡mac相結(jié)合的方式,盡可能防止一個(gè)序列號(hào)泛濫的情況。
(6)試用版最好與正式版分開封裝,即試用版沒有的功能只做按鈕,而不放相應(yīng)的事件代碼,使得編譯的程序根本沒有此項(xiàng)功能。
(7)采用keyfile方式盡可能將keyfile結(jié)構(gòu)設(shè)計(jì)得復(fù)雜點(diǎn),在程序中不同地點(diǎn)對(duì)keyfile中不同部分進(jìn)行檢查。
(8)最好序列號(hào)算法不在程序中,多采用聯(lián)網(wǎng)注冊(cè)方式,并且數(shù)據(jù)傳輸時(shí)要加密。
4結(jié)束語(yǔ)
通過(guò)以上對(duì)一般軟件保護(hù)破解的分析,如果多采用改進(jìn)意見中提出的方式就可使軟件破解難度加大,也可對(duì)一個(gè)序列號(hào)泛濫情況起到一定防止作用。
搜論文知識(shí)網(wǎng)致力于為需要刊登論文的人士提供相關(guān)服務(wù),提供迅速快捷的論文發(fā)表、寫作指導(dǎo)等服務(wù)。具體發(fā)表流程為:客戶咨詢→確定合作,客戶支付定金→文章發(fā)送并發(fā)表→客戶接收錄用通知,支付余款→雜志出版并寄送客戶→客戶確認(rèn)收到。鳴網(wǎng)系學(xué)術(shù)網(wǎng)站,對(duì)所投稿件無(wú)稿酬支付,謝絕非學(xué)術(shù)類稿件的投遞!
文章標(biāo)題:軟件破解常見的問(wèn)題-逆向工程的應(yīng)用
轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.optiwork.cn/fblw/dianxin/ruanjiankaifa/4168.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:106
Nature旗下多學(xué)科子刊Nature Com...關(guān)注:152
中小學(xué)教師值得了解,這些教育學(xué)...關(guān)注:47
2025年寫管理學(xué)論文可以用的19個(gè)...關(guān)注:192
測(cè)繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時(shí)開論文檢索證明很重要關(guān)注:52
中國(guó)水產(chǎn)科學(xué)期刊是核心期刊嗎關(guān)注:54
國(guó)際出書需要了解的問(wèn)題解答關(guān)注:58
合著出書能否評(píng)職稱?關(guān)注:48
電信學(xué)有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評(píng)職稱發(fā)論文好還是出書好關(guān)注:68
復(fù)印報(bào)刊資料重要轉(zhuǎn)載來(lái)源期刊(...關(guān)注:51
英文期刊審稿常見的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評(píng)估...關(guān)注:59
電子信息論文范文
智能科學(xué)技術(shù)論文 廣播電視論文 光電技術(shù)論文 計(jì)算機(jī)信息管理論文 計(jì)算機(jī)網(wǎng)絡(luò)論文 計(jì)算機(jī)應(yīng)用論文 通信論文 信息安全論文 微電子應(yīng)用論文 電子技術(shù)論文 生物醫(yī)學(xué)工程論文 軟件開發(fā)論文
SCI期刊分析
copyright © www.optiwork.cn, All Rights Reserved
搜論文知識(shí)網(wǎng) 冀ICP備15021333號(hào)-3