標籤:使用 os 檔案 資料 io 問題
爆破其實很簡單,最起碼比你能一下把你家的牙膏給全擠出來要容易多了。你只要先到大街上買幾根雷管,然後放到你的顯示器上再點著就OK了(不難吧,記的點著後跑遠點兒)
爆破的原理我也說過了,相信你很容易就能理解了。我們今天就具體講一下如何找到那個關鍵跳轉以及如何才能買到即便宜又好用的雷管...
爆破一個軟體一般只需要很少的幾個步驟,首先先看一下其有無加殼,有的話是用何工具加的殼,知道了以後用相應的工具將其脫掉或進行手工脫殼,參考以有教程。接著我們就可以對脫過殼之後的軟體來開刀了。你有兩種選擇,用W32Dasm或調試器,一般如果你遇上的是那種很菜的軟體的話,用W32Dasm就可以搞定了。如果遇上的不是那種比較菜的,就買股票吧,因為股票是你如膠似漆的妻子!當!快醒醒啊...哦,一般如果你遇上的不是那種很菜的軟體的話,就用調試器吧。先來說W32Dasm:我們首先用W32Dasm來進行反組譯碼(廢話!)之後在串式參考中找到錯誤提示資訊或可能是正確的提示資訊雙擊滑鼠左鍵來到相應的地址處。在W32Dasm的主視窗中分析相應彙編代碼,找出關鍵跳轉和關鍵call。綠色光條停在關鍵跳轉,在W32Dasm主視窗底部找到關鍵跳轉的位移地址(實際修改地址)。用ultraedit找到位移地址(實際修改地址)修改機器碼(或放上一根雷管),儲存(點火)!而用調試器也同樣簡單,等會兒會詳細說明。
道理廢話了那麼多,來執行個體動手說明吧:
首先講解用W32Dasm來進行爆破:
【軟體名稱】中華壓縮(ChinaZip)
【軟體版本】7.0
【檔案大小】1041KB
【適用平台】Win9x/Me/NT/2000
【軟體簡介】ChinaZip(中華壓縮)是一款壓縮、解壓各種壓縮文檔的工具軟體,它支援包括ZIP格式檔案在內的各種常見壓縮格式如:ARJ、CAB、GZIP、JAR、LHA、TAR、ZOO、ARC、LZH、Pak等等。
軟體的出處是電腦報2001年的合訂本配套光碟片,7.0時的保護做的很那個,目前最新版應該好多了...
好的,我們開始吧,首先第一步是你得把它裝上(引來野狼N頭),之後先隨便找個字串填上去註冊一下,會看到一個錯誤對話方塊,提示"註冊碼不正確,無法註冊"。接著我們用FI來看一下它用的是什麼殼。ASPack 2.001,caspr出場。脫過殼後我們用W32Dasm花上半分鐘或半小時的時間來對它進行反組譯碼。我們以經反組譯碼完畢。之後在串式參考中(字串資料參考)中找剛才你看到的那個錯誤提示,找到之後雙擊幾次,發現其只有一處調用。我們會來到004F0E64處,我把具體代碼給貼上(請你從代碼的最下邊開始看):
:004F4DD1 E84EE1F3FF call 00432F24
:004F4DD6 8B55F0 mov edx, dword ptr [ebp-10]
:004F4DD9 8D4DF4 lea ecx, dword ptr [ebp-0C]
:004F4DDC 8BC3 mov eax, ebx
:004F4DDE E8C9010000 call 004F4FAC
:004F4DE3 8B55F4 mov edx, dword ptr [ebp-0C]
:004F4DE6 58 pop eax
:004F4DE7 E830F3F0FF call 0040411C
:004F4DEC 7576 jne 004F4E64 <--這個就是傳說中的男人,Stop!這個就是傳說中的關鍵跳轉
:004F4DEE B201 mov dl, 01
:004F4DF0 A158254500 mov eax, dword ptr [00452558]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004F4D86(C)
|
:004F4DF5 E85ED8F5FF call 00452658
:004F4DFA 8945FC mov dword ptr [ebp-04], eax
:004F4DFD 33C0 xor eax, eax
:004F4DFF 55 push ebp
:004F4E00 685D4E4F00 push 004F4E5D
:004F4E05 64FF30 push dword ptr fs:[eax]
:004F4E08 648920 mov dword ptr fs:[eax], esp
:004F4E0B B101 mov cl, 01
* Possible StringData Ref from Code Obj ->"Software\XDZHAN\ChinaZip"
|
:004F4E0D BAA84E4F00 mov edx, 004F4EA8
:004F4E12 8B45FC mov eax, dword ptr [ebp-04]
:004F4E15 E822DAF5FF call 0045283C
* Possible StringData Ref from Code Obj ->"Real Programmers Use Pascal!"
|
:004F4E1A B9CC4E4F00 mov ecx, 004F4ECC
* Possible StringData Ref from Code Obj ->"Key"
|
:004F4E1F BAF44E4F00 mov edx, 004F4EF4
:004F4E24 8B45FC mov eax, dword ptr [ebp-04]
:004F4E27 E854DEF5FF call 00452C80
* Possible StringData Ref from Code Obj ->"軟體註冊成功,謝謝您的支援!" <--我們向上看會在這裡發現註冊成功後的正確資訊。正確資訊處向上找第一個跳轉就是我們要找的關鍵跳轉。
|
:004F4E2C B8004F4F00 mov eax, 004F4F00
:004F4E31 E8563DF6FF call 00458B8C
:004F4E36 A16C305000 mov eax, dword ptr [0050306C]
:004F4E3B 8B00 mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"中華壓縮(ChinaZip)-註冊版"
|
:004F4E3D BA244F4F00 mov edx, 004F4F24
:004F4E42 E80DE1F3FF call 00432F54
:004F4E47 33C0 xor eax, eax
:004F4E49 5A pop edx
:004F4E4A 59 pop ecx
:004F4E4B 59 pop ecx
:004F4E4C 648910 mov dword ptr fs:[eax], edx
:004F4E4F 686E4E4F00 push 004F4E6E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004F4E62(U)
|
:004F4E54 8B45FC mov eax, dword ptr [ebp-04]
:004F4E57 E868E2F0FF call 004030C4
:004F4E5C C3 ret
:004F4E5D E9C2E9F0FF jmp 00403824
:004F4E62 EBF0 jmp 004F4E54
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004F4DEC(C)
|
* Possible StringData Ref from Code Obj ->"註冊碼不正確,無法註冊!" <--這個就是出錯的資訊了,那正確資訊也就在附近,上下看看。
|
:004F4E64 B8484F4F00 mov eax, 004F4F48 <--雙擊來到這裡
:004F4E69 E81E3DF6FF call 00458B8C
:004F4E6E 33C0 xor eax, eax
:004F4E70 5A pop edx
:004F4E71 59 pop ecx
:004F4E72 59 pop ecx
:004F4E73 648910 mov dword ptr fs:[eax], edx
:004F4E76 689B4E4F00 push 004F4E9B
你可能有點不明白,為什麼我說它就是關鍵跳轉呢?還記的在破解原理中我舉的例子嗎?
我再給你講一遍好了,通常我們會遇到兩種關鍵跳轉,我分別舉例說明:
(1)
je (jne,jz,jnz) 19870219
........ XXXXXXXXXX
........ XXXXXXXXXX
........ 軟體註冊正確的相關資訊
...
...
19870219 軟體的出錯資訊
.......
.......
也就是說這第一種情況是先判斷註冊碼是否正確,如果不正確就跳到19870219處,正確的話就不跳轉,一直執行下去,直至註冊正確處。
對於這種情況,我們要找的關鍵跳轉,就是正確資訊上面的第一個跳轉。我們可能對其作相應修改或將其給nop掉就萬事OK了。
(2)
je (jne,jz,jnz) 19870219
........ XXXXXXXXXX
........ XXXXXXXXXX
........ 軟體的出錯資訊
...
...
19870219 軟體註冊正確的相關資訊
.......
.......
而這第二種情況就是先判斷註冊碼正確與否,如果正確就跳到19870219處,不正確的話就不跳轉,一直執行下去,直至出錯處。
對於這種情況,我們要找的關鍵跳轉就是出錯資訊上面的第一個跳轉。將其做相應修改或改為jmp後我們就可以為所欲為了
呵呵,道理也都給你講明白了,我們來改一下試試吧。我們在W32Dasm中選中關鍵跳轉,在右下角的狀態列中看到相應的位移地址為000F41EC。好的,我們用UltraEdit來開啟它。Ctrl+G,接著輸入0xF41EC,斷行符號後便會跳到相應的位置。相應的機器碼是75(jne),我們將其改為74(jz)後存檔退出。
好了,運行一下看看,我們來隨便輸入一個註冊碼註冊一下試試。呵呵,註冊成功!
用W32Dasm我們就講到這裡,呵呵,很簡單的,你下去之後自己找些保護簡單的軟體上上手吧。
我們接著來講用調試器來進行爆破。
如果你真的試圖用W32Dasm去爆破幾個軟體的話,用不了多少時間你就會發現一些問題。比如說有的軟體你用W32Dasm反組譯碼後串式參考根本就不能用。或者串式參考中沒有出錯或正確的資訊。還有就是有的軟體就算你通過串式參考來到了相應的地方,剛想去找關鍵跳轉你就會發現眼前的東西比你想像中的要亂的多...雖然你有可能通過認真仔細地找,仍會找到,但我不認為那是一件聰明的事情。畢竟,有一些動靜是只有在程式執行期間才能看出來的。好的,如果你用W32Dasm遇到了找不到關鍵跳轉的軟體,就去用調試器吧!(你用調試器前可先用W32Dasm開啟一遍看個先,如果很容易就讓你找到了。那就沒必要了)
在開始之前我們有必要講一下用調試器來爆破的步驟(我知道你一定會用調試器的 ):首先,我們當然還是要把你要Crack的軟體給裝上(我擋我擋我擋,不要亂丟東西嘛!)然後來到輸入註冊碼的地方,仍舊隨便輸入一個,接著不要按確定,待我們把調試器叫出來先。還記的我前面跟你講的API的事情嗎?軟體要得到你輸入的註冊碼,就一定會調用某個API函數來達到目的。我們就在調試器中用相應的API來做斷點,這樣的話,只要一有程式調用這個API,就會被調試器給攔截下來。
GetDlgItemInt、GetDlgItemText、GetDlgItemTextA這三個函數可能會有用。但是如果你用的是98,那為什麼不用hmemcpy呢?那真的是一個不錯的主意。當我們下完斷點後就返回到你要註冊的那個軟體中,點確定這類的按鈕。如果被調試器給斷了下來,就說明你剛才下的斷點有用,如果沒有被斷下來,就換個斷點試試。接下來我們在調試器中來取消剛才你下的那個斷點,我們以TRW2000為例(SoftICE與其操作大體相同)取消斷點用bc *指令。然後我們就輸入pmodule指令來返回到程式的領空(而在SoftICE中由於沒有相應指令,呵呵,狂按F12吧)。現在我們把話題岔開一下,什麼是領空呢?舉個例子吧,你的程式要得到你輸入的那個註冊碼,就會去調用相應的函數。比如調用GetDlgItemTextA,而GetDlgItemTextA本身又會去調用Hmemcpy這個函數,而這些函數都是存在於系統中的某個DLL檔案中的。那麼當這個程式調用相應的API函數的話,程式的領空就會轉到這個相應的DLL檔案中去執行這個API函數。(你就這樣理解就行了)我前邊也說過了,Hmemcpy這個函數應用程式本身並不直接調用,而是由其它的API函數來調用。那麼,你就可以理解為你的程式調用了一個API函數,調用的同時程式的領空會轉到這個API所在的DLL檔案裡,而這個API又調用了Hmemcpy函數,那麼此時領空就會又轉到了Hmemcpy所在的DLL檔案中,之後當Hmemcpy執行完畢,就會返回到調用它的API的領空中去,而當這個API執行完畢的後就會返回到調用它的應用程式的領空中去。比如說我們用Hmemcpy這個函數來當斷點,當我們輸入完註冊碼按確定後,程式就會去調用某個API來得到你輸入的那些資料,而這“某個API”又會去調用Hmemcpy,所以程式就被斷到了。當然此時程式的領空也就不會在應用程式中了,但是當我們輸入過pmodule指令之後我們就可以反回到應用程式本身的領空中去了。這樣的話你看到的就是應用程式自身的代碼了,而不是API的!好了,我接著剛才的說(到哪兒了來著?)當我們返回到程式自身的領空中去後就一直狂按F12吧,F12的作用是一直執行程式,直到遇上ret等指令。也就是一大坨一大坨地來執行程式^_^你一直按F12,直到程式出現註冊錯誤對話方塊。然後記下剛才你按的次數,接著從頭做起,這一次按F12的次數是你剛才按的次數-1,也就是說比上一次要少按一次。而後按鍵由F12換至F10(怎麼沒有F4?),還是一路狂按,直到軟體提示出錯,這次記下你按F10的次數。好的,再從頭來一遍,我們再次按F10的時候,要一步一步慢慢來,一般你按F10的次數離你上次按的次數相差五六步的時候,一般就會看見一個CALL,接著是一個跳轉指令。你一步一步地來,看過了這個跳轉指令之後會不會跳走,如果跳走了,那一般你不會再過兩三步就應該出錯了。當然也有可能是你沒有跳走,而過了兩三步就出錯了。這個應該不難理解,因為基本上它和我前邊跟你介紹過的是一個道理。然而另外一種情況是你一路按F10下來,到了最後會發現根本沒什麼跳轉指令,呵呵,別害怕,這個很常見的。遇上這種情況,我們只要把F10的次數變換為上次按F10的次數-1,這樣的話你一般就會停在一個CALL處,而這個CALL,就是程式中的關鍵CALL,我們之後要吃點兒苦,要按F8追進去分析它,程式註冊的成功與失敗,就在這個CALL中,也就是說我們要修改的關鍵跳轉,也在這個CALL中。呵呵,其實也很好理解的,就是把我上邊說的那些個判斷什麼地放到了一個CALL裡面。我們按F8追進去之後便仍舊按F10來一步一步執行,過不了多長時間你就會發現關鍵跳轉了,找關鍵跳轉的方法跟我前邊說的一樣,即按F10的次數跟上一次差五六步的時候慢下來,就會看到了。
你應該明白,程式是很靈活的東西,並沒有那麼多公式化的東西在裡邊,大概的分析方法就是這個樣子,一切都要靠你自己去掌握,別人跟你講,也只是講一個分析的方法而以,我相信隨著你以後經驗的提高,你慢慢地就能應付各種情況了。
現在,我們再用調試器來對CHINAZIP這個軟體進行分析,希望你能夠掌握這個並不難的方法。
首先,你要把剛才爆破過了的再改回來,或直接重裝一遍。之後我們開啟它,任意輸入註冊碼,接著按Ctrl+N呼出TRW,下斷點hmemcpy。下過後按F5退出(它就是不用F4,我也沒辦法^_^)然後我們點擊確定。好的,程式被斷了下來:
KERNEL?HMEMCPY
0147:9e62 push bp
0147:9e63 mov bp,sp
0147:9e65 push ds
0147:9e66 push edi
0147:9e68 push esi
0147:9e6a cld
0147:9e6b mov ecx,[bp+06]
0147:9e6f jcxz 9ee9
……以下N多代碼省略……
我們輸入bc *來取消斷點,然後用pmodule來返回到程式的領空:
0167:00436d13 mov [ebx+0c],eax
0167:00436d16 mov eax,[ebx]
0167:00436d18 cmp eax,byte +0c
0167:00436d1b jnz 00436d38
0167:00436d1d mov edx,[ebx+08]
0167:00436d20 push edx
0167:00436d21 mov ecx,[ebx+04]
0167:00436d24 mov edx,eax
0167:00436d26 mov eax,esi
0167:00436d28 call 00432b24
……N多代碼仍舊省略……
按7下F12另加1下F10來到0167:004f4dc4處,我們接著一下一下來按F10,大概按了10多下,就可以看到004f4dec處有一個跳轉,我們執行到004f4dec處後果然跳走了。會跳到004f4e64處,我們跳過去之後按不了三下,程式就提示出錯了。呵呵,明白過來了吧,004f4dec處的那個跳轉jnz 004f4e64就是關鍵跳轉,嘿嘿,找到了之後不用我說了吧
0167:004f4dc4 mov eax,[ebp-08]
0167:004f4dc7 push eax
0167:004f4dc8 lea edx,[ebp-10]
0167:004f4dcb mov eax,[ebx+02e0]
0167:004f4dd1 call 00432f24
0167:004f4dd6 mov edx,[ebp-10]
0167:004f4dd9 lea ecx,[ebp-0c]
0167:004f4ddc mov eax,ebx
0167:004f4dde call 004f4fac
0167:004f4de3 mov edx,[ebp-0c]
0167:004f4de6 pop eax
0167:004f4de7 call 0040411c
0167:004f4dec jnz 004f4e64 <--關鍵跳轉!!
0167:004f4dee mov dl,01
0167:004f4df0 mov eax,[00452558]
0167:004f4df5 call 00452658
0167:004f4dfa mov [ebp-04],eax
0167:004f4dfd xor eax,eax
0167:004f4dff push ebp
0167:004f4e00 push dword 004f4e5d
0167:004f4e05 push dword [fs:eax]
0167:004f4e08 mov [fs:eax],esp
0167:004f4e0b mov cl,01
0167:004f4e0d mov edx,004f4ea8
0167:004f4e12 mov eax,[ebp-04]
0167:004f4e15 call 0045283c
0167:004f4e1a mov ecx,004f4ecc
0167:004f4e1f mov edx,004f4ef4
0167:004f4e24 mov eax,[ebp-04]
0167:004f4e27 call 00452c80
0167:004f4e2c mov eax,004f4f00
0167:004f4e31 call 00458b8c
0167:004f4e36 mov eax,[0050306c]
0167:004f4e3b mov eax,[eax]
0167:004f4e3d mov edx,004f4f24
0167:004f4e42 call 00432f54
0167:004f4e47 xor eax,eax
0167:004f4e49 pop edx
0167:004f4e4a pop ecx
0167:004f4e4b pop ecx
0167:004f4e4c mov [fs:eax],edx
0167:004f4e4f push dword 004f4e6e
0167:004f4e54 mov eax,[ebp-04]
0167:004f4e57 call 004030c4
0167:004f4e5c ret
0167:004f4e5d jmp 00403824
0167:004f4e62 jmp short 004f4e54
0167:004f4e64 mov eax,004f4f48 <---由上面的0167:004f4dec處跳來,出錯!;
0167:004f4e69 call 00458b8c
0167:004f4e6e xor eax,eax
再來給你舉另一個例子:
【軟體名稱】天網防火牆
【軟體版本】2.46 Beta
【檔案大小】1289KB
【適用平台】Win9x/Me/NT/2000
【軟體簡介】天網防火牆個人版是一套給個人電腦使用的網路安全程式,它可以幫你抵擋網路入侵和攻擊,防止資訊泄露,並可與我們的網站相配合,根據可疑的攻擊資訊,來找到攻擊者。同時天網防火牆個人版把網路分為本地網和互連網,可以針對來自不同網路的資訊,來設定不同的安全方案,它適合於在撥接的使用者,也適合通過網際網路共用軟體上網的使用者。
該軟體仍舊是我從電腦報2001年合訂本的配套光碟片中找的,軟體的註冊碼可以到其網站免費獲得...
我們還是要先把它裝上(某民工:你小子敢再說一句廢話試試!^_^)之後我們用FI看一下它有沒有加殼,呵呵,BC++編譯,沒有加殼,爽!運行它,在註冊對話方塊中隨便輸入焦點什麼,比如說這星期又出了幾部新電影,都叫什麼名字等等...
好的,我們接下來請TRW2000出場。先胡亂輸入兩個字串,比如第一個輸入“英雄的導演是?”第二個輸入“可能是趙本山”:)
接下來就按Ctrl+N把TRW2K叫出來,下bpx hmemcpy,之後按F5退出。
接著可以按確定就成了,程式會被TRW2K斷掉,我們緊接著輸入bc *以及pmodule。
下面可以開始按F12了,一共按8下程式就會報錯,我們第二次就按7下然後開始按F10,按70下F10程式就又報錯了(呵呵,一定要有耐心哦)。
好的,我把反組譯碼後的代碼給你貼出來:
0167:0041c617 lea edx,[ebp-04] <--7下F12後按一下F10來到這裡
0167:0041c61a mov ecx,[0052ae7c]
0167:0041c620 mov eax,[ecx]
0167:0041c622 mov eax,[eax+0318]
0167:0041c628 add eax,byte +2c
0167:0041c62b call 00517740
0167:0041c630 dec dword [ebp-20]
0167:0041c633 lea eax,[ebp-04]
0167:0041c636 mov edx,02
0167:0041c63b call 00517710
0167:0041c640 mov word [ebp-2c],14
0167:0041c646 lea eax,[ebp-08]
0167:0041c649 call 00401d60
0167:0041c64e mov edx,eax
0167:0041c650 inc dword [ebp-20]
0167:0041c653 mov ecx,[ebp-40]
0167:0041c656 mov eax,[ecx+02e0]
0167:0041c65c call 004b9f14
0167:0041c661 lea edx,[ebp-08]
0167:0041c664 mov ecx,[0052ae7c]
0167:0041c66a mov eax,[ecx]
0167:0041c66c mov eax,[eax+0318]
0167:0041c672 add eax,byte +30
0167:0041c675 call 00517740
0167:0041c67a dec dword [ebp-20]
0167:0041c67d lea eax,[ebp-08]
0167:0041c680 mov edx,02
0167:0041c685 call 00517710
0167:0041c68a lea eax,[ebp-10]
0167:0041c68d call 00401d60
0167:0041c692 mov edx,eax
0167:0041c694 inc dword [ebp-20]
0167:0041c697 mov ecx,[ebp-40]
0167:0041c69a mov eax,[ecx+02e0]
0167:0041c6a0 call 004b9f14
0167:0041c6a5 lea edx,[ebp-10]
0167:0041c6a8 push dword [edx]
0167:0041c6aa mov word [ebp-2c],20
0167:0041c6b0 lea eax,[ebp-0c]
0167:0041c6b3 call 00401d60
0167:0041c6b8 mov edx,eax
0167:0041c6ba inc dword [ebp-20]
0167:0041c6bd mov ecx,[ebp-40]
0167:0041c6c0 mov eax,[ecx+02d4]
0167:0041c6c6 call 004b9f14
0167:0041c6cb lea edx,[ebp-0c]
0167:0041c6ce mov edx,[edx]
0167:0041c6d0 mov eax,[0052ae7c]
0167:0041c6d5 mov eax,[eax]
0167:0041c6d7 pop ecx
0167:0041c6d8 call 0040525c
0167:0041c6dd mov [ebp-45],al
0167:0041c6e0 dec dword [ebp-20]
0167:0041c6e3 lea eax,[ebp-10]
0167:0041c6e6 mov edx,02
0167:0041c6eb call 00517710
0167:0041c6f0 dec dword [ebp-20]
0167:0041c6f3 lea eax,[ebp-0c]
0167:0041c6f6 mov edx,02
0167:0041c6fb call 00517710
0167:0041c700 cmp byte [ebp-45],00
0167:0041c704 jz 0041c750 <--按了60多下F10後會在這裡發現一個跳轉,嘿嘿,就是它了!!!
0167:0041c706 mov ecx,[0052ae7c]
0167:0041c70c mov eax,[ecx]
0167:0041c70e mov eax,[eax+0318]
0167:0041c714 call 00411fd0
0167:0041c719 mov word [ebp-2c],2c
0167:0041c71f mov edx,00521b50
0167:0041c724 lea eax,[ebp-14]
0167:0041c727 call 005175b0
0167:0041c72c inc dword [ebp-20]
0167:0041c72f mov eax,[eax]
0167:0041c731 call 004b41b0
0167:0041c736 dec dword [ebp-20]
0167:0041c739 lea eax,[ebp-14]
0167:0041c73c mov edx,02
0167:0041c741 call 00517710
0167:0041c746 mov eax,[ebp-40]
0167:0041c749 call 004a81d0
0167:0041c74e jmp short 0041c77d
0167:0041c750 mov word [ebp-2c],38
0167:0041c756 mov edx,00521b6b
0167:0041c75b lea eax,[ebp-18]
0167:0041c75e call 005175b0
0167:0041c763 inc dword [ebp-20]
找到了關鍵跳轉之後就別閑著了,呵呵,放雷管吧!(你可以用W32Dasm開啟這個檔案,然後按Shift+F12,之後輸入0041c704,這樣就可以在右下角看到相應的位移地址了)
小技巧:在TRW中,如果你覺的某處可能是關鍵跳轉的話,可以用r fl z這個指令來進行測試,該指令可使以成立的條件取反,比如說本來JZ XXXXXXXX成立,可以跳走了,用r fl z指令後該條指令就不成立了,即就不會跳走了。以上也是,你可以在0041c704處輸入r fl z,呵呵,再執行幾步看看,是不是成功了?還有就是如果你只是想達到註冊軟體的目的,且該軟體只在註冊的時候驗證一次的話,用這個方法就可以代替雷管了!
呵呵,最後還是要說一句,爆破只是一些雕蟲小技。剛入門時玩幾次就夠了,切莫就此不前...
後話:你可能慢慢就會發現,有一些軟體其實並沒有你想象中那麼簡單,你甚至連找到它的關鍵跳轉都找不到。這很正常,你要做的便是多動手多練習,慢慢你就會明白過來的。我今天之所以給你舉這兩個例子,就是因為它們兩個都比較簡單,且能說明重點,給你講那些比較那個的軟體的爆破,反而會讓你看的一頭霧水...
<本章完>