第六章--爆破軟體
第六章--爆破軟體
爆破其實很簡單,最起碼比你能一下把你家的牙膏給全擠出來要容易多了。你只要先到大街上買幾根雷管,然後放到你的顯示器上再點著就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,呵呵,再執行幾步看看,是不是成功了?還有就是如果你只是想達到註冊軟體的目的,且該軟體只在註冊的時候驗證一次的話,用這個方法就可以代替雷管了!
呵呵,最後還是要說一句,爆破只是一些雕蟲小技。剛入門時玩幾次就夠了,切莫就此不前...
後話:你可能慢慢就會發現,有一些軟體其實並沒有你想象中那麼簡單,你甚至連找到它的關鍵跳轉都找不到。這很正常,你要做的便是多動手多練習,慢慢你就會明白過來的。我今天之所以給你舉這兩個例子,就是因為它們兩個都比較簡單,且能說明重點,給你講那些比較那個的軟體的爆破,反而會讓你看的一頭霧水...
<本章完>
相關文章
- 敏捷軟體開發-第六章2007-04-17敏捷
- 第六章:3D列印軟體(Cura)( 第一講:軟體安裝)2016-05-013D
- 現代軟體工程第六章【敏捷流程】練習與討論2017-11-16軟體工程敏捷
- 遊戲修改軟體fpe在破解中的妙用--------------用FPE確定關鍵地址後爆破之2004-10-20遊戲
- 提高sqlmap爆破效率2017-08-11SQL
- 爆破經驗談2015-11-15
- zip密碼爆破:fcrackzip2024-03-28密碼
- winamp的皮膚製作軟體skinner註冊框之去除篇 (爆破難度:中等)
(4千字)2001-03-18
- Kali中SMB爆破工具————acccheck2018-06-08
- 《LinuxFromScratch》第三部分:構建LFS系統第六章:安裝基本的系統軟體-6.3.軟體包管理2017-11-07Linux
- 軟體、軟體危機、軟體工程 (轉)2007-12-04軟體工程
- 資料庫密碼爆破HexorBase2016-12-12資料庫密碼HexoORB
- 使用OPENROWSET爆破SQL Server密碼2017-04-27SQLServer密碼
- Oracle SID爆破工具SidGuess2017-04-24Oracle
- SQL Server密碼爆破工具SQLdict2017-11-17SQLServer密碼
- WordPress 利用 XMLRPC 高效爆破 原理分析2020-08-19XMLRPC
- python爆破一筆畫小遊戲2020-11-14Python遊戲
- xss標籤和屬性爆破2022-02-11
- Metasploit AFP爆破模組afp_login2018-04-10
- 網站模糊測試爆破工具Wfuzz2017-07-19網站
- 作業系統思考 第六章 記憶體管理2019-05-09作業系統記憶體
- 軟體工程——軟體測試2014-01-21軟體工程
- 軟體工程——軟體計劃2013-12-11軟體工程
- 小弟的一篇湊數的破解文章,是小弟解決的第一個密碼學軟體!(爆破哈!)
(14千字)2002-09-29密碼學
- 軟體工程 第一章 軟體與軟體工程2024-03-13軟體工程
- 軟體測試:軟體缺陷管理2019-08-01
- 軟體“吃”掉了軟體開發2014-04-25
- 軟體開發mac常用軟體2015-01-02Mac
- 第六章——函式(自動閉包和記憶體)2017-12-27函式記憶體
- 密碼爆破ssh與ftp服務(finish)2024-05-21密碼FTP
- 軟體2024-04-10
- 《軟體加密與解密》——軟體加軟體相似性比對2012-04-18加密解密
- 2020煤礦井下爆破操作證考試及煤礦井下爆破模擬考試題庫2020-09-26
- 軟體測試--中介軟體介紹2021-01-05
- 軟體開發與軟體研發2013-04-10
- 軟體測試--軟體生命週期2024-07-27
- Redis中介軟體與Web中介軟體2024-07-07RedisWeb
- 【軟體工程】軟體設計之總體設計2014-11-02軟體工程