色偷偷伊人-色偷偷综合-色无五月-色香蕉影院-色亚洲影院

軟件破解常見的問題-逆向工程的應(yīng)用

所屬欄目:軟件開發(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

相關(guān)問題解答

SCI服務(wù)

搜論文知識網(wǎng) 冀ICP備15021333號-3

主站蜘蛛池模板: 韩国日本美国免费毛片 | 精品国产成人综合久久小说 | 国产美女网站 | 国产在线观看免费不卡 | 成人午夜视频在线播放 | 欧美日在线 | 国产91色综合久久免费 | 综合玖玖| 在线观看91精品国产hd | 亚洲色图综合 | 91福利一区二区在线观看 | 久久精品视频2 | 国产片一级aaa毛片视频 | 激情亚洲综合网 | 日韩a级片在线观看 | 亚洲大片| 国产黄网站在线观看 | 国产日韩在线视频 | 国产精品成人观看视频国产奇米 | 性视频网站在线 | 亚洲欧美一区二区久久香蕉 | 999久爱视频在线观看 | 丁香婷婷色综合亚洲小说 | 亚洲欧美精品一中文字幕 | 看国产一级毛片 | 亚洲国产九九精品一区二区 | 农村三级孕妇视频在线 | 国产精品一区久久精品 | 国产一区亚洲二区三区毛片 | 大学生一级毛片全黄真人 | 欧美一级毛片免费观看视频 | 91影视在线 | 国产三级做爰在线观看视频 | 中日韩免费视频 | 亚洲午夜视频 | 性色生活免费看性大片 | 日本特级aⅴ一级毛片 | 国产高清在线免费视频 | 亚洲国产精品久久久久秋霞66 | a级做爰毛片视频免费看 | 亚洲最大看欧美片网站 |