发新话题
打印

[转载]献给破解新手的一种破解方法

[转载]献给破解新手的一种破解方法

信息来源:霏凡论坛(bbs.crsky.com)(停止注册)
文章作者:恋爱季节

大家好!今天我给大家上传一个crackme,这个程序的破解方法,献给初次破解的新手。高手勿笑!
  
【破解作者】 恋爱季节
【作者邮箱】 hstooo77@yahoo.com.cn
【作者主页】 QQ:318536143
【使用工具】 flyDBG.exe
【破解平台】 XP
【软件名称】 AD_CM#2.exe
【软件大小】 4.00KB
【破解时间】 2005年10月27日
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与版主分享:)
--------------------------------------------------------------------------------

【破解内容】

首先运行flyDBG,然后在flyDBG中打开AD_CM#2.exe,分析代码,右击鼠标点击搜索字符参考。
在弹出的对话框中双击ASCII "Yeah, you did it!",返回到CPU窗口

00401134  |> |6A 14      push 14              ; /Count = 14 (20.)
00401136  |. |68 80324000    push AD_CM#2.00403280        ; |Buffer = AD_CM#2.00403280
0040113B  |. |68 B90B0000    push 0BB9             ; |ControlID = BB9 (3001.)
00401140  |. |FF75 08      push dword ptr ss:[ebp+8]      ; |hWnd
00401143  |. |E8 42000000    call <jmp.&USER32.GetDlgItemTextA>  ; \GetDlgItemTextA
00401148  |. |B8 80304000    mov eax, AD_CM#2.00403080
0040114D  |. |BB 80324000    mov ebx, AD_CM#2.00403280
00401152  |. |8BCE        mov ecx, esi
00401154  |> |8A10        /mov dl, byte ptr ds:[eax]
00401156  |. |2AD1        |sub dl, cl
00401158  |. |3813        |cmp byte ptr ds:[ebx], dl
0040115A  |. |75 18      |jnz short AD_CM#2.00401174
0040115C  |. |40        |inc eax
0040115D  |. |43        |inc ebx
0040115E  |.^|E2 F4      \loopd short AD_CM#2.00401154
00401160  |. |6A 40      push 40              ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401162  |. |68 12304000    push AD_CM#2.00403012        ; |Title = "ArturDents CrackMe#2"
00401167  |. |68 27304000    push AD_CM#2.00403027        ; |Text = "Yeah, you did it!"

向上找call,在00401136处下断,按F9运行程序,出现了注册窗口
输入name:恋爱季节
serial:79797979
点击Checkt it,baby!中断了下来,双击中断这一行,撤销中断点,一路按F8来到00401148,看到注释栏里的79797979
00401148  |. B8 80304000    mov eax, AD_CM#2.00403080
0040114D  |. BB 80324000    mov ebx, AD_CM#2.00403280     ; ASCII "79797979"

在按F8来到00401158
00401158  |. 3813        |cmp byte ptr ds:[ebx], dl
此时在下面可以看到ds:[ebx]=37(&#39;7&#39;) dl=B9(&#39;?) 表示“79797979”中的第一个字符7的十六进制与B9比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
00401158  |. 3813        |cmp byte ptr ds:[ebx], dl
在下面可以看到ds:[ebx]=39(&#39;9&#39;) dl=AE(&#39;?) 表示“79797979”中的第二个字符9的十六进制与与AE比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=37(&#39;7&#39;) dl=AA(&#39;?) 表示“79797979”中的第三个字符7的十六进制与与AA比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=39(&#39;9&#39;) dl=A9(&#39;?) 表示“79797979”中的第四个字符9的十六进制与与A9比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=37(&#39;7&#39;) dl=B8 表示“79797979”中的第五个字符7的十六进制与与B8比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=39(&#39;9&#39;) dl=BB 表示“79797979”中的第六个字符9的十六进制与与BB比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=37(&#39;7&#39;) dl=BB 表示“79797979”中的第七个字符7的十六进制与与BB比较
若相等,就进行下一轮比较,不等就失败。
按F8,下面显示跳转已经实现,这时双击寄存器窗口中的z 0,使之变为z 1,意思是不让跳转实现,这时再按F8

又循环到00401158
在下面可以看到ds:[ebx]=39(&#39;9&#39;) dl=D9(&#39;?) 表示“79797979”中的第八个字符9的十六进制与与D9比较

到此对应恋爱季节的真码就是B9 AE AA A9 B8 BB BB D9所对应的ASCII值,对应的值是“巩富毁”
用户名:恋爱季节
sn  :巩富毁

到此破解就告一段落了
有兴趣的话,希望大侠能够写一下内存注册机
指点小弟一二,在此谢过!
--------------------------------------------------------------------------------

【破解总结】

这个软件是一个字符一个字符的进行比对,适用于用户名是字母型、数字型或字母数字混合型,
对于汉字型的用户名所对应的serial也是汉字型,此汉字型不好寻找,
故希望大家还是用字母型、数字型或字母数字混合型进行破解验证。
--------------------------------------------------------------------------------

【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

TOP

发新话题