10. OD-VC程序暴力破解
?
查找字符串:unregistered
找到關(guān)鍵位置處后,發(fā)現(xiàn)je跳轉(zhuǎn)改為nop并沒什么作用
關(guān)鍵在于al值為0,所有未注冊
al值為 esp+4中的值獲得
esp+4又是兩處地址調(diào)用得到,如上圖
右鍵call兩處地址分別下斷點(diǎn)
調(diào)試在第一個(gè)端點(diǎn)處調(diào)試,則另一個(gè)可以取消了
eax為函數(shù)返回值,后結(jié)果被push進(jìn)我們的斷點(diǎn)函數(shù)
那么上一個(gè)call下斷點(diǎn)
我們輸入的是5個(gè)字母,cmp eax,4? ? 如果小于4直接retn,報(bào)錯(cuò)數(shù)據(jù)太短
接下來就是push 3個(gè)參數(shù)進(jìn)入函數(shù),這個(gè)函數(shù)應(yīng)該就是加密計(jì)算的函數(shù)
在整個(gè)函數(shù)內(nèi)運(yùn)行調(diào)試,查看開始到結(jié)束retn的所有過程
記錄中間是否還有retn是因?yàn)闃?biāo)志位未實(shí)現(xiàn)而導(dǎo)致未進(jìn)入的
一般我們寫程序也會返回兩個(gè)值,要么正確要么錯(cuò)誤,所有未注冊自然會進(jìn)入錯(cuò)誤,而正確進(jìn)入正確的retn
第一個(gè)retn,因?yàn)榉祷刂禐閑ax,那么我們把a(bǔ)l改為1(mov al,1)直接retn,測試成功破解。
第二個(gè)retn前有3個(gè)函數(shù),就是做加密算法的,我們自己做加密算法是通過計(jì)算機(jī)某為一只進(jìn)行各種計(jì)算得出結(jié)果。
判斷3個(gè)函數(shù)就是做此功能。
?
?
總結(jié)
以上是生活随笔為你收集整理的10. OD-VC程序暴力破解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管道popen和pclose的实例使用
- 下一篇: C/C++面试题—合并两个排序的链表【递