首页
社区
课程
招聘
[原创]一个比较简单的CrackMe,大家可以来尝试一下
发表于: 2007-10-18 18:18 8479

[原创]一个比较简单的CrackMe,大家可以来尝试一下

2007-10-18 18:18
8479
今天我写了一个比较简单的CrackMe程序,程序用VC编写,并参照了看雪论坛riijj的源代码。大家有兴趣可以尝试破解一下。

程序大小156KB,没有加壳,在提交注册码以后会有相应的提示,因此,希望大家不要使用暴力破解。

此CrackMe的注册码还是比较容易找到的,算法并不复杂,不过,要写出注册机很难,高手可以尝试一下,如果需要此CrackMe的源代码,可以联系我或回复此文。



下载地址:
http://www.cnitblog.com/Files/CoffeeCat/crackme/crackme.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
简单看了一下,只是感觉太烦躁了,该可以逆推出来,战斗去
2007-10-18 20:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
算法写起来很简单,我就是把注册码代入了一个不是很复杂的表达式进行了运算,然后和另一个值进行了匹配~~~
不过倒推还是有难度的喔~~呵呵~~
2007-10-18 21:46
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个本人第一次破解

什么也不输入,点了Regist,竟然显示成功……,还破解干什么?

用OllyDBG打开,在下面字符串上下断:

ASCII "Registration Successful!",LF,"Good Job!",LF,"Please contact:xufeng0325@gmail.com"

程序在0040113D被断下

关键在于地址00401132处的跳转,我把这个跳转改成了2个nop,输入任何注册码都可以成功,不知道这样做算做完了吗?

