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