您好,登錄后才能下訂單哦!
破解的是《加密與解密第三版》中的traceme.exe,下載地址將會(huì)在最后給出。
這個(gè)是軟件的主界面,軟件的主要流程是,當(dāng)按下check后,會(huì)讀取用戶名和序列號的內(nèi)容,然后檢查用戶名是否超過五位,不超過則彈框報(bào)錯(cuò)。超過后,會(huì)讀入用戶名和序列號。會(huì)根據(jù)用戶名生成正確的序列號,然后用正確的序列號和輸入框內(nèi)的序列號做對比,如果內(nèi)容一致則顯示成功。如果不一致,則顯示再試一次。
首先用ollydbg打開traceme。根據(jù)教程上說的,這種讀取輸入框內(nèi)內(nèi)容的exe通常用到user32.dll的GetDlgItemTextA方法。所以使用Ctrl+G調(diào)出窗口
輸入要跟蹤的表達(dá)式中輸入GetDlgItemTextA并且在user32.dll中找到它的代碼段
左上角的紅色代表我已經(jīng)在GetDlgItemTextA處設(shè)置了斷點(diǎn),一旦程序運(yùn)行了GetDlgItemTextA,就會(huì)停下來。接下來就開始運(yùn)行exe程序了。
序列號我是瞎輸?shù)?,然后按check開始檢驗(yàn)。果不其然就停在了75e66b36處。然后就可以不停的按F7鍵,
直到這邊,可以看到call命令已經(jīng)運(yùn)行了兩次GetDlgItemTextA,可以判斷程序已經(jīng)將輸入框中的用戶名和序列號讀取了,接下來可以猜測test方法就是在比對序列號。不過結(jié)果不是我現(xiàn)象的那樣。test方法下面有一個(gè)je的跳轉(zhuǎn)。我點(diǎn)擊了它。
立即出現(xiàn)了一個(gè)紅色的箭頭,這個(gè)箭頭一直通向
原來是檢查用戶名字符的數(shù)目的,那么就繼續(xù)找下去。
第一個(gè)箭頭是我剛剛看的第一個(gè)箭頭,第二個(gè)箭頭又是一個(gè)test的方法,我看看它跳轉(zhuǎn)到哪里去了,
嗯沒錯(cuò)這個(gè)跳轉(zhuǎn)到的地址顯示的是序列號錯(cuò)誤,說明這個(gè)地方的test是判斷的序列號是否正確,錯(cuò)誤就跳轉(zhuǎn)到序列號錯(cuò)誤部分,如果不跳轉(zhuǎn)呢?
不跳轉(zhuǎn)顯示的是成功,那么就把這個(gè)跳轉(zhuǎn)涂掉試試看。右鍵
沒錯(cuò),我成功了,這個(gè)就是傳說中的爆破。它讓判斷失敗失敗后依舊運(yùn)行成功的結(jié)果。不過這樣無論輸入什么結(jié)果都是成功的??梢栽谶@個(gè)地方右鍵,選擇菜單中的“復(fù)制到可執(zhí)行文件”,然后選擇“所有修改”。在彈出的新窗口中,保存文件。
生成了新的traceme.exe,這個(gè)exe不管輸入什么序列號都是成功的。
當(dāng)然也可以不掉過使用F8繼續(xù)運(yùn)行程序,觀察現(xiàn)象,直到這個(gè)地方。
在右邊有一個(gè)明顯是我輸入的序列號的地方,而上面還有一個(gè)2360,并且使用了一個(gè)叫做lstrcmpA的方法去使用了這兩個(gè)參數(shù)。這個(gè)可以猜測是真的序列號和輸入的驗(yàn)證號比對的一個(gè)過程。
很明顯這個(gè)lstrcmpA用了一個(gè)叫做CompareStringA的方法,它們確實(shí)是在比較是否一致。
可以在程序正常打開的情況下,試著輸入admin和序列號2360
這個(gè)是在程序運(yùn)算的時(shí)候,在內(nèi)存中看到這正確的答案。
當(dāng)然還有一種方法是根據(jù)匯編代碼來逆推出根據(jù)用戶名生成序列號的方法,不過這個(gè)目前我還沒研究出來。
traceme.exe的下載地址:https://u19693866.ctfile.com/fs/19693866-388338607
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。