查看單個文章
舊 2006-06-02, 08:24 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 我的爆破經驗

一,爆破的幾個條件。

1、爆破工具:十六進制編輯器任一款(推薦用HEX Workshop)。

WIN32DASM反彙編器。有這兩樣就可以,初學者萬不要貪多求全。精通一兩件,其它觸類旁通、舉一反三。


2、爆破手會使用以上工具。一個爆竹不會點引就想當爆破手,還是去下載MP3,看DVD去吧。


jney2相當懷念當年用PCTOOL改《三國誌IV》,哈哈,張飛的智力、魅力都是100。


一兩個小時就征服全國了。可惜現在有許許多多的遊戲工具,還有變速器。東東越先進,人就越懶,學到的知識就越少。我不是說有好東東就不用喲。


3,爆破手必須會彙編。實在不會,也不要緊,依葫蘆畫瓢總會吧,找幾個最詳細,最完美,最經典的教程練一把。成功了!!!

哈哈,有興趣了吧,有信心了吧,好了好了朋友趕緊學彙編吧。如果你試了N次都沒成功,我的結論是:在其它方
面更適合發揮你的聰明才智。

4,信心、耐心、恆心你都得有一點吧。

有了上面的幾點,你就可以進入CRACK的初級階段了。


事實上,jney2的水平也就這些。jney2的現狀是:97年大專畢業時,算是一個DOS高手吧,學校的唯一一本有關中斷調用大全的書我硬是霸佔了一年才還。用SR分析過NATAS4744的源代碼。


所以8086指令系統的彙編功底還是有的。畢業後幾年一直幹著與電腦無關的事,又沒充電。學校學的那點老底早沒了。所以到了現在,VB、VC、BC、PB、DELPHI、ASP、JAVA...我是一門都不會。記憶力是一天不如一天了,慚愧呀!真羨慕那些還在學校學習的小弟妹!

廢話少說,還是說幾點近來當爆破手的幾點經驗吧。


一,如何快速確定爆破物。
1,確定目標有沒有加殼。沒有最好了,有的話看是不是常見殼,可不可以用現有脫殼軟件快速脫掉。


搞不定的話,暫時放棄它。「我吃定你了!」,不要這樣,老兄。不就是一殼麼,不要和他一般見識。記著,你今天的重點是爆破。不要主次不分、本末倒置,這也是初學者最易犯的錯誤。


這方面,我用PEID。它可以整合到資源表菜單,非常方便。


2,確定用什麼語言編寫。我的經驗是,DELPHI的程式結構清晰、緊湊,最好分析。其次是VC,BC,ASM,比較難的是VB,要有一定的經驗才可搞定一兩個。

VB P-CODE的我就真的一竅不通了,用DEXC反編譯出來的代碼我一名也看不懂。VF的我也不插手。


這方面,我用LANGUAGE2000,把待查軟件的圖示拖到LANGUAGE2000的快捷方式上就OK了。
3,確定爆破物有沒有防爆破技術。大多數的軟件還是沒用的。


如果你修改文件後再執行有病毒感染提示或重新安裝提示就表示你暫時可以放棄它了。

記得我上面說過的,不要和它一般見識。


我遇到很毒的就有 斗地主5.4 脫殼後,能執行,但結果是自動關機,看來用它作關機軟件倒是蠻好的。
二,如何快速找到爆破點。



1,用Win32DASM反彙編並儲存工程文件。

IDA PRO雖說功能強大,個頭大不說,也沒有完美漢化版,給我的感覺一個字:慢!我不推薦初學者使用。
2,在反彙編文件中找到可疑點。


經典語句自不用說,比如,「恭喜」,「註冊成功」,「註冊碼錯誤」
「無效的註冊碼」,「Thank You","Sorry"...找到後,一般向上不遠處就可看到條件轉移語句JZ、JNZ、JLE什麼的。


事實上,只有極少極少的軟件只修改註冊判斷就OK的。所以我們要把更多的注意力轉到其它的可疑點。如未註冊標識,過期警告,次數標識,NAG交談視窗...,熟練使用各種工具的搜索功能是基本功之一。找到後再向上不遠處找條件轉移語句。


如果找不到:
3,利用EXESCOPE中的交談視窗或字元串的ID號和地址指針,通過一定的轉換,可在反彙編文件中找到相應的提示。

一般的有這樣的參數入棧:

