首页
社区
课程
招聘
[已结束][PEDIY.华章 Crackme 竞赛 2009] [第十二回] –莫拉克
2009-9-18 12:00 105227

[已结束][PEDIY.华章 Crackme 竞赛 2009] [第十二回] –莫拉克

2009-9-18 12:00
105227
收藏
点赞0
打赏
分享
最新回复 (97)
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PEBOSS 2009-9-19 19:01
76
0
我一直认为,你这头像太帅了,能否告诉在下,

这头像是谁啊?

这表情,这神态,一绝啊!
雪    币: 515
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
红尘岁月 2 2009-9-19 20:41
77
0
电视 《潜伏》 里面的人物

源码已下载,谢谢!
雪    币: 774
活跃值: (1516)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
tjszlqq 1 2009-9-19 21:22
78
0
十万行啊,几百万字,相当于一部巨著啊
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-9-19 22:32
79
0
自己做了个编译器?中间代码?
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
lelfei 23 2009-9-19 23:00
80
0
下载看了一下源代码,发现跟在od看没多大区别。。。太强大了,膜拜。。。
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
竹君 5 2009-9-19 23:30
81
0
完全看不懂
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
竹君 5 2009-9-19 23:31
82
0
10W行代码啊
雪    币: 337
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xieyuzhe 2009-9-20 02:54
83
0
这个源代码写的有点变态啊
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 2009-9-20 10:29
84
0
我只对怎样填上 10W H 感兴趣
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2009-9-20 10:53
85
0
qiongjudafahaoshijianzhenbushao
402F5500BC6EFF634022D6E0D9B011CA3E82032C04C83020
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lafeng 2009-9-20 10:56
86
0
穷举打发耗时间真不少
呵呵,膜拜ing
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 2009-9-20 11:21
87
0
油菜            。
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
nkspark 3 2009-9-20 11:55
88
0
纯手工:


 	namelen = strlen(name);
  keylen = strlen(key);
	
	if (namelen < 3 || namelen > 32 || keylen != 48)
	{
		return 6;
	}
	for(i = 0; i < namelen; i++)
	{
		hash1 += hash1 * name[i] * (name[i] << 3) + hashkey1;
		hash2 += hash2 * name[i] * (name[i] >> 1) + hashkey2;
		hash3 += hash3 * name[i] * (name[i] << 2) + hashkey3;
		hash4 += hash4 * name[i] * (name[i] << 5) + hashkey4;
	}
	
	hash1 = ((hash1 & 0x00FFFFFF) ^ (DWORD)0x3E000000);
	hash2 = ((hash2 & 0x00FFFFFF) ^ (DWORD)0x3F000000);
	hash3 = ((hash3 & 0x00FFFFFF) ^ (DWORD)0x40000000);
	
	szGood[0] = 'P';
	
	for(i = 0; i < keylen; i+= 8)
	{
		sscanf((char*)&key[i], "%08X", &ddd[i / 8]);
	}
	
  for( i = 0; i < 256; i ++ )
	{
    crc32 = i;
    for( j = 0; j < 8; j ++ )
		{
        if(crc32 & 1) 
					crc32 = (crc32 >> 1) ^ 0xEDB88320UL;
        else 
					crc32 >>= 1;
    }
    crcTable[i] = crc32;
  }
	
	crc32 = ~hash4;

	lpData = &ddd;

	for(i = 0; i < 24; i ++)
	{
		crc32 = (crc32 >> 8) ^ crcTable[ (crc32 ^ lpData[i]) & 0xFF ];
	}
		
	crc32 = ~crc32;

	for(i = 0; i < 6; i ++)
	{
		ddd[i] ^= crc32;
	}
	
	szGood[1] = 'a';

	xx = (DWORD*)&y2;
	y1 = 0.0;
	x0 = 1.0;
	y2 = x0;
	x1 = *(float*)&ddd[0];
	x2 = *(float*)&ddd[1];
	x4 = x1;

	for(i = 1; i <= 100000; i++)
	{
		sign = (x4 < 0);
		x4 = sign?(-x4):x4;
		n = (int) ((x4 * INVSPI) + 0.5);
		xn = (double) n;
		sign ^= n % 2;
		
		f = (x4 - xn * C1) - xn * C2;
		g = f * f;
		rg = (((R4 * g + R3) * g + R2) * g + R1) * g;
 
		result = f + f * rg;
		result = sign ? -result : result;
		y1 += result / i;
		x0 *= x2;
		y2 += x0;
		x4 += x1;
	}

	x = (float*)&hash1;

	if(fabs(*x - y1) > EPLISON || fabs(y2 - *(float*)&hash2) > EPLISON)
	{
		return 3;
	}

	szGood[4] = '!';

	x0 = 1.0;
	y3 = 0.0;
	x1 = *(float*)&ddd[2];
	x4 = x1;

	for(i = 1; i < 8000; i++)
	{
		x4 = (x4 > 0)?(x4):(-x4);
		n = (int) (((x4 + HALFPI) * INVSPI) + 0.5);
   
		xn = (double)n - 0.5;
		sign = n % 2;
		f = (x4 - xn * C1) - xn * C2;
		g = f * f;
		rg = (((R4 * g + R3) * g + R2) * g + R1) * g;
		result = f + f * rg;
     
		result =  sign ? -result : result;
		y3 += x0 * result / (i * i);
		x0 = -x0;
		x4 += x1;
	}

	y3 = y3 * 4 + PI * PI / 3 * 2;

	szGood[5] = '\x0';

	x = (float*)&hash3;

	if(fabs(*x - y3) > EPLISON)
	{
		return 1;
	}

	k = 0;

	szGood[2] = 's';

	lpData = (BYTE*)&k;

	d = (WORD*)&ddd[3];

	for(i = 0; i < 4; i++)
	{
		B = (int)d[i];
		if(B >= MCU_CODE)
		{
			B = (B * 2) & 0xFFFF;
			C = B + 1;
		}
		else
			C = B + 2;
		rem = 0;
		root = 0;
		divisor = 0;
		a = C * C - B * B;
		for(j = 0; j < 16; j++)
		{
			root <<= 1;
			rem = ((rem << 2) + (a >> 30));
			a <<= 2;
			divisor = (root << 1) + 1;
			if(divisor <= rem)
			{
				rem -= divisor;
				root ++;
			}
		}
		lpData[i] = (unsigned char)(root - 3);
	}

	if(k == hash4)
	{
		szGood[3] = 's';
		
		printf("%s\n", szGood);
		
	}
	
	return 2;

雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2009-9-20 12:00
89
0
LS的手活不错啊
雪    币: 195
活跃值: (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
vxworks 1 2009-9-20 13:49
90
0
这源码无敌了

ccfer 更无敌 ~~~
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
zenghw 6 2009-9-20 15:04
91
0
无语!!!
震憾!!! 加完全看不懂~~
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fool 2009-9-20 17:20
92
0
源码太强大了,生成的吗,完全看不懂:)
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-9-21 22:43
93
0
很强大。。。
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2009-9-22 09:22
94
0
手工活太强了
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-9-24 00:06
95
0
源码编译后,ccfer的key运行不成功?spark扣的代码似乎也无法使用ccfer的key.
似乎前3个DWORD顺利通过,第4个不成功。。是我编译问题?还是源码与提交的不同?
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2009-9-24 11:29
96
0
不好意思,源码选错了,提交的版本把位置变了一下

  szGood[2] = 's';

  lpData = (BYTE*)&k;

  [COLOR="red"]d = (WORD*)&ddd[3];[/COLOR]

  for(i = 0; i < 4; i++)

改成
  szGood[2] = 's';

  lpData = (BYTE*)&k;

  [COLOR="Red"]d = (WORD*)&ddd[4];[/COLOR]

  for(i = 0; i < 4; i++)
上传的附件:
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
instruder 4 2009-9-24 11:54
97
0
看来数学也很重要。。。膜拜
雪    币: 87
活跃值: (47)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
wangdell 6 2009-9-25 23:01
98
0
终于出来一组,原来crc可逆。
wangdell
4031c5c1be3460004004b0da452a0cbe0af8151a0af80fff

aaaa
402c6c203e811980401d0f8822c749991e3f1c8e1d3a0270
bbbb
4034e018bf305ca04023c1b45b936150017c01ce06e31103
游客
登录 | 注册 方可回帖
返回