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