首页
社区
课程
招聘
一款非常简单的CRACKME的暴力破解
发表于: 2011-5-10 23:57 150601

一款非常简单的CRACKME的暴力破解

2011-5-10 23:57
150601

前几天我在论坛的求助版块发了一条求助帖,问题也不是百度就能搜出来的,直到现在也没有人给予解答,郁闷啊,只怪自己学艺不精了,看来还得靠自己,所以今天决定,借助论坛开始从一些简单CM着手,不断地练习和提高,但愿也能给正在学习的新人们一点经验,我会尽量地讲的详细一点,哪怕废话多一点,高手们就不要看了,因为我深知新手们遇到问题时无助的那种无奈与烦躁!我会努力地去学习,直到自己能够解决自己提出的问题,我也愿意和新手朋友一起探讨一起进步!好了,这个题记就到这里,开始我们的第一个CM实践吧!
   今天这个CM非常简单,可以说不到半分钟就能搞定,所以呢很适合新手练习,在我们开始之前我认为我们都应该知道我们需要那些工具,并且已经取得了这些工具,而且已经掌握了这些工具的基本用法!
   首先,PEID查壳,证明此款CM未加壳,PEID给出的结果是“Borland Delphi 3.0”,运气好,免得脱壳了!第二步,运行这个小程序进一步搜集信息!打开程序,按“确定”,点击“serial”按钮来到注册窗口,删除“Enter the serial here !!!!!”之后输入你的注册码,按下“check it baby!"按钮,程序显示出一个标题为”failed!"的失败窗口,记下这些信息,到此我们的信息搜集工作就完了。接下来直接OD载入目标程序,也就我们的CM,载入后程序停在以下代码处:

0042FD68 > $  55            push    ebp
0042FD69   .  8BEC          mov     ebp, esp
0042FD6B   .  83C4 F4       add     esp, -0C
0042FD6E   .  B8 88FC4200   mov     eax, 0042FC88
0042FD73   .  E8 7453FDFF   call    004050EC
0042FD78   .  A1 480A4300   mov     eax, dword ptr [430A48]
0042FD7D   .  8B00          mov     eax, dword ptr [eax]
0042FD7F   .  E8 F0A1FFFF   call    00429F74
0042FD84   .  8B0D 7C094300 mov     ecx, dword ptr [43097C]          ;  Acid_bur.00431744
0042FD8A   .  A1 480A4300   mov     eax, dword ptr [430A48]
0042FD8F   .  8B00          mov     eax, dword ptr [eax]
0042FD91   .  8B15 D0F54200 mov     edx, dword ptr [42F5D0]          ;  Acid_bur.0042F610
0042FD97   .  E8 F0A1FFFF   call    00429F8C
0042FD9C   .  8B0D E40A4300 mov     ecx, dword ptr [430AE4]          ;  Acid_bur.0043174C
0042FDA2   .  A1 480A4300   mov     eax, dword ptr [430A48]
0042FDA7   .  8B00          mov     eax, dword ptr [eax]
0042FDA9   .  8B15 38F84200 mov     edx, dword ptr [42F838]          ;  Acid_bur.0042F878
0042FDAF   .  E8 D8A1FFFF   call    00429F8C

由于这个CM非常简单,那我们就运用字符串参考来搞定他吧!所以接下来直接右键单击超级字符串参考——FIND ASCII,来到字符串参考窗口,找到下面这一行:0042F4F3  mov   ecx,  failed!,找到之后双击来到OD的CPU窗口,我们会看到如下的代码:

