首页
社区
课程
招聘
[原创]再发个crackme08040101-大家帮忙试下
发表于: 2008-4-3 23:31 6988

[原创]再发个crackme08040101-大家帮忙试下

2008-4-3 23:31
6988

写crackme来学习VC++.
自己写的不知强度如何,感觉不出来,在复杂度和可玩性之间实在是不好把握。也是无anti,不防爆的,本次注册码算法很简单,但检验注册码的算法繁化了一下,做这种脱裤子放屁的事很不爽,明明mm就在隔壁,非要乘热气球环球一周。实现方法就是拼命的画圈圈,看似眼花缭乱,水泼不进,对高手而言可能一个直刺就会搞定它。
周末并节日愉快。
btw:原型可能真实生活中难找到对应的实例。不过却无处不在。希望给出一组有效的注册码,最好能指出基本实现单元的名称。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
dsafasfas
0123456789abcdef

居然.....

算法有问题?
fasdadas
dsafasfas
kytjys
kytjysdas
ktybnv
很多也行

偶菜
402474 改掉了
2008-4-4 10:32
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
多谢,有个地方应该“与”的地方写成“或”了。已更改。
2008-4-4 12:11
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
402474是关键跳,之前的那个call是关键call,chkregcode(a0,a1,a2)
2008-4-4 12:20
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
5
杀了我吧,能不能给我一个release版的
2008-4-4 14:24
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
6
布尔代数啊
          _       _
A xor B = A*B + A*B


