1. 程式人生 > 其它 >萌新玩的第二個CM學習筆記

萌新玩的第二個CM學習筆記

萌新的第二個CM學習筆記

CrackMe的地址

第一個反除錯 ,在403150 ret (通過異常找到了反除錯地址)

CRC校驗 (通過給407C00 按鈕事件下硬體訪問斷點)

改成這樣 , 或直接在404600ret

407C00 按鈕事件

(

往下跟 , 在407C2B看到了花指令 ,和反除錯的標誌位

發現了獲取編輯框內容(

密碼長度需要12位,且不能為空 , 這個設計有點奇怪,明明密碼只能>=12,還要判斷是否為空

407CF7可能是關鍵跳

原來是暗裝 ,儲存補丁,資料,重新載入程式

不讓他跳 , 反而彈出了Faild,在MessageBoxA下斷點

發現斷不下來 , 反而從ntclose走了出來 , 這怎麼能行 , 這肯定是自己構造的彈窗函式,封裝的程度大概率沒有系統的API高 , 看堆疊 , 看看有沒有有用的資訊

看樣子是找到了 , 但是下面有個407A50 , 407A33也是Faild , 都下上斷點

程式斷下來了 , 是下面的那個407A50

Ctrl+R , 找到了兩處呼叫 , 這是第一個 , 很簡單的VM_CALL(自我理解) , 讓我們打上標籤

這下子就舒服了 , 上面的404495是反除錯 , 不管他, 反正反除錯我們都幹掉了 , 時間有限 , 我們修改407A50 ,使其跳轉到407A20

5DB2C0需要置為C , 但是我也不知道他能幹啥 , 不管他了 , 直接NOP

搞定


接下來是在破解成功後,進行的vJcc爆破

這個樓主讓我用vJcc爆破, 這我也不會啊 , 讓我們轉到4044AF下上斷點 發現斷不下來 , 就當他是指令膨脹吧(沒有影響函式執行過程) , 讓我們注意 4044A9 . mov edx, dword ptr ds:[0x005D2A30] , 我們給0x005D2A30下上硬體訪問斷點 三個取地址值的指令都行的

[0X5D2A30]

[0X5DB2C4]

[0X5DB2C8]

下上硬體訪問斷點後 , 程式斷下

Ctrl+9到Ret處 , EAX為407A50 ,是錯誤CALL的地址 ,接下來對這段函式進行逆向分析

我們修改EAX的值後 , 使他跳轉到成功CALL測試

程式沒有走到失敗call , 直接走到成功CALL , 看來我們改對了

加上標籤 , 直接在vJcc段首 Mov EAX , 成功CALL . Ret,似乎也算vJcc爆破

肉眼識別兩個立即數, 注意eax , edx , 這段程式碼就是一個簡單的if-else , 改00407A85還是00407A91 都是可行的

407A91 原始碼是and edx, 0X360->and edx, 0xFFFFFC9F

0X360取反就是0xFFFFFC9F , if(a) -> if(!a) 這個時候執行 , 就到達了成功CALL