160个Crackme028之对抗花指令
文章目錄
- 查殼
- 分析程序
- 分析算法
- 對(duì)抗花指令
- 校驗(yàn)過(guò)程
- 校驗(yàn)結(jié)果
查殼
目標(biāo)程序是用VC6寫的,沒(méi)有加殼,跟027是同一個(gè)作者,難度為一顆星
分析程序
首先根據(jù)錯(cuò)誤提示可以看到跳轉(zhuǎn)到這個(gè)地址的地方有很多,我們直接選擇最前面那個(gè)地址,開(kāi)始分析整個(gè)算法
先隨便輸入一個(gè)序列號(hào)
另外,這個(gè)程序如果有IDA的幫助會(huì)分析的更快
分析算法
我們找到算法開(kāi)始處的地址,對(duì)應(yīng)到IDA中,F5查看一下偽C代碼,但是你會(huì)發(fā)現(xiàn)有個(gè)提示,讓我們把光標(biāo)選擇在一個(gè)函數(shù),這表示IDA的反編譯失敗了!這是為什么呢?
對(duì)抗花指令
上一個(gè)Crackme作者犯了一個(gè)低級(jí)錯(cuò)誤,寫錯(cuò)了一個(gè)參數(shù),這一次他玩了一個(gè)小把戲,用花指令干擾我們靜態(tài)分析。現(xiàn)在來(lái)破解一個(gè)小把戲
OD直接拉到函數(shù)開(kāi)頭的部分,你會(huì)看到有一堆nop指令
在IDA同樣地址處這里卻不是nop,而是被解釋成了align10,IDA的反匯編器在這里出現(xiàn)了錯(cuò)誤,把數(shù)據(jù)解釋成了代碼
那么解決辦法就是在這一行按字母D鍵,將代碼強(qiáng)行解釋為數(shù)據(jù),修改后如下:
然后選中整個(gè)函數(shù),按P鍵組合成一個(gè)函數(shù)
這個(gè)時(shí)候你再按F5,就能顯示整個(gè)函數(shù)的偽代碼了
校驗(yàn)過(guò)程
這個(gè)程序的校驗(yàn)過(guò)程相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,過(guò)程如下
可以看到校驗(yàn)的部分就是6個(gè)cmp和jcc指令了,直接看IDA
這里顯示的是一堆十進(jìn)制的數(shù)字,這個(gè)對(duì)我們來(lái)說(shuō)沒(méi)有意義,按R鍵,可以把數(shù)字轉(zhuǎn)為字符串,轉(zhuǎn)換后如下
可以很直觀的看到序列號(hào)就是6287-A
校驗(yàn)結(jié)果
隨便輸入一個(gè)用戶名,但是長(zhǎng)度必須大于5,然后輸入剛才的序號(hào),提示正確 破解完成
最后,需要相關(guān)文件可以到我的Github下載:
https://github.com/TonyChen56/160-Crackme
總結(jié)
以上是生活随笔為你收集整理的160个Crackme028之对抗花指令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 160个Crackme027之First
- 下一篇: 160个Crackme029