crackme練習上雙!!!
其實Andrénalin這一系列還是比較有代表性的,這次做的雖然標明是difficult難度但其實做下來感覺還好,下面開始分析咯
0X00 首先還是打開程序進行簡單查看,並初步分析。
打開界面是這樣的,隨便輸入一些東西彈窗。
那麼這是一個單一註冊碼的驗證程序,想想大概可能和第一個情況很像,直接驗證key是否爲驗證碼。然後判斷是否驗證成功
但是,defficult的難度大概提醒了我們這種情況可能性比較小。那麼還是開始分析吧
0X01 按照我們之前的思路大概還是拖到OD當中進行分析,然後找到關鍵位置繞過爆破。
但是前兩天圍觀大佬發現一個神奇的程序VB Decompiler
拖到VB Decompiler中進行反編譯
就可以看到反編譯之後的VB代碼。那麼我們逐行開始分析,這是我做的一些批註
Private Sub Command1_Click() '401E20
loc_00401EC2: var_58 = Text1.Text ;var_58=name
loc_00401EFA: var_44 = var_58 ;var_44=name
loc_00401F56: For var_24 = 1 To Len(var_44) Step 1 ;var_24=1->len(name)
loc_00401F68:
loc_00401F6A: If var_104 = 0 Then GoTo loc_0040202B
loc_00401FA3: var_58 = CStr(Mid(var_44, CLng(var_24), 1)) ;取出name中每一個字符
loc_00401FB0: Asc(var_58) = Asc(var_58) + 000Ah ;將字符的ASCII碼+0X0A
loc_00401FC4: var_84 = Chr$(Asc(var_58))
loc_00401FED: var_34 = var_34 & Chr$(Asc(var_58)) ;存到新的字符串當中
loc_00402020: Next var_24
loc_00402026: GoTo loc_00401F68
loc_0040202B: 'Referenced from: 00401F6A
loc_00402053: If (var_34 = "kXy^rO|*yXo*m\kMuOn*+") = 0 Then GoTo loc_00402119 ;比較和指定字符串是否相同
loc_00402059: Beep
loc_00402090: var_B4 = "RiCHTiG !" ;回答正確!!
loc_004020AF: var_A4 = " RiCHTiG !!!! .... weiter mit dem N?chsten !!!"
loc_004020FC: var_54 = MsgBox(" RiCHTiG !!!! .... weiter mit dem N?chsten !!!", 48, "RiCHTiG !", 10, 10)
loc_00402114: GoTo loc_004021CE
loc_00402119: 'Referenced from: 00402053
loc_0040214A: var_B4 = "LEiDER Falsch ! " ;回答錯誤!!
loc_00402169: var_A4 = "Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! [email protected]"
loc_004021B6: var_54 = MsgBox("Leider Falsch! Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir ! [email protected]", 16, "LEiDER Falsch ! ", 10, 10)
loc_004021CE: 'Referenced from: 00402114
loc_004021E1: GoTo loc_00402217
loc_00402216: Exit Sub
loc_00402217: 'Referenced from: 004021E1
loc_00402248: GoTo loc_00esi
End Sub
嗯,這樣分析整個算法邏輯就很簡單了,根據以上寫出註冊機。
#coding = utf-8
str='kXy^rO|*yXo*m\kMuOn*+'
key=''
for ch in str:
key+=chr(ord(ch)-0XA)
print key
算出key爲:aNoThEr oNe cRaCkEd !
丟到程序裏面驗證一下。
這樣就分析完成了。