这是一个最简单的crack练习,简单明文.破解方法:
1、运行,试试效果,随便弄几个字符进去会出现错误提示
"One of the Details you entered was wrong"
好,就这是突破口。
2、OD打开crackme1 查找-->所有参考字符串 找到上面的字符串,选中按 f2 设置中断点
当然,这里也可以按ctrl+n,查找是否有用api调用,如果也可以设置断中(这个crack没有GetDlgItemText等api)。
3、试运行,停在断点上。在这里基本可以定位关键破解代码 (特别注意:比较cmp指令、跳转指令)
4、对感兴趣的代码下断,重新运行(初学总是需要反复练习)
004014CD . 57 push edi
004014CE . 8DBE A0000000 lea edi, dword ptr [esi+A0]
004014D4 . 8BCF mov ecx, edi
004014D6 . E8 6F030000 call <jmp.&MFC42.#3876> ; 这个call功能是完成字符串长度计算
004014DB . 8B1D FC214000 mov ebx, dword ptr [<&USER32.PostQui>; USER32.PostQuitMessage
004014E1 . 83F8 05 cmp eax, 5 ; 要于用户名大于5个字符
004014E4 . 7E 50 jle short 00401536
004014E6 . 8D6E 60 lea ebp, dword ptr [esi+60]
004014E9 . 8BCD mov ecx, ebp
004014EB . E8 5A030000 call <jmp.&MFC42.#3876>
004014F0 . 83F8 05 cmp eax, 5 ; 要求序列号长度大于5
004014F3 . 7E 41 jle short 00401536
004014F5 . 8D86 E0000000 lea eax, dword ptr [esi+E0]
004014FB . 8BCF mov ecx, edi
004014FD . 50 push eax
004014FE . E8 41030000 call <jmp.&MFC42.#3874> ; 这个call是读取字符串,eax返回长度,ecx返回字符串,edx返回字符后五位
00401503 . 8DBE E4000000 lea edi, dword ptr [esi+E4]
00401509 . 8BCD mov ecx, ebp
0040150B . 57 push edi
0040150C . E8 33030000 call <jmp.&MFC42.#3874>
00401511 . 8B07 mov eax, dword ptr [edi] ; 序列号移动到eax,用于一个一个比较
00401513 . 8038 36 cmp byte ptr [eax], 36 ; 6
00401516 . 75 1E jnz short 00401536
00401518 . 8078 01 32 cmp byte ptr [eax+1], 32 ; 2
0040151C . 75 18 jnz short 00401536
0040151E . 8078 02 38 cmp byte ptr [eax+2], 38 ; 8
00401522 . 75 12 jnz short 00401536
00401524 . 8078 03 37 cmp byte ptr [eax+3], 37 ; 7
00401528 . 75 0C jnz short 00401536
0040152A . 8078 04 2D cmp byte ptr [eax+4], 2D ; -
0040152E . 75 06 jnz short 00401536
00401530 . 8078 05 41 cmp byte ptr [eax+5], 41 ; A
00401534 . 74 17 je short 0040154D
00401536 > 6A 00 push 0
00401538 . 68 64304000 push 00403064 ; ASCII "ERROR"
0040153D . 68 38304000 push 00403038 ; ASCII "One of the Details you entered was wrong"
00401542 . 8BCE mov ecx, esi
00401544 . E8 F5020000 call <jmp.&MFC42.#4224>
00401549 . 6A 00 push 0
0040154B . FFD3 call ebx
0040154D > 8D8E E0000000 lea ecx, dword ptr [esi+E0]
00401553 . 8D5424 14 lea edx, dword ptr [esp+14]
00401557 . 51 push ecx
00401558 . 68 2C304000 push 0040302C ; ASCII "Well done,"
0040155D . 52 push edx
这个破解要求是:
1、name 和serial长度大于5个
2、serial前6个字符是 6287-A,后面没有比较,即无所谓
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法