160个Crackme027之First CD-Check
文章目錄
- 查殼
- 分析程序
- 前置知識
- 什么是光盤檢測
- 檢測原理
- 拆解光盤保護
- CD-Check分析
- 作者低級的錯誤
- 暴力破解CD-Check
- 校驗結果
查殼
程序是使用VC6寫的 沒有殼
分析程序
這個程序跟之前的Crackme不一樣,采取的保護方式是光盤檢測,如果檢測通過,點擊Check for CD,會提示檢測通過,但是現在是失敗的
我也是第一次分析這種程序,所以需要一點相關的前置知識
前置知識
以下內容出自《加密與解密4》
什么是光盤檢測
一些采用光盤形式發行的應用軟件和游戲,在使用時需要檢查光盤是否插在光驅中,如果沒有則拒絕運行。這是為了防止用戶將軟件或游戲的一份正版拷貝安裝在多臺機器上且同時使用,其思路與DOS時代的鑰匙盤保護類似,雖然能在一定程度上防止非法拷貝,但也給正版用戶帶來了一些麻煩——一旦光盤被劃傷,用戶就無法使用軟件了
檢測原理
最簡單也最常見的光盤檢測就是程序在啟動時判斷光驅中的光盤里是否存在特定的文件。如果不存在,則認為用戶沒有使用正版光盤,拒絕運行。在程序運行過程中,一般不再檢查光盤是否在光驅中。在Windows下的具體實現一般是:先用GetLogicalDriveStrings0或GetLogicalDrives0函數得到系統中安裝的所有驅動器的列表,然后用GetDriveType0函數檢查每個驅動器,如果是光驅,則用CreateFile0或FindFirstFile0函數檢查特定的文件是否存在,甚至可能進一步檢查文件的屬性、大小、內容等。
上述保護的一種增強類型就是把程序運行時需要的關鍵數據放在光盤中。這樣,即使解密者能夠強行跳過程序啟動時的檢查,但由于沒有使用正版光盤,也就沒有程序運行時所需要的關鍵數據,程序自然會崩潰,從而在一定程度上起到了防破解的作用
拆解光盤保護
第一種光盤檢測方式是比較容易被破解的。解密者只要利用上述函數設置斷點,找到程序啟動時檢查光驅的地方,然后修改判斷指令,就可以跳過光盤檢測
第二種增強型光盤保護還是有辦法的,可以簡單地利用刻錄和復制工具將光盤復制多份,也可以采用虛擬光驅程序來模擬正版光盤。常用的虛擬光驅程序有Virtual CD、Virtual Drive、DaemonTools等。值得一提的是Daemon Tools,它不僅是免費的,而且能夠模擬一些加密光盤。這些光盤加密工具一般都會在光軌上做文章,例如做暗記等。有的加密光盤可用工作在原始模式(Raw mode)的光盤拷貝程序原樣復制,例如Padus公司的DiscJuggler和Elaborate Bytes公司的CloneCD等。對光盤加密感興趣的讀者可以查閱ISO9660標準協議
CD-Check分析
首先程序初始化了C-P的字符串
然后檢測這些盤符的類型是否為本地硬盤,如果是本地硬盤就繼續檢測下一個磁盤
檢測完磁盤類型之后會讀取根目錄下是否存在CD_CHECK.DAT文件,如果文件存在則提示正確
所以,正確的不修改程序的Crack方式應該是插一個U盤,然后再根目錄下新建一個文件名為CD_CHECK.DAT的文件。
作者低級的錯誤
但是!當我在U盤下新建了文件之后居然發現還是通過不了檢測,原因居然是這個CreateFileA的參數寫錯了!!!
所以就算根目錄下存在這樣一個文件也通過不了檢測,一開始我還以為自己看錯了,于是又驗證了一番
好吧 那就不能怪我了,是你自己寫錯的,只能暴力破解了
暴力破解CD-Check
修改如下兩處指令,保存文件
修改后如下
校驗結果
修改完成之后,點擊Check,破解成功
需要相關文件的可以到我的Github下載:https://github.com/TonyChen56/160-Crackme
總結
以上是生活随笔為你收集整理的160个Crackme027之First CD-Check的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 160个Crackme026之六段式注册
- 下一篇: 160个Crackme028之对抗花指令