【破文标题】crackme算法分析
【破文作者】逍遥风
【破解工具】OD PEID
【破解平台】WINXP
【破解声明】此CRACKME注册方式是逐位比较。就是计算出一位就比较一位。
----------------------------------------------------------------------
1)PEID检查:Microsoft Visual C++ 6.0
2)试运行发现没有错误提示,还是先用OD,发现了注册成功的提示。以此为突破口,很容易来到以下代码处:
00401580 . 6A FF PUSH -1
00401582 . 68 B81B4000 PUSH Rith_Cra.00401BB8 ; SE 处理程序安装
00401587 . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040158D . 50 PUSH EAX
0040158E . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401595 . 83EC 0C SUB ESP,0C
00401598 . 53 PUSH EBX
00401599 . 55 PUSH EBP
0040159A . 56 PUSH ESI
0040159B . 8BF1 MOV ESI,ECX
0040159D . 57 PUSH EDI
0040159E . 68 48304000 PUSH Rith_Cra.00403048 ; 31415926535897932384
004015A3 . 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]
004015A7 . 897424 1C MOV DWORD PTR SS:[ESP+1C],ESI
004015AB . E8 FA020000 CALL
004015B0 . 6A 01 PUSH 1
004015B2 . 8BCE MOV ECX,ESI
004015B4 . C74424 28 000>MOV DWORD PTR SS:[ESP+28],0
004015BC . E8 E3020000 CALL ; 取注册名位数
004015C1 . 8B7E 60 MOV EDI,DWORD PTR DS:[ESI+60]
004015C4 . 8B5F F8 MOV EBX,DWORD PTR DS:[EDI-8]
004015C7 . 83FB 05 CMP EBX,5 ; 注册名位数与5比较
004015CA . 7C 7E JL SHORT Rith_Cra.0040164A ; 小于5位就跳向失败
004015CC . 8B46 64 MOV EAX,DWORD PTR DS:[ESI+64]
004015CF . 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
004015D3 . 3958 F8 CMP DWORD PTR DS:[EAX-8],EBX ; 比较注册名位数与注册码位数
004015D6 . 75 72 JNZ SHORT Rith_Cra.0040164A ; 位数不相等就跳向失败
004015D8 . 83FB 14 CMP EBX,14 ; 注册名位数与20(十进制)比较
004015DB . 7F 6D JG SHORT Rith_Cra.0040164A ; 大于20位就跳向失败
004015DD . 33C9 XOR ECX,ECX
004015DF . 85DB TEST EBX,EBX
004015E1 . 7E 54 JLE SHORT Rith_Cra.00401637
004015E3 . 8B7424 10 MOV ESI,DWORD PTR SS:[ESP+10] ; 读表
004015E7 > 8A040F MOV AL,BYTE PTR DS:[EDI+ECX] ; 取注册名的每一位
004015EA . 0FBE2C31 MOVSX EBP,BYTE PTR DS:[ECX+ESI] ; 取表中相应位置的数字的HEX值,设为A
[注意]看雪招聘,专注安全领域的专业人才平台!