【文章標題】:去多重校驗破解程序
【文章作者】:[B.H.S.T]頹廢の傻魚
【作者郵箱】:7484345@qq.com
【作者主頁】:http://hi.baidu.com/頹廢傻魚
【作者QQ號】:7484345
【軟件名稱】:實創(chuàng)進銷存管理軟件
【軟件大小】:2.32 M
【下載地址】:http://www.skycn.com/soft/46124.html
【加殼方式】:ASPack 2.12
【保護方式】:多重自校驗+重啟驗證+注冊保護
【編寫語言】:Borland Delphi 6.0 - 7.0
【使用工具】:OD,PEID
【操作平臺】:Windows XP
【作者聲明】:破解純屬興趣,沒有其他用意,請大家尊重作者的勞動成果!偶也只是一個小菜寫的不好還請大家多多指教^_^
-----------------------------------------------------------------------------------------------------------
中國黑帽安全小組:www.bhst.org 論壇只是為了幾個愛好相同的朋友一起靜下心來一起研討技術!無名無利!
互助共進 追求技術 齊心協(xié)力 自由飛翔 有喜歡編程的 破解的 入侵的朋友都可以來我們論壇和我們一起交流
【詳細過程】
很久沒有制作教程了 昨晚破了一個軟件 覺得挺有意思 所以作個教程和大家一起分享一下心得
先來看看軟件吧 查殼我就不查了 是個壓縮殼 菜鳥都可以搞定的ASPack壓縮殼 我就直接OD脫了它
脫殼部分沒什么大問題 我就不詳細說明了 看操作就OK了 機器有點卡哦 大家快進看吧
脫完殼后的文件體積比原來的要大得很多 我們來比較下6626304 原程序的也看一下1816064
這樣就可以觸發(fā)程序本身的自校驗了 不要直接去運行 因為我脫殼后直接運行給關機了 呵呵
不相信的朋友可以自己嘗試一下 下面開始進入今天的正題 去除多重自校驗 破解分去校驗和破解兩部分
去自校驗部分:
退出進程:bp ExitProcess
退出系統(tǒng):bp ExitWindowsEx
這兩個斷點大家都不會陌生 斷點的作用我也寫出來了 下面OD載入脫殼的程序找校驗的地方 請稍候 在分析
還是很慢哦 大家快進吧 機器太古董了 沒有辦法.. - - 好了 下面就先找關機的校驗吧 因為不把這個去掉
沒辦法調(diào)試程序 已經(jīng)斷下來了 此時不能Alt+F9返回 這個是菜鳥經(jīng)常犯的小錯誤 因為返回的話 就直接關機了
在堆棧里面跟隨到反匯編窗口 代碼大家在自己看了 關機的校驗有三處 簡單的分析一下就知道了 三個關機的
校驗都是由上面的je判斷的 我們直接把je都NOP掉就可以了 運行了之后 發(fā)現(xiàn)還是沒辦法運行 我們這樣看看
這速度太快了 沒法看到進程退出的 下面繼續(xù)去除退出進程的校驗 用到的斷點是這個bp ExitProcess
我們就不下斷了 直接OD載入程序之后單步走下去看看 走到了這里這個JE是否退出進程 我們繼續(xù)走幾步
看到這個奇怪的東東6626304 想想程序開始就驗證這什么東西的? 回頭看看我剛才記錄的6626304 一樣的對吧
如果你很聰明 你就知道這里比較什么了 這里比較了文件的大小了 這里的jle是小于等于就跳 這里顯然我們的
脫殼文件要比原文件大的多 在這里我沒有詳細去分析了 那個CALL里面就是比較文件的大小 大家可以自己跟進去看看
00831DB6 |. E8 7183BDFF call unpack.0040A12C
00831DBB |. 3D 00003000 cmp eax,300000
退出系統(tǒng)校驗代碼如下:
0070FF16 |. /74 08 je short unpack.0070FF20
0070FF18 |. |4E dec esi
0070FF19 |. |74 16 je short unpack.0070FF31
0070FF1B |. |4E dec esi
0070FF1C |. |74 24 je short unpack.0070FF42
0070FF1E |. |EB 31 jmp short unpack.0070FF51
0070FF20 |> 6A 00 push 0 ; /Reserved = 0; Case 1 of switch 0070FF15
0070FF22 |. 6A 06 push 6 ; |Options = EWX_REBOOT|EWX_FORCE
0070FF24 |. E8 BB80CFFF call <jmp.&user32.ExitWindowsEx> ; ExitWindowsEx 1處
0070FF29 |. 83F8 01 cmp eax,1
0070FF2C |. 1BDB sbb ebx,ebx
0070FF2E |. 43 inc ebx
0070FF2F |. EB 20 jmp short unpack.0070FF51
0070FF31 |> 6A 00 push 0 ; /Reserved = 0; Case 2 of switch 0070FF15
0070FF33 |. 6A 0C push 0C ; |Options = EWX_FORCE|EWX_POWEROFF
0070FF35 |. E8 AA80CFFF call <jmp.&user32.ExitWindowsEx> ; ExitWindowsEx 2處
0070FF3A |. 83F8 01 cmp eax,1
0070FF3D |. 1BDB sbb ebx,ebx
0070FF3F |. 43 inc ebx
0070FF40 |. EB 0F jmp short unpack.0070FF51
0070FF42 |> 6A 00 push 0 ; /Reserved = 0; Case 3 of switch 0070FF15
0070FF44 |. 6A 04 push 4 ; |Options = EWX_FORCE
0070FF46 |. E8 9980CFFF call <jmp.&user32.ExitWindowsEx> ; ExitWindowsEx 3處
=================================================================================================================
我們找到了退出進程的校驗了 看看一下代碼 估計有朋友看到 這個JNZ很高興了 說直接修改成JMP就可以跳過退出進程了
好吧 就依照常規(guī)的方法看看如何 運行下看看吧 看到?jīng)]有出錯了 我把OD載入的進程關一下 大家那樣可以看得清楚一點
看看 還是出錯了 為什么呢?有興趣的朋友可以自己嘗試用bp ExitProcess這個斷點去弄這個程序 今天我講的另一種方法
校驗已經(jīng)完全去除了 下面進入破解的部分
退出進程校驗代碼如下:
00404676 |. /75 17 |jnz short unpack.0040468F
00404678 |. |833D 28708500>|cmp dword ptr ds:[857028],0
0040467F |. |74 06 |je short unpack.00404687
00404681 |. |FF15 28708500 |call dword ptr ds:[857028]
00404687 |> |8B06 |mov eax,dword ptr ds:[esi]
00404689 |. |50 |push eax ; /ExitCode
0040468A |. |E8 F5CEFFFF |call <jmp.&kernel32.ExitProcess> ; ExitProcess
0040468F |> 8B03 |mov eax,dword ptr ds:[ebx]
========================================================================================================
破解部分:
這個軟件的注冊機制我也沒有具體去看 不過通過找字符串的方法可以搞定它 又是很慢的事來了 大家繼續(xù)快進吧 - -
要快進還不爽的話 就喝點茶在來 先看看一下我爆破過的效果吧 都可以使用了 功能也沒有限制的 查找完了 我們找有用信息
很是郁悶的吧 我機器太卡 所以沒有直接用搜索的 你們可以在自己用搜索很快就可以找到了 運行程序 在這里比較了
我們直接修改跳過吧 要走下去 那么是試用期的判斷了 改完一個 繼續(xù)往下看 還有一個判斷 大致看了下 這里應該也和上面
都是比較試用天數(shù)的 軟件的試用天數(shù)是30 轉(zhuǎn)16進制也就是1E 在這里的EAX=1意思就是試用一天了 OK了 繼續(xù)運行
這里就很簡單了 直接跳過就可以了 不用多解釋了 看看下是否破解成功了 為了能讓程序同時運行多個 我們在修改一個地方
00831D4F /75 2D jnz short Crack.00831D7E
00831D51 |6A 00 push 0
00831D53 |8B15 48628500 mov edx,dword ptr ds:[856248] ; Crack.00853D7C
00831D59 |8B12 mov edx,dword ptr ds:[edx]
00831D5B |8D45 EC lea eax,dword ptr ss:[ebp-14]
00831D5E |B9 741E8300 mov ecx,Crack.00831E74
00831D63 |E8 182DBDFF call Crack.00404A80
00831D68 |8B45 EC mov eax,dword ptr ss:[ebp-14]
00831D6B |66:8B0D 841E830>mov cx,word ptr ds:[831E84]
00831D72 |B2 02 mov dl,2
00831D74 |E8 E3EFC0FF call Crack.00440D5C
00831D79 |E9 BB000000 jmp Crack.00831E39
00831D7E 8B03 mov eax,dword ptr ds:[ebx]
代碼你們在自己去看了 這里走下去的話就提示剛才的對話框 我們直接跳過吧 好了 破解到此就結束了 下面總結一下
-----------------------------------------------------------------------------------------------------------
【經(jīng)驗總結】
一般的校驗可以通過下相應斷點去調(diào)試找出校驗處并去除校驗(這是比較通用的方法) 這種是通過下常用的去校驗斷點
然后去調(diào)試程序 找到校驗比較的地方 然后在修改就可以了 像這個程序關機校驗很簡單就可以找到 但是退出進程校驗
還是很麻煩了 大家可以自己去練習一下 所以我使用了另一種方法去除退出進程的校驗
若是有時候校驗處校驗的方式太麻煩了 這時候可以選擇程序開始的地方去調(diào)試找校驗(這個方法有時候也不太適用)
具體的還是要大家熟悉去校驗的一些方法 靈活的應用在一起 才可以更好的去破解程序 好了 不想多說廢話 教程結束
-----------------------------------------------------------------------------------------------------------
【版權聲明】:本文原創(chuàng)于頹廢の傻魚S Blog(http://hi.baidu.com/頹廢傻魚),轉(zhuǎn)載請注明作者并保持文章的完整,謝謝!
2008年12月11日11時2分57秒