[破解实例][OllyDbg] CrackMe003-Afkayas.2
本例可执行文件(含破解版)下载:CrackMe003-Afkayas.2
一、查壳
用PEiD查壳结果为Microsoft Visual Basic 5.0 / 6.0,无壳。
二、破解
使用OllyDbg工具打开Afkayas.2.exe,进入调试运行,断在程序入口处。
错误提示框为:
同以前的方法,找到出现字符串”Try Again”对应的汇编代码位置:
验证过程显然在这段代码之前,往前分析可得,
0x00408677之前的代码验证了输入的Name/Serial是否正确,根据验证结果进行跳转。因此只需将0x00408677处的条件跳转NOP掉,就能完成破解(从后面的代码分析可知还需NOP掉0x004085D2处的函数调用,因为该处检验Serial是否为数字)。
也可直接分析得出正确的Name/Serial关系,将0x004081CD - 0x00408677的代码单独拎出来,以输入Name=”0123”为例,分析如下:
004081CD .. CALL DWORD PTR DS:[EAX+A0] ; get the Name we input
...
004081E9 .. MOV EDX,DWORD PTR SS:[EBP-B0]
004081EF .. MOV EAX,DWORD PTR SS:[EBP-1C] ; save Name to EAX
004081F2 .. PUSH EAX ; push Name
004081F3 .. MOV EBX,DWORD PTR DS:[EDX]
004081F5 .. CALL DWORD PTR DS:[<&MSVBVM50.__vbaLenBstr>] ; get length of Name
004081FB .. MOV EDI,EAX ; EDI = length of Name
004081FD .. MOV ECX,DWORD PTR SS:[EBP-18] ; save Name to ECX
00408200 .. IMUL EDI,EDI,15B38 ; EDI *= 0x15B38 = 0x56CE0
00408206 .. PUSH ECX ; push Name
00408207 .. JO AfKayAs_.004087C4 ; jump if</