0042F4D7  |.  6A 00         push    0
0042F4D9  |.  B9 64F54200   mov     ecx, 0042F564                    ;  congratz!
0042F4DE  |.  BA 70F54200   mov     edx, 0042F570                    ;  god job dude !! =)
0042F4E3  |.  A1 480A4300   mov     eax, dword ptr [430A48]
0042F4E8  |.  8B00          mov     eax, dword ptr [eax]
0042F4EA  |.  E8 81ACFFFF   call    0042A170
0042F4EF  |.  EB 18         jmp     short 0042F509
0042F4F1  |>  6A 00         push    0
0042F4F3  |.  B9 84F54200   mov     ecx, 0042F584                    ;  failed!
0042F4F8  |.  BA 8CF54200   mov     edx, 0042F58C                    ;  try again!!
0042F4FD  |.  A1 480A4300   mov     eax, dword ptr [430A48]
0042F502  |.  8B00          mov     eax, dword ptr [eax]
0042F504  |.  E8 67ACFFFF   call    0042A170
0042F509  |>  33C0          xor     eax, eax
0042F50B  |.  5A            pop     edx
0042F50C  |.  59            pop     ecx
0042F50D  |.  59            pop     ecx
0042F50E  |.  64:8910       mov     dword ptr fs:[eax], edx

在地址为0042F4F3,也就是注释为“failed!"这一行F2下断,之后F9运行,然后CM窗口去输入一个注册码之后单击”check it baby!",程序被OD拦截了下来,我们会发现这时候地址0042F4F3那一行已经用红色显示了,说明程序就是断在这里,下来向让看,注意与“failed!"对应的“congratz!”,往上2行有一个JNZ的跳转语句,我们左键单击这一行看看他跳向哪里,单击之后我们发现他原来是跳到了错误窗口,就是我们之前看到的那个标题栏为“failed!"的那个窗口,因为我们输入的注册码肯定是不对的,所以自然显示的就是错误窗口了,知道了这个就好办了,现在我们来修改跳转指令让他跳到正确的窗口就可以了,在JNZ跳转指令这一行单击右键选择汇编,然后将JNZ修改为JE,修改完之后,右键单击选择复制到可执行文件,选择全部复制,然后出现一个新的窗口,同样单击右键选择保存文件,之后你可以为这个文件重新命名,选择好保存路径,直接保存就好了!现在去看看你保存的修改过的CM,随便输入个注册码试试,甚至什么也不输,程序也是会显示正确的信息,这说明我们的暴破成功了,很容易吧,好了,今天就到这里!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 8
支持
分享
最新回复 (18)
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
這真的很適合新手!
但是我有個疑問?輸入name跟serial的那個要怎麼去破?
2011-5-29 01:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
受教了  4-5年前因为从事行业的原因就知道反汇编了  但是因为个人知识能力的问题 几次都没有找到入口点  直到现在  才参考高手们的教程动手自己做了下感觉很好  以前只能怪没有人带  看雪是个好地方  希望如果有深圳的朋友  一起交流下
2011-5-29 02:14
0
雪    币: 54
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵,好的入门贴,我好像也试过这个
2011-5-29 22:40
0
雪    币: 54
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
咦,同在深圳
2011-5-29 22:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
爱好者们我的QQ是71776998  希望和前辈们学习 和同成长中的新手交流  志同道合的加我Q吧
2011-5-30 00:38
0
雪    币: 114
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
找字符串下断点我觉得最方便
找到0042F4D9处是“Congraz!”在它前面的一个CALL处下断点,即0042F4D0处
0042F4D0  |.  E8 2745FDFF   CALL Acid_bur.004039FC
然后F9运行,输入一个随便的序列号,点Check会断在那个CALL处,查看寄存器,就看到EAX放着你输入的序列号,EDX就放着正确的序列号“Hello Dude!”,那个CALL就进行比较,往前翻翻看看就知道Hello Dude就从哪冒出来的。

