談?wù)勡浖钠平庠?
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:05:02 作者:佚名
我要評論

從本章開始,我們來一步一步學(xué)習(xí)Crack軟件(80%讀者昏死過去,且不省人世...另有20%在尋找附近可以用來打人的東西)
不可不說一下學(xué)習(xí)破解的三個階段:
初級,修改程序,用ultraedit等工具修改exe文件,稱暴力破解,簡稱爆破
中級,追出軟件的注冊碼
高級,寫
從本章開始,我們來一步一步學(xué)習(xí)Crack軟件(80%讀者昏死過去,且不省人世...另有20%在尋找附近可以用來打人的東西)
不可不說一下學(xué)習(xí)破解的三個階段:
初級,修改程序,用ultraedit等工具修改exe文件,稱暴力破解,簡稱爆破
中級,追出軟件的注冊碼
高級,寫出注冊機(jī)
先說這爆破。所謂爆破,就是指通過修改可執(zhí)行文件的源文件,來達(dá)到相應(yīng)的目的。你不明白?呵呵,舉個例子好了,比如說某共享軟件,它比較用戶輸入的注冊碼,如果用戶輸入的,跟它通過用戶名(或其它)算出來的注冊碼相等的話(也就是說用戶輸入的注冊碼正確了),那么它就會跳到注冊成功的地方去,否則就跳到出錯的地方去。
明白過來了吧,我們只要找到這個跳轉(zhuǎn)指令,把它修改為我們需要的“造型”,這樣,我們是不是就可以為所欲為了?(某軟件雙手放在胸口,你要干嘛?)
常見的修改方法有兩種,我給你舉例說明:
no.1
在某軟件中,這樣來進(jìn)行注冊:
00451239 CALL 00405E02 (關(guān)鍵CALL,用來判斷用戶輸入的注冊碼是否正確)
0045123D JZ 004572E6 (!!!
想明白了嗎?嘿嘿...沒錯,我們只要把那個關(guān)鍵跳轉(zhuǎn)JZ給改為JNZ(如果用戶輸入的注冊碼錯誤,就注冊成功,輸入正確則注冊失敗)。當(dāng)然你也可以將JNZ修改為Jmp,這樣的話,你輸入的注冊碼無論正確與否。都可以注冊成功。
no.2
我們再來講一下另外的一種情況:
00451239 CALL 00405E02 (關(guān)鍵CALL,用來判斷用戶輸入的注冊碼是否正確)
0045123D JNZ 004572E6 (!!!
你一定看出跟第一種情況不同的地方了吧。沒錯!它與第一種不同的,就是第一種情況是如果注冊碼正確,就跳到注冊成功處,如果沒有跳走,就會執(zhí)行到失敗處。而這一種情況則是如果注冊碼不正確,就跳到注冊失敗處,否則將執(zhí)行到注冊成功處。
這種情況的修改,除了把JNZ改為JZ外,還可以將其改為Nop,Nop這個指令沒有任何意義,將該條指令修改為Nop后,便可隨意輸入注冊碼來進(jìn)行注冊了。
原理以經(jīng)給你講了,下面我們再來講一下具體的修改辦法吧。(我假設(shè)你以經(jīng)明白了我所說的工具的使用方法)
先說一下虛擬地址和偏移量轉(zhuǎn)換的問題,在SoftICE和W32Dasm下顯示的地址值是所謂的內(nèi)存地址(memory offset),或稱之為虛擬地址(Virual Address,VA)。而十六進(jìn)制工具里,如:Hiew、Hex Workshop等顯示的地址就是文件地址,稱之為偏移量(File offset) 或物理地址(RAW offset)。
所以當(dāng)我們要通過那些十六進(jìn)制工具來對可執(zhí)行文件中的相應(yīng)指令進(jìn)行修改的話,先要找到它的File offset。我們沒有必要去使用那些專門的轉(zhuǎn)換工具,在W32Dasm中就有這個功能,比如說你W32Dasm中來到0045123D處,在W32Dasm界面下方的狀態(tài)欄中就會出現(xiàn)該條指令的虛擬地址和偏移地址,即@:0045123D @offset 0005063Dh 后面的這個0005063Dh就是相應(yīng)的偏移地址。我們得到該地址后,便可用UltraEdit等十六進(jìn)制工具來對可執(zhí)行文件進(jìn)行修改了。比如使用UltraEdit,你先用UltraEdit打開該可執(zhí)行文件,然后按Ctrl G,接著輸入你得到的偏移地址,就可以來到其相應(yīng)的機(jī)器碼處。
再給你講一下機(jī)器碼,所謂的機(jī)器碼。就是你看到的那些個十六進(jìn)制數(shù)據(jù)了。還記的它們與匯編指令是一一對應(yīng)的嗎?
以下這幾個是爆破時要用到的,其它的如果感興趣,可自行查看相關(guān)資料:
JZ=74;JNZ=75;JMP=EB;Nop=90
爆破的時候,只要對以上機(jī)器碼進(jìn)行相應(yīng)的修改就行了,比如第一種情況的時候,可以將74修改為EB,即將JZ修改為JMP。而第二種情況,責(zé)需將75修改為90,即將JNZ修改為Nop。
由于本章只講原理,具體一點(diǎn)的。如怎樣找到關(guān)鍵跳轉(zhuǎn)等,我們在下一章中再講。(一個磚頭飛了上來!嘿嘿,這次被俺接到了)上邊講了爆破的原理,你需要明白的是。爆破只是你學(xué)習(xí)Crack的開始,是很簡單的手段。剛?cè)腴T的時候可以玩玩兒,但希望你不要就此不前!
(嘿嘿,再說了。人家的軟件中不是都說了嘛,不準(zhǔn)對其進(jìn)行逆向修改。你動了人家的身子,怎么能不買帳呢? )
偶就不喜歡爆破,做不出注冊機(jī)也要找出注冊碼。否則我就不會去注冊這個軟件,既然想不掏錢,就要靠你自己的本事。(等以后我有錢了,會考慮去注冊那些優(yōu)秀的共享軟件的 )。所以,從某種意義上來說,我是一個正人君子.
其實(shí)要找到注冊碼并不是一件多么難的事,我是指你所針對的軟件不太那個的時候 , 不過你無需懼怕。
剛才我們說爆破的時候不提到過關(guān)鍵CALL嗎?一般情況下,這個關(guān)鍵CALL就是對兩個注冊碼(一個是軟件自身通過你的注冊名或機(jī)器什么的計算出來的正確的注冊碼,令一個就是你輸入的錯誤的注冊碼)進(jìn)行比較。我前邊提到過,CALL之前一般會把所用到的數(shù)據(jù)先放到一個地方,CALL過去的時候再從這些地方把先前放入的數(shù)據(jù)取出來,進(jìn)行相應(yīng)的處理。這個關(guān)鍵CALL也是這樣,在CALL之前,一般會把那兩個注冊碼放到堆棧或某個寄存器中。嘿嘿,我們只要在調(diào)試器中,單步執(zhí)行到該CALL,在未進(jìn)去之前通過CALL之前的指令判斷其將正確的和不正確的注冊碼放到哪里了。然后再用相應(yīng)指令進(jìn)行查看就成了,我說過不難的。
下面列出兩個最常見的情況(可參考相關(guān)教程):
no.1
mov eax [ ] 這里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,該條指令也可以是pop edx
call 00?????? 關(guān)鍵call
test eax eax
jz(jnz)或jne(je) 關(guān)鍵跳轉(zhuǎn)
看明白了吧,在關(guān)鍵CALL之前,軟件會把兩個注冊碼分別放入eax和edx中,你只要在CALL處下d eax或d edx就能看到正確的注冊碼了。
no.2
mov eax [ ] 這里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,該條指令也可以是pop edx
call 00?????? 關(guān)鍵call
jne(je) 關(guān)鍵跳轉(zhuǎn)
以上兩種情況最為常見,而那些個不太常見的情況,我們這里就不再提了。到下下一章的時候,我會給你講相關(guān)方法的...
關(guān)于查找軟件注冊碼的部分,就到這里。具體內(nèi)容,下下一章咱們再說。(不是說了嗎?我以經(jīng)可以接到你的磚頭了,干嘛還要丟呢?
最后,再來說最后的所謂的高級階段,如果你相信自己。并且熱愛Crack,那么你一定會熬到這個階段的,只是時間因人而異。
不可不說一下學(xué)習(xí)破解的三個階段:
初級,修改程序,用ultraedit等工具修改exe文件,稱暴力破解,簡稱爆破
中級,追出軟件的注冊碼
高級,寫出注冊機(jī)
先說這爆破。所謂爆破,就是指通過修改可執(zhí)行文件的源文件,來達(dá)到相應(yīng)的目的。你不明白?呵呵,舉個例子好了,比如說某共享軟件,它比較用戶輸入的注冊碼,如果用戶輸入的,跟它通過用戶名(或其它)算出來的注冊碼相等的話(也就是說用戶輸入的注冊碼正確了),那么它就會跳到注冊成功的地方去,否則就跳到出錯的地方去。
明白過來了吧,我們只要找到這個跳轉(zhuǎn)指令,把它修改為我們需要的“造型”,這樣,我們是不是就可以為所欲為了?(某軟件雙手放在胸口,你要干嘛?)
常見的修改方法有兩種,我給你舉例說明:
no.1
在某軟件中,這樣來進(jìn)行注冊:
00451239 CALL 00405E02 (關(guān)鍵CALL,用來判斷用戶輸入的注冊碼是否正確)
0045123D JZ 004572E6 (!!!
想明白了嗎?嘿嘿...沒錯,我們只要把那個關(guān)鍵跳轉(zhuǎn)JZ給改為JNZ(如果用戶輸入的注冊碼錯誤,就注冊成功,輸入正確則注冊失敗)。當(dāng)然你也可以將JNZ修改為Jmp,這樣的話,你輸入的注冊碼無論正確與否。都可以注冊成功。
no.2
我們再來講一下另外的一種情況:
00451239 CALL 00405E02 (關(guān)鍵CALL,用來判斷用戶輸入的注冊碼是否正確)
0045123D JNZ 004572E6 (!!!
你一定看出跟第一種情況不同的地方了吧。沒錯!它與第一種不同的,就是第一種情況是如果注冊碼正確,就跳到注冊成功處,如果沒有跳走,就會執(zhí)行到失敗處。而這一種情況則是如果注冊碼不正確,就跳到注冊失敗處,否則將執(zhí)行到注冊成功處。
這種情況的修改,除了把JNZ改為JZ外,還可以將其改為Nop,Nop這個指令沒有任何意義,將該條指令修改為Nop后,便可隨意輸入注冊碼來進(jìn)行注冊了。
原理以經(jīng)給你講了,下面我們再來講一下具體的修改辦法吧。(我假設(shè)你以經(jīng)明白了我所說的工具的使用方法)
先說一下虛擬地址和偏移量轉(zhuǎn)換的問題,在SoftICE和W32Dasm下顯示的地址值是所謂的內(nèi)存地址(memory offset),或稱之為虛擬地址(Virual Address,VA)。而十六進(jìn)制工具里,如:Hiew、Hex Workshop等顯示的地址就是文件地址,稱之為偏移量(File offset) 或物理地址(RAW offset)。
所以當(dāng)我們要通過那些十六進(jìn)制工具來對可執(zhí)行文件中的相應(yīng)指令進(jìn)行修改的話,先要找到它的File offset。我們沒有必要去使用那些專門的轉(zhuǎn)換工具,在W32Dasm中就有這個功能,比如說你W32Dasm中來到0045123D處,在W32Dasm界面下方的狀態(tài)欄中就會出現(xiàn)該條指令的虛擬地址和偏移地址,即@:0045123D @offset 0005063Dh 后面的這個0005063Dh就是相應(yīng)的偏移地址。我們得到該地址后,便可用UltraEdit等十六進(jìn)制工具來對可執(zhí)行文件進(jìn)行修改了。比如使用UltraEdit,你先用UltraEdit打開該可執(zhí)行文件,然后按Ctrl G,接著輸入你得到的偏移地址,就可以來到其相應(yīng)的機(jī)器碼處。
再給你講一下機(jī)器碼,所謂的機(jī)器碼。就是你看到的那些個十六進(jìn)制數(shù)據(jù)了。還記的它們與匯編指令是一一對應(yīng)的嗎?
以下這幾個是爆破時要用到的,其它的如果感興趣,可自行查看相關(guān)資料:
JZ=74;JNZ=75;JMP=EB;Nop=90
爆破的時候,只要對以上機(jī)器碼進(jìn)行相應(yīng)的修改就行了,比如第一種情況的時候,可以將74修改為EB,即將JZ修改為JMP。而第二種情況,責(zé)需將75修改為90,即將JNZ修改為Nop。
由于本章只講原理,具體一點(diǎn)的。如怎樣找到關(guān)鍵跳轉(zhuǎn)等,我們在下一章中再講。(一個磚頭飛了上來!嘿嘿,這次被俺接到了)上邊講了爆破的原理,你需要明白的是。爆破只是你學(xué)習(xí)Crack的開始,是很簡單的手段。剛?cè)腴T的時候可以玩玩兒,但希望你不要就此不前!
(嘿嘿,再說了。人家的軟件中不是都說了嘛,不準(zhǔn)對其進(jìn)行逆向修改。你動了人家的身子,怎么能不買帳呢? )
偶就不喜歡爆破,做不出注冊機(jī)也要找出注冊碼。否則我就不會去注冊這個軟件,既然想不掏錢,就要靠你自己的本事。(等以后我有錢了,會考慮去注冊那些優(yōu)秀的共享軟件的 )。所以,從某種意義上來說,我是一個正人君子.
其實(shí)要找到注冊碼并不是一件多么難的事,我是指你所針對的軟件不太那個的時候 , 不過你無需懼怕。
剛才我們說爆破的時候不提到過關(guān)鍵CALL嗎?一般情況下,這個關(guān)鍵CALL就是對兩個注冊碼(一個是軟件自身通過你的注冊名或機(jī)器什么的計算出來的正確的注冊碼,令一個就是你輸入的錯誤的注冊碼)進(jìn)行比較。我前邊提到過,CALL之前一般會把所用到的數(shù)據(jù)先放到一個地方,CALL過去的時候再從這些地方把先前放入的數(shù)據(jù)取出來,進(jìn)行相應(yīng)的處理。這個關(guān)鍵CALL也是這樣,在CALL之前,一般會把那兩個注冊碼放到堆棧或某個寄存器中。嘿嘿,我們只要在調(diào)試器中,單步執(zhí)行到該CALL,在未進(jìn)去之前通過CALL之前的指令判斷其將正確的和不正確的注冊碼放到哪里了。然后再用相應(yīng)指令進(jìn)行查看就成了,我說過不難的。
下面列出兩個最常見的情況(可參考相關(guān)教程):
no.1
mov eax [ ] 這里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,該條指令也可以是pop edx
call 00?????? 關(guān)鍵call
test eax eax
jz(jnz)或jne(je) 關(guān)鍵跳轉(zhuǎn)
看明白了吧,在關(guān)鍵CALL之前,軟件會把兩個注冊碼分別放入eax和edx中,你只要在CALL處下d eax或d edx就能看到正確的注冊碼了。
no.2
mov eax [ ] 這里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,該條指令也可以是pop edx
call 00?????? 關(guān)鍵call
jne(je) 關(guān)鍵跳轉(zhuǎn)
以上兩種情況最為常見,而那些個不太常見的情況,我們這里就不再提了。到下下一章的時候,我會給你講相關(guān)方法的...
關(guān)于查找軟件注冊碼的部分,就到這里。具體內(nèi)容,下下一章咱們再說。(不是說了嗎?我以經(jīng)可以接到你的磚頭了,干嘛還要丟呢?
最后,再來說最后的所謂的高級階段,如果你相信自己。并且熱愛Crack,那么你一定會熬到這個階段的,只是時間因人而異。
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機(jī)密碼”,主要是為了防止別人使用自已的計算機(jī),設(shè)置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實(shí)沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨(dú)立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進(jìn)行加密。但有些人加密后就會忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機(jī)泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機(jī)密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機(jī)泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應(yīng)量子計算機(jī)可以破解下載的所有的加密算法嗎?其實(shí)也不是不可以,下面虛擬就為大家講解買臺量子計算機(jī),如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機(jī)密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o(hù)企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實(shí),針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17