能力值:
(RANK:1130 )
|
-
-
26 楼
我好奇的是这个图怎么画出来的,万一画出一个无解图怎么办?
|
能力值:
(RANK:210 )
|
-
-
27 楼
所以说杂志很强大
|
能力值:
(RANK:1130 )
|
-
-
28 楼
预计一下,下一个crackme是推箱子
|
能力值:
(RANK:1130 )
|
-
-
29 楼
我的意思不是你怎么画出来的,是这个图是怎么构造出来的,随便画一个图,很可能无解的,同一个图,规则小小改动一下也是无解的(比如行优先)
|
能力值:
(RANK:210 )
|
-
-
30 楼
发完贴发现读错了
|
能力值:
(RANK:210 )
|
-
-
31 楼
我预计俄罗斯方块
|
能力值:
(RANK:1060 )
|
-
-
32 楼
我的想法是反过来,先生成解法,根据解法调整,最后绘图
|
能力值:
(RANK:210 )
|
-
-
33 楼
绘完图写杂志 写完杂志未成年
|
能力值:
( LV8,RANK:130 )
|
-
-
34 楼
现在的CRACKME怎么都这么变态啊,晕死了!不敢碰了
|
能力值:
(RANK:1130 )
|
-
-
35 楼
我们提前办一个crackme趣味大赛吧,不比谁的难破解,比谁的游戏有意思
人肉构造法
|
能力值:
(RANK:210 )
|
-
-
36 楼
前几天我这里新出了个电影叫midnight meat train
|
能力值:
(RANK:410 )
|
-
-
37 楼
好的crackme就象美女一样。
就叫crackme选美大赛,如何。
|
能力值:
(RANK:210 )
|
-
-
38 楼
我的又一个crackme夭折了
|
能力值:
(RANK:1130 )
|
-
-
39 楼
美女写的我才选,帅哥写的就叫美女来选吧
|
能力值:
( LV4,RANK:50 )
|
-
-
40 楼
都是 叫兽 级别的攻击力
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
感叹世间还有这么多的牛人啊 哎
|
能力值:
(RANK:1060 )
|
-
-
42 楼
贴个代码
// crackme 666
// (x) forgot 2k8
#define DUMP_STATE 1
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define N 0
#define U 1
#define D 2
#define L 4
#define R 8
typedef struct
{
int x;
int y;
} pos_t;
typedef struct
{
char map[8][8];
pos_t player;
pos_t computer;
pos_t escape;
} level_t;
void fuck()
{
int i;
char c;
level_t lv = {/* map */{ { 0+D+0+0, 0+D+0+0, 0+D+0+0, 0+D+0+R, 0+0+L+R, 0+D+L+0 },
{ U+D+L+0, U+0+0+0, U+0+0+0, U+0+0+0, 0+0+0+R, U+0+L+R },
{ U+0+L+0, 0+D+0+R, 0+0+L+0, 0+0+0+R, 0+D+L+R, 0+0+L+R },
{ 0+0+L+R, U+0+L+R, 0+D+L+R, 0+0+L+0, U+D+0+0, 0+0+0+R },
{ 0+0+L+R, 0+0+L+0, U+D+0+0, 0+0+0+R, U+0+L+0, 0+0+0+R },
{ 0+0+L+R, 0+0+L+R, U+0+L+0, 0+0+0+0, 0+0+0+0, 0+0+0+R },
{ 0+D+L+0, 0+D+0+0, 0+D+0+0, 0+D+0+0, 0+D+0+0, 0+D+0+R } },
/* player */{ 0, 1 },
/* computer */{ 4, 3 },
/* escape */{ 4, 0 } };
//
// looper
//
while ( c = getch() )
{
//
// player action
//
switch ( c & 0xF )
{
case U:
if ( (lv.map[lv.player.y][lv.player.x] & U) == 0 )
--lv.player.y;
break;
case D:
if ( (lv.map[lv.player.y][lv.player.x] & D) == 0 )
++lv.player.y;
break;
case L:
if ( (lv.map[lv.player.y][lv.player.x] & L) == 0 )
--lv.player.x;
break;
case R:
if ( (lv.map[lv.player.y][lv.player.x] & R) == 0 )
++lv.player.x;
break;
}
//
// is player escaped
//
if ( lv.player.x == lv.escape.x
&& lv.player.y == lv.escape.y )
{
puts("Congratulations! You are ESCAPED!");
return;
}
//
// computer action
//
for (i = 0; i < 2; ++i)
{
//
// try to decrease x difference
//
if ( lv.computer.x < lv.player.x
&& (lv.map[lv.computer.y][lv.computer.x] & R) == 0 )
++lv.computer.x;
else
if ( lv.computer.x > lv.player.x
&& (lv.map[lv.computer.y][lv.computer.x] & L) == 0 )
--lv.computer.x;
else
//
// try to decrease y difference
//
if ( lv.computer.y < lv.player.y
&& (lv.map[lv.computer.y][lv.computer.x] & D) == 0 )
++lv.computer.y;
else
if ( lv.computer.y > lv.player.y
&& (lv.map[lv.computer.y][lv.computer.x] & U) == 0 )
--lv.computer.y;
else
//
// nothing computer can do
//
break;
}
//
// dump state if debuggin
//
#ifdef DUMP_STATE
printf( "Player(%d, %d) vs Computer(%d, %d)\n",
lv.player.x, lv.player.y,
lv.computer.x, lv.computer.y);
#endif // DUMP_STATE
//
// is player fucked
//
if ( lv.player.x == lv.computer.x
&& lv.player.y == lv.computer.y )
break;
} // while
puts("You are FUCKED.");
}
void main()
{
puts( "forgot's crackme 666\n"
"input code:" );
fuck();
system("pause");
}
|
能力值:
(RANK:650 )
|
-
-
43 楼
forgot变成c王子了
|
能力值:
( LV15,RANK:2473 )
|
-
-
44 楼
BS不写asm的forgot
|
能力值:
(RANK:1060 )
|
-
-
45 楼
那要从ccfer开始BS
|
能力值:
(RANK:1130 )
|
-
-
46 楼
666是什么意思啊?
|
能力值:
(RANK:330 )
|
-
-
47 楼
跟编译的代码不一样啊,哪有优化得这么离谱的
|
能力值:
( LV15,RANK:2473 )
|
-
-
48 楼
楼上的VC太先进了
|
能力值:
( LV9,RANK:170 )
|
-
-
49 楼
靠!什么玩意儿!
--------------
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
人肉搜索
很好很强大
|