ccfer
765C948245E7C7D5
2008-4-4 15:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
ls的实在是无所不能呀
膜拜膜。。。
2008-4-4 16:46
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
:(又没有坚持1天。
看来还得加大强度。
2008-4-4 17:06
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
9
就是release版的啊。取消了优化的release版。否则都会被它给优化掉。
2008-4-4 17:07
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
10
继续等待Crack Me源码和注册机源码
2008-4-5 23:35
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
11
被ccfer一语道破。
就是bool代数做的繁华,从vmprotect那里学来的,抄袭了一点。vmprotect用的是"或非门",我这里用的基本单元是"与或非门",它们都同"与非门"一样,可是实现所有逻辑功能。
里面主要通过"与或非门"实现的是“四位同比较器”和“位同比较器”,本以为强度足够,没想到这么快被搞定,早知应把"半加器","全加器"用上,拖延点时间。
看来组合逻辑不管用,下次得做个时序逻辑的。呵呵。
只把主要函数列出,请ccfer,forgot帮忙指点。
与或非门
Z=!(A*!B+C*!D)


bool chkregcode(unsigned char *pnamevalue,unsigned char *pregcodevalue,unsigned char *pkey)
{
	unsigned char namevalue[8];
	unsigned char regcodevalue[8];
	unsigned char keyvalue[8];
	unsigned char tmpa[4];
	unsigned char tmpb[4];
	unsigned char tmpc[4];
	int tmpi;
	for(tmpi=0;tmpi<8;tmpi++,pnamevalue++,pregcodevalue++,pkey++)
	{
		namevalue[tmpi]=*pnamevalue;
		regcodevalue[tmpi]=*pregcodevalue;
		keyvalue[tmpi]=*pkey;
	}
	for(tmpi=0;tmpi<4;tmpi++)
	{
		tmpa[tmpi]=vm_xor(namevalue[tmpi],keyvalue[tmpi]);
		tmpb[tmpi]=regcodevalue[tmpi];
	}
	tmpc[0]=vm_same4(tmpa,tmpb);
	for(tmpi=0;tmpi<4;tmpi++)
	{
		tmpa[tmpi]=vm_xor(namevalue[tmpi+4],keyvalue[tmpi+4]);
		tmpb[tmpi]=regcodevalue[tmpi+4];
	}
	tmpc[1]=vm_same4(tmpa,tmpb);
	tmpc[2]=vm_same1(tmpc[0],tmpc[1]);
	tmpc[3]=vm_same1(tmpc[1],0xff);
	return (tmpc[3]==0xff&&tmpc[2]==0xff);
}


unsigned char vm_nop1(unsigned char a0)
{
	unsigned char tmpc1;
	unsigned char tmpc2;
	tmpc1=a0;
	tmpc2=a0^0xff;
	tmpc1=tmpc1|tmpc2;
	tmpc2=tmpc2^0xff;
	tmpc2=tmpc1&tmpc2;
	return tmpc2;
}
//深1层vm
//nor
unsigned char vm1_nor(unsigned char a0,unsigned char b0)
{
	unsigned char tmpc1;
	tmpc1=a0|b0;
	tmpc1=tmpc1^0xff;
	return tmpc1;
}
unsigned char vm1_not(unsigned char a0)
{
	return vm1_nor(a0,a0&vm_nop1(a0));
}
//循环移
int vm_ror_int(int value,int count)
{
	count=count%32;
	return (value>>count)|(value<<(32-count));
}
unsigned char vm_ror_B(unsigned char value,int count)
{
	count=count%8;
	return (value>>count)|(value<<(8-count));
}

//与或非
unsigned char vm_nao(unsigned char a0,unsigned char b0,unsigned char c0,unsigned char d0)
{
	unsigned char tmpc0,tmpc1,tmpc2,tmpc3;
	//garbage start swap c0,a0//b0,d0
	tmpc0=c0;
	c0=vm_nop1(a0);
	a0=vm_nop1(tmpc0);
	tmpc0=d0;
	d0=vm_nop1(b0);
	b0=vm_nop1(tmpc0);
	//garbage end
	tmpc1=b0^0xff;
	tmpc1=a0&tmpc1;
	tmpc2=c0&(d0^0xff);
	tmpc3=(tmpc1|tmpc2)^0xff;
	return tmpc3;
}
//非 not=!(a0*!a0+a0*!a0)
unsigned char vm_not(unsigned char a0)
{
	return vm_nao(a0,a0^0xff,a0,a0^0xff);
}
//或
unsigned char vm_or(unsigned char a0,unsigned char b0)
{
	return vm_nao(0xa5,0xa5,a0^0xff,b0);
}
//与
unsigned char vm_and(unsigned char a0,unsigned char b0)
{
	return vm_nao(0xff,a0,0xff,b0);
}
//与非
unsigned char vm_nand(unsigned char a0,unsigned char b0)
{
	return vm_not(vm_and(a0,b0));
}
//或非
unsigned char vm_nor(unsigned char a0,unsigned char b0)
{
	return vm_not(vm_or(a0,b0));
}
//异或
unsigned char vm_xor(unsigned char a0,unsigned char b0)
{
	return vm_not(vm_nao(a0,b0,vm_not(a0),vm_not(b0)));
}
//同或
unsigned char vm_nxor(unsigned char a0,unsigned char b0)
{
	return vm_not(vm_nao(a0,b0^0xff,a0^0xff,b0));
}
//四字节同比较器
unsigned char vm_same4(unsigned char a0[4],unsigned char b0[4])
{
	unsigned char tmpc[4];
	unsigned char tmpc0,tmpa0,tmpb0;
	int tmpi;
	for(tmpi=0;tmpi<4;tmpi++)
	{
		tmpc[tmpi]=vm_xor(a0[tmpi],b0[tmpi]);
	}
	tmpa0=vm_or(tmpc[0],tmpc[1]);
	tmpb0=vm_or(tmpc[2],tmpc[3]);
	//garbage start
	tmpc0=tmpb0;
	tmpb0=vm_not(vm_not(vm_or(tmpa0,tmpa0)));
	tmpa0=vm_and(tmpc0,tmpc0);
	//garbage end
	return vm_nor(tmpa0,tmpb0);
}
//单字节同比较器
unsigned char vm_same1(unsigned char a0,unsigned char b0)
{
	unsigned char tmpc;
	unsigned char tmpc1;
	//garbage start
	tmpc=b0;
	b0=vm_not(vm_not(vm_or(a0,a0)));
	a0=vm_and(tmpc,tmpc);
	//garbage end
	tmpc1=vm_xor(a0,b0);
	return vm_not(tmpc1);
}
2008-4-6 12:33
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
12
从这个crackme可以看出来wangdell是楼主的徒弟
2008-4-6 12:48
0
游客
登录 | 注册 方可回帖
返回
//