没留意过新用户24小时不能发帖....那就我发吧。也不知道发过了没。文件放到附件里了
【文章标题】: 小练CrackMe
【文章作者】: 雪舞风华
【作者邮箱】: virgoczg@yeah.net
【作者主页】: http://bbs.cpcw.com/blog/index.php/index.php?action/space/uid/308432
【软件名称】: ArturDents`s CrackMe1
【软件大小】: 3.50 KB
【加壳方式】: 无
【保护方式】: Serial
【编写语言】: ASM
【使用工具】: OllyDbg
【操作平台】: WinXP SP2
【软件介绍】: ArturDents`s CrackMe1
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
又是一个没有说明的CrackMe啊?呵呵~不过没什么关系的啦,一样可以破解的。但是刚开始我也是难为了一下子。不过后来发现真的没有那么的难啊。
OD载入AD_CM#1.exe,停在入口点处:
00401000 > 6A 00 push 0
00401002 E8 45010000 call <jmp.&KERNEL32.GetModuleHandleA>
00401007 A3 54304000 mov dword ptr ds:[403054],eax
0040100C 6A 00 push 0
0040100E 68 2B104000 push AD_CM#1.0040102B
00401013 6A 00 push 0
00401015 68 00304000 push AD_CM#1.00403000 ; ASCII "ADDialog"
0040101A FF35 54304000 push dword ptr ds:[403054]
00401020 E8 F7000000 call <jmp.&USER32.DialogBoxParamA>
00401025 50 push eax
00401026 E8 1B010000 call <jmp.&KERNEL32.ExitProcess>
貌似很短的样子,关键集中在:
00401020 E8 F7000000 call <jmp.&USER32.DialogBoxParamA>
F4到这里,然后F7跟入:
0040111C - FF25 20204000 jmp dword ptr ds:[<&USER32.DialogBoxParam>; USER32.DialogBoxParamA
00401122 - FF25 18204000 jmp dword ptr ds:[<&USER32.EndDialog>] ; USER32.EndDialog
00401128 - FF25 10204000 jmp dword ptr ds:[<&USER32.GetDlgItem>] ; USER32.GetDlgItem
0040112E - FF25 0C204000 jmp dword ptr ds:[<&USER32.GetDlgItemText>; USER32.GetDlgItemTextA
00401134 - FF25 1C204000 jmp dword ptr ds:[<&USER32.MessageBoxA>] ; USER32.MessageBoxA
0040113A - FF25 24204000 jmp dword ptr ds:[<&USER32.SendMessageA>] ; USER32.SendMessageA
00401140 - FF25 14204000 jmp dword ptr ds:[<&USER32.SetFocus>] ; USER32.SetFocus
00401146 - FF25 04204000 jmp dword ptr ds:[<&KERNEL32.ExitProcess>>; kernel32.ExitProcess
0040114C - FF25 00204000 jmp dword ptr ds:[<&KERNEL32.GetModuleHan>; kernel32.GetModuleHandleA
一大堆的API调用啊?有嫌疑的只有一个:
0040112E - FF25 0C204000 jmp dword ptr ds:[<&USER32.GetDlgItemText>; USER32.GetDlgItemTextA
F2这里下断,F9运行,输入注册码后,F9,中断在0040112E,F7跟入:
77D6AC1E > 8BFF mov edi,edi
77D6AC20 55 push ebp
77D6AC21 8BEC mov ebp,esp
77D6AC23 FF75 0C push dword ptr ss:[ebp+C]
77D6AC26 FF75 08 push dword ptr ss:[ebp+8]
77D6AC29 E8 E89BFBFF call USER32.GetDlgItem
下面就比较简单了,Alt+F9,执行到返回:
004010BF B8 5C304000 mov eax,AD_CM#1.0040305C ; ASCII "dsadsa"
004010C4 BB 1E304000 mov ebx,AD_CM#1.0040301E ; ASCII "qWeRtZ"
004010C9 B9 07000000 mov ecx,7
004010CE 8A13 mov dl,byte ptr ds:[ebx]
004010D0 3810 cmp byte ptr ds:[eax],dl
004010D2 75 18 jnz short AD_CM#1.004010EC
004010D4 40 inc eax
004010D5 43 inc ebx
004010D6 ^ E2 F6 loopd short AD_CM#1.004010CE
004010D8 6A 40 push 40
004010DA 68 09304000 push AD_CM#1.00403009 ; ASCII "ArturDents CrackMe#1"
004010DF 68 36304000 push AD_CM#1.00403036 ; ASCII "Yeah, you did it!"
004010E4 FF75 08 push dword ptr ss:[ebp+8]
004010E7 E8 48000000 call <jmp.&USER32.MessageBoxA>
答案一目了然了吧?尝试之后成功。呵呵~真的是十分的简单啊。大家可以练练手的。这也是我在看雪的第一帖了吧?一直都没注册而在潜水的。第一次发帖,失误难免,大家多多谅解
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
2006年07月31日 14:28:22
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!