如何破解Windows系統(tǒng)軟件?
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一、破解的關(guān)鍵是什么? 我個(gè)人認(rèn)為,破解的關(guān)鍵就是找到最恰當(dāng)?shù)臄帱c(diǎn)。水平的高低也就在于誰能在最快的時(shí)間找到最有價(jià)值的斷點(diǎn)。 什么是斷點(diǎn)? 就是破解者人為地讓程序在執(zhí)行過程中暫時(shí)停下來(也叫斷下來)的那個(gè)代碼地址。 要找到斷點(diǎn),就要涉及到一個(gè)工具和一些技術(shù)。工具通常就是OD,OD這個(gè)軟件的作用就是能夠讓軟件以匯編的形式呈現(xiàn),如果你能看懂匯編語言,你就能夠看懂這個(gè)軟件的編程流程了。 所以,破解者不僅要會(huì)使用OD這個(gè)工具,還要會(huì)一些匯編知識。 好在,要求不高,難度不大,你基本上一個(gè)小時(shí)就可以學(xué)會(huì)。 OD還有一個(gè)重要的作用,就是你可以在某個(gè)地址下斷點(diǎn),當(dāng)軟件執(zhí)行到這句代碼的時(shí)候就會(huì)自動(dòng)斷下來,這就是上面說的斷點(diǎn)。 但是問題來了,一個(gè)軟件的編寫有成千上萬條代碼,你到底該在那一句代碼處下斷點(diǎn)呢? 呵呵,如何有效的下斷點(diǎn),就是我們學(xué)破解的最關(guān)鍵的技術(shù)。 相信你會(huì)聽說過中文搜索關(guān)鍵字、API函數(shù)、消息函數(shù)、F12暫停法、按鈕事件等等方法,其實(shí)這些方法的目的都是一樣的,就是下斷點(diǎn)。 那你可能要問了,什么叫做最有價(jià)值的斷點(diǎn)?所謂最有價(jià)值的斷點(diǎn),就是距離軟件驗(yàn)證真假的最近的位置。 我舉個(gè)例子,比如有一個(gè)軟件需要你輸入用戶名和密碼進(jìn)行驗(yàn)證,如果正確就提示登錄成功,錯(cuò)誤提示登錄失敗。那么,我們該如何下斷點(diǎn)呢? 第一種方法:在軟件讀取我們輸入的假的用戶名和密碼的代碼處下斷,我們也叫做驗(yàn)證前下斷。怎么下斷呢?如果軟件不是重啟驗(yàn)證的,你對讀取輸入框的API函數(shù)進(jìn)行下斷就可以了。 附帶說一句,我們的軟件在編寫時(shí)會(huì)大量使用WINDOWS系統(tǒng)庫里的API函數(shù)來實(shí)現(xiàn)功能,包括彈窗、讀取文本、寫入文本、比較真假碼等等。 所以,你要熟悉一些基本的API函數(shù)的功能。如果軟件是重啟驗(yàn)證的,你對讀取文件、注冊表的API函數(shù)下斷就可以了。 附帶說一句,所謂重啟驗(yàn)證,就是你只需要第一次屬于注冊碼,以后啟動(dòng)軟件的時(shí)候就不需要再次輸入了,軟件會(huì)自動(dòng)讀取你之前輸入的注冊碼信息然后進(jìn)行驗(yàn)證。 第二種方法:在軟件進(jìn)行真假碼比較的時(shí)候下斷,我們也叫做驗(yàn)證中下斷,這個(gè)斷點(diǎn)就NB了,也就是最有價(jià)值了,因?yàn)槿绻浖帉懻邲]有對數(shù)據(jù)進(jìn)行加密的話,你會(huì)直接看到真碼。 那怎么下斷呢?你可能會(huì)想到用有比較功能的API函數(shù)或者命令。 呵呵,事實(shí)求是說,因?yàn)檐浖某绦蛑杏写罅康谋容^命令,你很難找準(zhǔn),所以這個(gè)方法很少用。當(dāng)然,易語言除外,因?yàn)樗幸粋€(gè)特殊的文本比較通殺命令 test edx,3。 第三種方法:在軟件進(jìn)行錯(cuò)誤提示的時(shí)候下斷,我們也叫做驗(yàn)證后下斷,這個(gè)斷點(diǎn)是最常用的,也是非常有效的。 那么哪些是錯(cuò)誤提示的,比如出現(xiàn)“登錄失敗”這樣的文字、出現(xiàn)一個(gè)錯(cuò)誤提示的對話框、出現(xiàn)一個(gè)提示需要繳費(fèi)的窗口等,那么當(dāng)你看到這些錯(cuò)誤提示的時(shí)候,你該如何下斷呢? 比如出現(xiàn)文字,你就可以用搜索字符串的方法,當(dāng)然要注意的是,你可能什么也搜不到? 原因一般有兩個(gè): 一是你沒有在程序領(lǐng)空搜索,最簡單的解決辦法是你先在OD里用CTRL+G命令輸入401000后,再搜索。 二是軟件的作者對字符串進(jìn)行了加密處理,你暫時(shí)沒有辦法了。比如出現(xiàn)提示的對話框或者窗口,你就可以使用API函數(shù)下斷。 當(dāng)然,我個(gè)人還特別喜歡用設(shè)置窗口標(biāo)題的API函數(shù)SetWindowText,往往會(huì)給你在黑暗中帶來驚喜。 二、殼是什么? 殼就是軟件的防護(hù)服。我們這么說吧,軟件作者寫好了程序,但是怕別人分析破解他的程序代碼,就在原有的程序上加了一個(gè)防護(hù)服就是殼。 所以,殼的作用就是保護(hù)軟件,它本身沒有軟件的功能,所以殼是沒有必要破解的,你需要的最多就是脫殼,或者就是繞過殼即可。當(dāng)然,現(xiàn)在的殼也很厲害,比如VM的殼,它的作用是讓軟件原有的代碼在OD里面變的雜亂無章,令你無從下手。 但是,也別太失望。因?yàn)楫?dāng)絕大多數(shù)加了殼的軟件運(yùn)行起來后,它在OD里面會(huì)自動(dòng)解碼,源代碼又恢復(fù)正常了。 所以,當(dāng)你遇到有殼的程序,不用費(fèi)力的必須先脫殼,你可以在OD里面先把軟件運(yùn)行起來,然后到程序領(lǐng)空(大部分是401000處),然后你再用常規(guī)的辦法(搜字符串、API斷點(diǎn))來分析下斷點(diǎn)。另外需要注意的是,對于有殼的程序,你修改了源代碼后是無法保存的,你需要做個(gè)內(nèi)存補(bǔ)丁,其實(shí)也很簡單,有專門的工具。 三、還要注意什么? 當(dāng)你看完了以上兩點(diǎn),你覺得你能破解軟件了嗎?呵呵,還差一點(diǎn)。就是反反調(diào)試技術(shù)。 現(xiàn)在的軟件作者都很聰明,他們也有一些反破解的技術(shù),他們除了加殼以外,還會(huì)增加一些反調(diào)試的技術(shù)來對付你, 比如他會(huì)寫一段代碼專門檢測你是否正在使用OD這個(gè)工具,發(fā)現(xiàn)了,就直接讓軟件退出。比如他會(huì)寫一段代碼專門檢測你是否修改了源程序,發(fā)現(xiàn)了,就直接藍(lán)屏。比如他會(huì)寫一段代碼專門檢測你是否跳過了注冊窗口,發(fā)現(xiàn)了,就直接格盤。 那怎么辦?很簡單,好好學(xué)習(xí),多練,攻防的技術(shù)是沒有止境的!
隨口說了以上幾點(diǎn)看法,希望給新手一點(diǎn)啟發(fā)。 補(bǔ)充說明一下: 1、真想學(xué)破解,建議先在自己的電腦上安裝一個(gè)虛擬機(jī),在虛擬機(jī)上進(jìn)行破解練習(xí),尤其是想練手一些商業(yè)軟件,避免被格盤、藍(lán)屏、安裝木馬等,別怨軟件作者,畢竟是你在別人沒有同意的情況下動(dòng)了人家的身子,算是懲罰。 2、以上說的是所有軟件的通用破解方法,但是對于不同語言編寫的軟件還有破解的不同捷徑,所以你還要學(xué)習(xí)一下不同語言的破解小妙招。 對于易語言程序,可以使用文本比較通殺命令(test edx,3)、窗口置換(push 10001)、按鈕事件(FF55FC5F5E)、易語言分析插件(E-Debug.dll、EWND.dll)等方法。 對于DELPHI程序,可以使用按鈕事件特征碼(740E8BD38B83????????FF93????????)、DarkDe分析工具。 對于VB程序,可以使用按鈕事件特征碼(816C24)、VBDecompiler分析工具。當(dāng)然VB的API函數(shù)有特殊的書寫方式,比如彈出對話框,用的命令是rtcMsgBox,而不是其他語言常用的MessageBox。所以對于VB的程序要注意API函數(shù)的特殊性。 對于VC程序,可以使用按鈕事件特征碼(sub eax,0a),要注意的是和MFC編寫的程序有點(diǎn)區(qū)別。 3、如果你學(xué)了一段時(shí)間后,發(fā)現(xiàn)還是有很多軟件破不了,千萬別灰心,因?yàn)樘A耍涀【帉戃浖淖髡咭膊皇潜康埃绕涫巧虡I(yè)軟件,一定是陷阱重重的,如果一個(gè)破解新手都能輕易破解了,人家還混個(gè)啥? 所以說學(xué)習(xí)是無止境的。你在學(xué)習(xí)如何破解軟件,人家也在學(xué)習(xí)如何防破解軟件,樂趣就在于相互之間的不斷對抗和技術(shù)提升。 再多說一句話,“學(xué)習(xí)逆向破解的目的不是黑別人的軟件,而是要提升軟件的保護(hù)能力”。 閱讀原文:原文鏈接 該文章在 2025/4/3 18:32:22 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |