一个间单CrackMe的算法分析
本帖最后由 sdrf5678lk 于 2011-2-15 19:48 编辑00401025|> \8B75 08 MOV ESI,DWORD PTR SS: ;把用户名放esi中
00401028|.8D7D D8 LEA EDI,DWORD PTR SS: ;把有效地址传送给EDI
0040102B|.33C9 XOR ECX,ECX ;ECX清0为下方计算准备
0040102D|.8B45 0C MOV EAX,DWORD PTR SS: ;把用户名位数存到EAX中
00401030|.C60438 00 MOV BYTE PTR DS:,0
00401034|.EB 0A JMP SHORT CrackMe.00401040
00401036|>0FB60431 /MOVZX EAX,BYTE PTR DS: ;循环取出用户名中的一个字符
0040103A|.04 01 |ADD AL,1 ;把字符的转化16进制数加1
0040103C|.880439 |MOV BYTE PTR DS:,AL ;在把结果存到DS:内存中
0040103F|.41 |INC ECX ;ECX 加1
00401040|>3B4D 0C CMP ECX,DWORD PTR SS: ;看是不是已经取完了
00401043|.^ 72 F1 \JB SHORT CrackMe.00401036
00401045|.FF75 10 PUSH DWORD PTR SS: ; /假注册码
00401048|.8D45 D8 LEA EAX,DWORD PTR SS: ; |真注册码
0040104B|.50 PUSH EAX ; |String1
0040104C|.E8 47030000 CALL <JMP.&kernel32.lstrcmpA> ; \比较
00401051|.0BC0 OR EAX,EAX
00401053|.75 15 JNZ SHORT CrackMe.0040106A
00401055|.6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00401057|.68 30304000 PUSH CrackMe.00403030 ; |Title = "提示"
0040105C|.68 46304000 PUSH CrackMe.00403046 ; |Text = "恭蟎xB2你?xAC\xD7\xA2\xB2岢晒\xA6?xA1"
00401061|.6A 00 PUSH 0 ; |hOwner = NULL
00401063|.E8 EE020000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
00401068|.EB 13 JMP SHORT CrackMe.0040107D
0040106A|>6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040106C|.68 30304000 PUSH CrackMe.00403030 ; |Title = "提示"
00401071|.68 59304000 PUSH CrackMe.00403059 ; |Text = "\xD7\xA2\xB2崾?xB0埽\xAC请继续臷xAC羂xA6?xA1"
00401076|.6A 00 PUSH 0 ; |hOwner = NULL
00401078|.E8 D9020000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
0040107D|>33C0 XOR EAX,EAX
0040107F|.5F POP EDI
00401080|.C9 LEAVE
00401081\.C2 1400 RETN 14
\****************************************************************************************************\
唉
我已经把CrackMe放到了我看雪帐号上了。
http://bbs.pediy.com/showthread.php?t=129350
要想研究的去看上去雪下吧
页:
[1]