首页
社区
课程
招聘
[原创]HappyTown的第22个CrackMe
2006-9-25 19:56 7468

[原创]HappyTown的第22个CrackMe

2006-9-25 19:56
7468
这是我的第22个CrackMe(KeyGenMe),Just Enjoy!

===========================================
相关信息:

1、语言:VC 6.0

2、难度:1/10;

3、这个CrackMe是专为密码学新手而作。

===========================================
要求:

1、爆破超简单,所以爆破的就不要贴上来了;

2、给出与你Name相匹配的Serial,并贴出破解教程;

3、做出注册机(用纯高级语言)。

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

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (10)
雪    币: 342
活跃值: (318)
能力值: ( LV12,RANK:740 )
在线值:
发帖
回帖
粉丝
aalloverred 18 2006-9-25 21:11
2
0
HappyTown辛苦了,学习一下!
雪    币: 221
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
xiaohui_82 2 2006-9-25 21:21
3
0
又出了,跟了几天的21了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zheng 2006-9-25 23:54
4
0
请问楼上的
CALL <CrackMe_.SHA1INIT>
这个sha1init是怎么解析出来的,要什么插件?
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-9-26 21:43
5
0
00402E00  /$  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
00402E04  |.  33C9          XOR ECX,ECX
00402E06  |.  C700 01234567 MOV DWORD PTR DS:[EAX],67452301
00402E0C  |.  C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89
00402E13  |.  C740 08 FEDCB>MOV DWORD PTR DS:[EAX+8],98BADCFE
00402E1A  |.  C740 0C 76543>MOV DWORD PTR DS:[EAX+C],10325476
00402E21  |.  C740 10 F0E1D>MOV DWORD PTR DS:[EAX+10],C3D2E1F0
00402E28  |.  8948 14       MOV DWORD PTR DS:[EAX+14],ECX
00402E2B  |.  8948 18       MOV DWORD PTR DS:[EAX+18],ECX
00402E2E  |.  8948 5C       MOV DWORD PTR DS:[EAX+5C],ECX
00402E31  |.  B8 01000000   MOV EAX,1
00402E36  \.  C3            RETN

从这里的几个常量可以看出是SHA1吧!
雪    币: 342
活跃值: (318)
能力值: ( LV12,RANK:740 )
在线值:
发帖
回帖
粉丝
aalloverred 18 2006-9-27 13:14
6
0
to zheng:那个是自己分析出来的,如hbqjxhw所说,根据几个常数判断出是sha1的初始化。在olly中加个标签,olly就显示成这样:右击-〉标签,起个名字就OK了。

又用VC写了个Keygen。不会编程,大家别笑话:)                                        i=GetWindowText(hWndEditName,(char*)szName,200);
                                        if (i<4) {SetWindowText(hWndEditKey,"Bad Name...");return 0;}
                                        SetWindowText(hWndEditKey,(char*)szName);
                                        SHA1Init(&shactx);
                                        SHA1Update(&shactx,szName,i);
                                        SHA1Final(out, &shactx);
                                       
                                        cast_setkey(&mykey,rippedkey1, 16);
                                        cast_encrypt(&mykey,out,tmp);
                                        tmp1=tmp[0];
                                        tmp[0]=tmp[3];
                                        tmp[3]=tmp1;

                                        tmp1=tmp[1];
                                        tmp[1]=tmp[2];
                                        tmp[2]=tmp1;

                                        tmp1=tmp[4];
                                        tmp[4]=tmp[7];
                                        tmp[7]=tmp1;

                                        tmp1=tmp[5];
                                        tmp[5]=tmp[6];
                                        tmp[6]=tmp1;
                                        lpKey=(long*)tmp;
                                        lpKey1=(long*)&tmp[4];
                                        wsprintf(szKey,szFmt,*lpKey,*lpKey1);
                                        SetWindowText(hWndEditKey,szKey);
=============

win32汇编和vc写起来是一样的。
上传的附件:
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zheng 2006-9-27 13:47
7
0
谢谢解答,sha有几个常数容易,cast又是根据什么判断的
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-5 21:27
8
0
支持 aalloverred兄搞个VB版的CAST_128,一块三毛钱的VC版怎么也搞不定主函数是如何把字符串转换为数字的,也希望aalloverred兄提示提示。

typedef unsigned char u8;        /* 8-bit unsigned */
typedef unsigned long u32;        /* 32-bit unsigned */

typedef struct {
        u32 xkey[32];        /* Key, after expansion */
        int rounds;                /* Number of rounds to use, 12 or 16 */
} cast_key;

void cast_setkey(cast_key* key, u8* rawkey, int keybytes);
void cast_encrypt(cast_key* key, u8* inblock, u8* outblock);
void cast_decrypt(cast_key* key, u8* inblock, u8* outblock);
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-5 21:31
9
0
最初由 zheng 发布
谢谢解答,sha有几个常数容易,cast又是根据什么判断的

现在正在研究CAST加密算法,此算法应该根据算法的计算方式,可以判断一下。
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-5 21:50
10
0
cast_setkey(&mykey,rippedkey1, 16);
cast_encrypt(&mykey,out,tmp);
第一行应该是根据密钥计算出一个密钥表。
第二行应该是加密字符串。
假如密钥是这个:0123456712345678234567893456789A
加密字符串是这个:0123456789ABCDEF
如何把这两个字符串通过窗口输入代入到函数内呢?
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
happytown 31 2006-10-9 10:45
11
0
游客
登录 | 注册 方可回帖
返回