004010F0  /> \55            push    ebp
004010F1  |.  8BEC          mov     ebp, esp
004010F3  |.  83EC 44       sub     esp, 44
004010F6  |.  53            push    ebx
004010F7  |.  56            push    esi
004010F8  |.  57            push    edi
004010F9  |.  8D7D BC       lea     edi, dword ptr ss:[ebp-44]
004010FC  |.  B9 11000000   mov     ecx, 11
00401101  |.  B8 CCCCCCCC   mov     eax, CCCCCCCC
00401106  |.  F3:AB         rep     stos dword ptr es:[edi]
00401108  |.  8B45 0C       mov     eax, dword ptr ss:[ebp+C]
0040110B  |.  8945 FC       mov     dword ptr ss:[ebp-4], eax
0040110E  |.  817D FC 11010>cmp     dword ptr ss:[ebp-4], 111
00401115  |.  74 02         je      short crackme.00401119
00401117  |.  EB 60         jmp     short crackme.00401179
00401119  |>  8B4D 10       mov     ecx, dword ptr ss:[ebp+10]
0040111C  |.  81E1 FFFF0000 and     ecx, 0FFFF
00401122  |.  81F9 EA030000 cmp     ecx, 3EA
00401128  |.  75 4F         jnz     short crackme.00401179
0040112A  |.  E8 EAFEFFFF   call    crackme.00401019
0040112F  |.  83F8 01       cmp     eax, 1
00401132  |.  75 24         jnz     short crackme.00401158
00401134  |.  8BF4          mov     esi, esp
00401136  |.  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
00401138  |.  68 9C004200   push    crackme.0042009C                 ; |Title = "crackme"
0040113D  |.  68 44004200   push    crackme.00420044                 ; |Text = "Registration Successful!",LF,"Good Job!",LF,"Please contact:xufeng0325@gmail.com"
00401142  |.  8B15 A0374200 mov     edx, dword ptr ds:[4237A0]       ; |
00401148  |.  52            push    edx                              ; |hOwner => 009F02EA ('CrackMe0.1 By Ferris',class='myWindowClass')
00401149  |.  FF15 04534200 call    dword ptr ds:[<&USER32.MessageBo>; \MessageBoxA
0040114F  |.  3BF4          cmp     esi, esp
00401151  |.  E8 3A040000   call    crackme.00401590
00401156  |.  EB 21         jmp     short crackme.00401179
00401158  |>  8BF4          mov     esi, esp
0040115A  |.  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
0040115C  |.  68 9C004200   push    crackme.0042009C                 ; |Title = "crackme"
00401161  |.  68 2C004200   push    crackme.0042002C                 ; |Text = "Registration Fail!"
00401166  |.  A1 A0374200   mov     eax, dword ptr ds:[4237A0]       ; |
0040116B  |.  50            push    eax                              ; |hOwner => 009F02EA ('CrackMe0.1 By Ferris',class='myWindowClass')
0040116C  |.  FF15 04534200 call    dword ptr ds:[<&USER32.MessageBo>; \MessageBoxA
00401172  |.  3BF4          cmp     esi, esp
00401174  |.  E8 17040000   call    crackme.00401590
00401179  |>  33C0          xor     eax, eax
0040117B  |.  5F            pop     edi
0040117C  |.  5E            pop     esi
0040117D  |.  5B            pop     ebx
0040117E  |.  83C4 44       add     esp, 44
00401181  |.  3BEC          cmp     ebp, esp
00401183  |.  E8 08040000   call    crackme.00401590
00401188  |.  8BE5          mov     esp, ebp
0040118A  |.  5D            pop     ebp
0040118B  \.  C2 1000       retn    10
2007-10-20 03:41
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
忘了发破解后的程序
上传的附件:
2007-10-20 03:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呵呵,哭了,真对不起大家!不输入注册码竟然也会显示注册成功~~我修改一下~~
    楼上的朋友破解过程确实正确,不过,这个CrackMe不是为暴力破解设计的,不然,我不会这么容易就让你找到下断点的地方,而且验证也不可能只有1个地方有~~这个CrackMe是为了寻找注册码而设计的喔~~
    我把程序修改了一下,纠正了不输注册码也能显示注册成功的错误,大家可以再尝试一下。这个CrackMe只有找到注册码才算成功,写出注册机才算真正的成功。这个CrackMe也可以用来练习爆破,不过这个爆破缺少挑战性,呵呵,楼上的朋友再想办法找找注册码~~

   修改以后的下载地址(和原来一样~~)
   http://www.cnitblog.com/Files/CoffeeCat/crackme/crackme.rar

谢谢楼上朋友的支持喔
2007-10-20 11:01
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
知道算法在哪里,但是看不明白,只能爆破了
2007-10-23 20:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好吧,公布算法~~

算法写起来比较简单

_int64 esi;
_int64 sn = 你输入的注册码的数值;
esi = ~sn*sn + (sn & 0x0FF23301) + (sn * 0xBA2E8BA3) / 0x800000000;
esi = esi & 0xFFFFFFFF;

if (esi == 0x86FFB5B8)
    // 注册成功

最后算出来的注册码是1143580011,至于如何通过0x86FFB5B8来算出SN,这个是本CrackMe的难点,也是写这个注册机的基础,有兴趣的可以研究一下,我没有研究出来,呵呵,正确的注册码我是通过穷举算出来的~~
2007-10-24 12:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
0040112F  |.  83F8 01       CMP EAX,1
00401132  |.  75 24         JNZ SHORT crackme.00401158
00401134  |.  8BF4          MOV ESI,ESP
00401136  |.  6A 00         PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00401138  |.  68 9C004200   PUSH crackme.0042009C                    ; |crackme
0040113D  |.  68 44004200   PUSH crackme.00420044                    ; |registration successful!\ngood job!\nplease contact:xufeng0325@gmail.com
00401142  |.  8B15 A0374200 MOV EDX,DWORD PTR DS:[4237A0]            ; |
00401148  |.  52            PUSH EDX                                 ; |hOwner => 002A07D0 ('CrackMe0.1 By Ferris',class='myWindowClass')
00401149  |.  FF15 04534200 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA

我是菜鸟,先爆了再说
2007-11-2 14:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我菜鸟一个 刚把这个爆破了
谢楼主发出如此简单的。。。
呵呵 不好意思 不会破解 只能爆破了
首先注册失败  出 regedistration fail
搜索这个字段,竟然发现了
向上翻竟然有successfull
哈哈 再往上发现关键跳 jnz 改为je 成功爆破
2007-11-2 19:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主给点提示吧!
2007-11-3 17:17
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
12
干脆md5一万轮求逆吧
2007-11-3 19:16
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
13
表示上看是可逆的...
能不能把符号表示清楚一点,乘用x,与用and,或用or, 异或用xor,除还是用/,你那个~没有见过,所以不懂...
2007-11-3 22:11
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我也只会爆破.
2007-11-4 21:57
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
先爆了,再找算法
2007-11-8 14:40
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
哈哈看来大家还是喜欢暴力,比较简单点
2007-11-9 09:33
0
游客
登录 | 注册 方可回帖
返回
//