PUSH 00000064 (64即為ID號為100,當然不要遇到這樣的語句就是,要憑自己的經驗和感覺判斷。


還有,Win32DASM裡的提示也不是完全對,它的解釋很清楚,「Possible",「可能是」。

4,在十六進制編輯軟件中搜索到提示訊息的起始地址,把它換成程式執行時的偏移地址。


如你得到地址是004DE356,那麼回到Win32DASM中搜索6856E34D00,(它就是:PUSH 004DE356,我用這個方法曾對付個花指令)如果能找到一處或兩處就表示找對了。有很多程式蠻狡猾的,不一定行得通。


5,找到註冊判斷函數CALL(子程式)
一般在條傳轉移語句的上面,如果你找到的CALL在程式中被調用了二三十次,那肯定不是了,頂多是字元串比較函數罷了。只一次的程式少,我見過的一般在三到六次之間。


6,通過以上可疑點,最好能找準註冊標誌變數,一種是固定記憶體變數,在程式中事先就定義好的。一般有以下幾種比較形式:


mov eax, dword ptr [00401078]
cmp eax, 00000001
jz ...
mov eax, dword ptr [00401078]
test eax, eax
jz ...
mov eax, dword ptr [00401078]
mov ebx, dword ptr [eax]
cmp ebx, 00000000
jnz ...
還一種是利用堆疊偏移的臨時變數;如
mov eax, dword ptr [ebp+50]
cmp eax,00000001
jz ...
...還有幾種與前面的幾種類似,不一一舉例。

7,最好能分析一下程式的結構和流程。

到這裡,找準爆破點應該沒問題了。

三,如何爆破。
當你找準爆破點後,你會發現有很多種爆破的方法都可以達目的。

1,修改轉移語句。

我一般這樣改:

不需要跳,我就把74XX,75xx,0F84xxxxxxxx,0F85xxxxxxxx...中的xx,xxxxxxxx(偏移量)改為00,00000000。


需要跳,我就把74,75改為EB,把0F84,0F85改為90E9。這可避免萬一你有正確的註冊碼反而會出錯的事情發生。


2,修改註冊標誌變數,如變數為1則為註冊,為0則為未註冊,那麼你只要搜索所有將該變數置0的語句改為置1就行了。

mov eax, 00000000
mov dword ptr [00401078], eax
這種好改。但大多是這樣:
xor eax, eax
mov dword ptr [00401078], eax
這種有些難度,它不是簡單地送值,而是異或置0。xor eax, eax的機器碼是33C0,只有兩個字節,而mov eax, 00000001的機器碼是B801000000有五個字節,這可不好玩。

我們可這樣改,把CC30改為B001,B001是什麼?就是mov al, 01啦!
一般情況下這樣改都不會有問題。
3,修改判斷函數CALL。

如果這個函數只是判斷註冊是否正確,並返回AX的值,我一般會這樣改。

在CALL入口處就改為B801000000C3,就是
mov eax, 00000001
ret
這樣可少執行代碼,並且不訪問註冊表。甚至可把後面死碼都置為00。
4,修改次數限制。
我在爆破億虎軟件時,我上面的方法都用了,看上都像正式的了,什麼註冊提示都沒了,但用起來還是有30的限制。我實在分析不出暗樁在哪兒,我就只好改這裡了。

當然不是改次數。改判斷使程式一直認為低於30就行了。

四,對於爆破的幾點認識。

1,爆破不是最簡單的。

如果一個軟件採用明碼比較,不管它有沒有加殼,都可用OllyDbg之類的動態除錯工具在很短的時間內獲得,並做成記憶體註冊機,速度之快有時令人驚訝,我曾五分鐘之內找到註冊碼。


爆破往往要試N次,改N處才可成功,還要測試。


2,爆破時要注重分析編程者的思路和判斷機制,這樣才可以學他人的長處,瞭解他的不足。


這樣才可在初級階段學到一些有用技術。


我覺得這一點比分析算法更重要。作者在升級或作同類軟件時,他的註冊算法肯定都是不一樣的,而他的流程和判斷機制基本都是一樣的。


我遇到一個軟件要求註冊但壓根兒就沒輸入註冊碼的地方。它是通過註冊文件註冊的。


3,爆破還可把有不作用的功能屏蔽掉,做真正的完美版,如上網自動更新等等。


當然高手還可加些功能,像我們用的Win32DASM 10.0
五,幾點其它經驗。


1,在Win32DASM中,右鍵雙擊CALL上面的調用地址,就可轉到被調用處。



同樣右鍵雙擊轉移入口上面的地址,就可轉到開始跳的那一句,這功能相當有用喲!

2,搜索時可用如下的表示:

X, 0000001D (因為程式不一定只用EAX)
+00000050]
只取一部分特徵值有想不到的妙處,並且一般不會漏。
3,一個擊破,各各擊破。對於多產作者或同一公司的不同產品一般都有效,對於以後的升級版本也一樣。

4,拿來主義。

我的第一個破解就是借來的。 DivX Subtitle Displayer是一個很小很實用的播放軟件。前幾月我一直用它看電影,我用的是4.44破解修正檔,後來網上出了4.5。

我就用FC32比較破解前後差異,然後再找到修改點,提取該點的特徵值。


再在4.5中搜索該值,運氣好得很,就一處,改它!再執行!成功!再也沒有煩人的NAG。從此踏上了我的爆破手生涯。作為初學者我建議不要用此種方法。

爆破不苦碼字苦!以上高手見了也許不屑一顧,但作為像我一樣的菜鳥應該有一定的幫助。由於我是邊想邊碼,沒有準備很詳細的例子。所以不到之處和錯誤一定請各位指正。不然有誰因我而誤入歧途我實擔當不起。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次