currwin 发表于 2014-10-30 12:42

【吾爱破解2014CrackMe大赛】【第八组】

本帖最后由 ximo 于 2014-10-31 12:59 编辑

       时隔几千年,我们那苦逼的曹操又再次在华容道上面被关羽追杀。那么,到底最终结果是如何呢,且让我们来帮曹操一把吧。
      首先,看一下阵法配置

兵 曹操 兵
兵         兵
张 关羽 马
飞 黄赵 超
    忠云


   转换一下,在程序中的表示就是
0 9 9 1
2 9 9 3
4 8 8 5
4 6 7 5
A 6 7 A
      A表示为空
   输入方法如下,[编号,方向]
   方向:0,向上,1向右,2向下,3向左,比如输入42,就是4(张飞)往下移动一格。输入40就是4(张飞)往上移动一格。
   只要最终让我们亲爱的曹操往下移动到现在6,7(黄忠,赵云)的位置就成功逃脱了。


   这个华容道游戏虽然看起来简单,但是实际上要用程序去实现是有难度的。我用了别人写好的遍历方法,然后修改了一下,使得它能够输出符号cm输入的答案,看一下跑出来的结果吧
key1:42220252812102931330802101210192131333338000235050712202220291404063030292321140311283506070032192
   然后我又手动构造了一个key
key2:425283323312129121208033331313922121010180301032314040633232121293505071111292020323228150704060331192
   手动构造的key比程序跑出来的最优解多了2步,应该是正常的,毕竟在我构造key的过程中走错了一步,导致浪费了一些。
PS:用户名与注册无关
   keygen中使用了遍历算法,是用来计算最优解的,所以最终只key出来了一个key,毕竟源程序中的初始化的华容道排列是不会变的。如果各个兵将的顺序能够根据用户名来改变的话,那么keygen的效果就会看出来了。
   而且这种固定开局的状况导致的结果就是局势只会在程序初始化的时候被初始化。所以每当输入一个正确的key后,必须要重载程序才能用下一个key的。而一旦中途某一步走错了,那么就无论如何都不会出现提示信息。毕竟后面用了 9/ErrorCount 的结构来调用异常显示注册正确。这里ErrorCount必须为0才行的。




ximo 发表于 2014-10-31 12:59

最后成绩:18*2*90%=32分
评委评价:虽然kg只有一组,但是考虑到用户名和注册码无关,可以任意构造,因此keygen有效,考虑到第二位提交,因此得分为90%。
谢谢参与,请继续加油。

a070458 发表于 2014-10-31 17:57

编程功力渣渣的我到现在还没写出穷举算法~{:1_906:}

chaojiak47 发表于 2014-11-1 19:25

人气爆棚了。。。。。。

淡然丶 发表于 2016-7-21 20:13

只能膜拜的份哟。{:301_992:}

ccw89 发表于 2016-7-23 08:46

只能膜拜的份哟

骑驴撞交警 发表于 2016-8-10 21:39

我看不懂

豪哈哈哈 发表于 2016-8-21 20:04

前来学习了

lflflala 发表于 2016-10-25 13:12

这个逻辑思维要强, 新手只能慢慢积累了!

Jessicá 发表于 2016-11-7 11:29

膜拜大神{:1_936:}
页: [1] 2
查看完整版本: 【吾爱破解2014CrackMe大赛】【第八组】