第31章 老虎机字典

我们从图书馆里借了很多关于硬件方面的书,经过一个星期的研究,费了九牛二虎之力,终于把代码取出来了,还放到了我的笔记本电脑上。

取出代码后的第二步便是研究代码,那是我们老虎机计划最重要的一步,然而我们碰了很多预想不到的问题。

第一个是警察查房,二零一七年时深圳出台了很多关于房子宏观调控的政策,于是乎,我们公寓附近很多平民租房纷纷改建为公寓,在我们那一片区域,很多租房被逼搬进搬出,人口流动量特别大,警察隔三叉五便会查房作人员流动登记。我们很担心的是被警察认出那是老虎机的主板,于是每次研究时都会将大门关上,将窗户窗帘拉下,像做贼一样。

第二个是季纯在那时搬到了我们公寓,她就住我们隔壁602,她在她原公寓没有等到那个的男孩子,就决定离开了。搬家是个麻烦的混账事,我们三个男生帮季纯搬家整理东西花了整整一个周末的时间。

第三个是我们工作上的事分了我们很多心神,过完年后,我们公司准备进军3D打印机这一块,王老板很看好3D打印机市场。

二太子对于3D打印机质量这块抓得特别严格,甚至到达一种吹毛求疵地步,为了保证产品的质量以及生产数据的可靠性,他要求我们深圳分公司仿写欧美一款叫菲马系统的软件,这菲马系统其实是潜在的失效模式及后果分析几个英语单词首字母的缩写,简拼成菲马系统。

为什么不直接购买这套系统,其一是因为国外软件的版权费太昂贵,维护起来也相当麻烦;其二是菲马系统作用的对象比较特殊,不具备大众化,因此这款软件在国内连个破解版的都没有;其三,也是最重要的一点,最费时费力的是就连菲马系统怎么使用都要软件公司派专人过来现场教,可以说相当麻烦;斟酌再三,二太子准备动用公司资源人力仿写此系统。

这菲马系统比较庞大,界面和框架本身比较复杂,其中有很多的图形处理界面,于是我们过完年后,便忙起这事来,而且忙得焦头烂额的,所以很多时候加班加到很晚,根本没时间做其他的事儿。

第四个是技术上的问题。

我们取出来的代码是机器码,也就是二进制代码,那里面全是0101字样,密密麻麻的,连断句都不知怎么断,完全没有可读性。于是,我们先作了反编译处理,将那些机械代码反编译成能易理解和读懂的更高级些的汇编语言代码。

虽然反编译的代码容易理解很多,但也存在弊端。

通常来说,程序员在编写程序时通常会有些注释,解释,标记,以便于日后自己或他人在阅读自己代码时,知道当初这样设计的用意和最初目的,但在反编译后,这些类似于路标,书签一样的东西全部没有了。

用一句话来概括我们遇到的技术难点是第一次接触老虎机这种机器,没有说明文档,也没有辅助文件,连汇编代码中的注释语句都没有,想通过直接阅读代码方式,完全弄懂整个老虎机的设计流程以及所有细节,那简直是不可能的事儿。

一开始我的研究工作走入了一个误区,我们采用剥茧抽丝的方法,想将每一句代码从头到尾都弄得一清二楚,我们一行一行的往下阅读着代码,每阅读完一行,便会在行后面加上注释,有不理解的地方,会在行后打个问号,希望看完所有代码重新回头再看时能有所收获。

后来我们发现这种做法不是很明智,因为越往下看,发现问题点越多,探讨了半天也讨论不出个结果来,很多时候都直接陷入死胡同和迷失在茫茫的代码海里。

后来我们改变了策略,用一个行业话来形容我们的新策略叫关键代码段。

老虎机最核心最关键的是如何随机产生数,所以我们只需要找到产生随机数的关键代码,并弄懂它们即可攻破老虎机,我们当时是那样想的,后来实事证明,我们当时的决定非常明智。

经过了长达一个月的苦心研究,终于我们在二零一七年四月十六号的晚上,揭开了老虎机神密的面纱,我感觉那段时间,我起码死了几亿的脑细胞,头发都不知道白了多少根,加良更惨,差点就谢顶了。

我们取得成功最重要的一点是我们丰富的开发经验给了我们很大的帮助,产生随机数的算法在编程里经常要用到,在开发菲马系统时,我就曾用到。

在我所从事的高级语言的开发中,具体怎么实现产生随机数呢?当然是调用随机函数,然后是人为输入一个数字作为种子,由不同的种子和其他复杂的数据融合碰撞后,得到一个看似随机的结果,这便是一般随机数产生的核心算法。在这种产生随机数的算法中,种子的选择很重要,因为相同的种子会产生相同的结果,所以这随机数其实是一个伪随机数,而并非真正意义上的随机数。而我通常会以服务器的实时时间为种子,因为实时的时间永远不会重复,这样才能保证最大化接近随机。

瑞典著名计算机科学家Wirth提出一个很经典的理论是说:程序其实是等于数据结构加算法,这个理论套用任何计算机上都实用,包括老虎机。

老虎机内部随机数产生算法跟我们高级语言的算法极其类似的,它里面有一个叫随机数生成器的东西,它跟随机函数的功能很类似,能产生无法预测的、无穷的随机数列。

随机数生成器也需要种子,那么它的种子是如何来的呢?我们通过分析得知,它其实来源于老虎机内部芯片记录的时间。

同样的问题,这个虎机内部芯片记录的时间又是怎么来的呢?我们又通过分析得知,它是通过外部人员下注时按下拉杆的时间,这个时间被会记录下来,并作为参数传递给随机数生成器。

所以,老虎机最终产生的结果依赖于伪随机数生成器,伪随机数生成器依赖于内部芯片记录的时间,内部芯片记录的时间取决于外部拉下拉杆的那个时间点,这就是老虎机奥秘所在。

于是,我们费了九牛二虎之力根据老虎机的核心算法,仿写了一个叫老虎机字典的程序,用‘字典’二字来形容我们那个破解的程序很贴切,因为只要人为给它输入时间,它便能根据相应算法,产生老虎机最后随机数的结果,它就跟字典一样,能查看所有时间点的老虎机产生的结果。

研究出成果的那一天,我们脸上的兴奋简直无法言表,总算是黄天不负有心人。

我们的研究成果是否经得起实践的检验,这个要等到去了澳门赌场才知道,但如果老虎机字典真可行的话,可以这么说,我们能通过它把赌场的老板给赢个精光,它成让我们成为世界首富。