同样的方法,在0042FAFE处的CALL下断点,F9运行输入名字和序列号,前面有个CALL会将你的名字转换成四位数字ASCII码,然后前面加CW,后面加CRACKED,中间用杠连起来,就是正确的序列号了,比如输入cracktv后,序列号就是CW-8118-CRACKED。断下后会在寄存器那里看到你输入的序列号和组合好的序列号。
0042FAFE  |.  E8 F93EFDFF   CALL Acid_bur.004039FC
2011-5-31 12:04
0
雪    币: 45
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
可以写一个教程,免得我们这些人去买书......
2011-6-3 15:33
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
xuexi xia
2011-6-23 17:29
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
kujia
CW-8774-CRACKED
2011-6-26 20:46
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
多留意点寄存器
2011-6-26 20:49
0
雪    币: 773
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
方法类似。用OD打开该程序,在超级字串参考中,查找Try Again!字串,地址显示为0042fa5e,左键双击该地址,OD中自动跳到地址为0042fa5e处,往下查看,
0042FB03     75 1A          JNZ SHORT Acid_bur.0042FB1F
0042FB05  |. 6A 00          PUSH 0
0042FB07  |. B9 CCFB4200    MOV ECX,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |. BA D8FB4200    MOV EDX,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |. A1 480A4300    MOV EAX,DWORD PTR DS:[430A48]
0042FB16  |. 8B00           MOV EAX,DWORD PTR DS:[EAX]
0042FB18  |. E8 53A6FFFF    CALL Acid_bur.0042A170
0042FB1D  |. EB 18          JMP SHORT Acid_bur.0042FB37
0042FB1F  |> 6A 00          PUSH 0
0042FB21  |. B9 74FB4200    MOV ECX,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |. BA 80FB4200    MOV EDX,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |. A1 480A4300    MOV EAX,DWORD PTR DS:[430A48]

将“0042FB03     75 1A          JNZ SHORT Acid_bur.0042FB1F” 处的JNZ改为JE,后面的跳转地址0042FB1F改为0042FB05, 然后按楼主的方法保存该文件,即可。
2011-6-28 17:42
0
雪    币: 175
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
《看雪十周年精华   就是 了
2011-7-1 23:19
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
14
爆破,就当了解基本操作吧
2011-7-2 13:19
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
0042F784   .  C3            retn                                     ;  打开时,跳出msgbox真烦。rern掉
0042F785      90            nop
0042F786   .  B9 A0F74200   mov ecx,Acid_bur.0042F7A0                ;  hello you have to kill me!
0042F78B   .  BA BCF74200   mov edx,Acid_bur.0042F7BC                ;  Welcome to this Newbies Crackme made by ACiD BuRN [CracKerWoRlD]
0042F790   .  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042F795   .  8B00          mov eax,dword ptr ds:[eax]

0042F4D5  |. /74 1A         je short Acid_bur.0042F4F1               ;  jnz改成je
0042F4D7  |. |6A 00         push 0x0
0042F4D9  |. |B9 64F54200   mov ecx,Acid_bur.0042F564                ;  Congratz!
0042F4DE  |. |BA 70F54200   mov edx,Acid_bur.0042F570                ;  God Job dude !! =)
0042F4E3  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042F4E8  |. |8B00          mov eax,dword ptr ds:[eax]

0042FB03  |. /74 1A         je short Acid_bur.0042FB1F               ;  爆破点~~
0042FB05  |. |6A 00         push 0x0
0042FB07  |. |B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |. |BA D8FB4200   mov edx,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB16  |. |8B00          mov eax,dword ptr ds:[eax]

经过以上的改动之后,程序打开没有msgbox,随便输入任何注册码都是显示成功的。
2011-7-19 20:36
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个很适合新手看,我跟着做了,和以前的也有差不多的例子,不过非常感谢,又熟悉了一下。
2011-8-3 13:26
0
雪    币: 1585
活跃值: (190)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
17
学习这种事情切忌心浮气躁,只能循序渐进,所以还是先从基础做起一步一步努力吧!
2011-8-11 20:56
0
雪    币: 1585
活跃值: (190)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
18
谢谢各位同僚支持啊,无精华关注也不错,这说明有益于大家,感激涕零啊,过几天准备打造精华
2011-8-20 15:43
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
19
期待期待
2011-8-20 18:52
0
游客
登录 | 注册 方可回帖
返回