首頁(yè) 短篇

偽裝者I

第33章 老虎機(jī)字典

偽裝者I 代碼先生 2365 2020-12-12 12:24:05

  我們從圖書館里借了很多關(guān)于硬件方面的書,經(jīng)過(guò)一個(gè)星期的研究,費(fèi)了九牛二虎之力,終于把代碼取出來(lái)了,還放到了我的筆記本電腦上。

  取出代碼后的第二步便是研究代碼,那是我們老虎機(jī)計(jì)劃最重要的一步,然而我們碰了很多預(yù)想不到的問(wèn)題。

  第一個(gè)是警察查房,二零一七年時(shí)深圳出臺(tái)了很多關(guān)于房子宏觀調(diào)控的政策,于是乎,我們公寓附近很多平民租房紛紛改建為公寓,在我們那一片區(qū)域,很多租房被逼搬進(jìn)搬出,人口流動(dòng)量特別大,警察隔三叉五便會(huì)查房作人員流動(dòng)登記。我們很擔(dān)心的是被警察認(rèn)出那是老虎機(jī)的主板,于是每次研究時(shí)都會(huì)將大門關(guān)上,將窗戶窗簾拉下,像做賊一樣。

  第二個(gè)是季純?cè)谀菚r(shí)搬到了我們公寓,她就住我們隔壁602,她在她原公寓沒(méi)有等到那個(gè)的男孩子,就決定離開(kāi)了。搬家是個(gè)麻煩的混賬事,我們?nèi)齻€(gè)男生幫季純搬家整理東西花了整整一個(gè)周末的時(shí)間。

  第三個(gè)是我們工作上的事分了我們很多心神,過(guò)完年后,我們公司準(zhǔn)備進(jìn)軍3D打印機(jī)這一塊,王老板很看好3D打印機(jī)市場(chǎng)。

  二太子對(duì)于3D打印機(jī)質(zhì)量這塊抓得特別嚴(yán)格,甚至到達(dá)一種吹毛求疵地步,為了保證產(chǎn)品的質(zhì)量以及生產(chǎn)數(shù)據(jù)的可靠性,他要求我們深圳分公司仿寫歐美一款叫菲馬系統(tǒng)的軟件,這菲馬系統(tǒng)其實(shí)是潛在的失效模式及后果分析幾個(gè)英語(yǔ)單詞首字母的縮寫,簡(jiǎn)拼成菲馬系統(tǒng)。

  為什么不直接購(gòu)買這套系統(tǒng),其一是因?yàn)閲?guó)外軟件的版權(quán)費(fèi)太昂貴,維護(hù)起來(lái)也相當(dāng)麻煩;其二是菲馬系統(tǒng)作用的對(duì)象比較特殊,不具備大眾化,因此這款軟件在國(guó)內(nèi)連個(gè)破解版的都沒(méi)有;其三,也是最重要的一點(diǎn),最費(fèi)時(shí)費(fèi)力的是就連菲馬系統(tǒng)怎么使用都要軟件公司派專人過(guò)來(lái)現(xiàn)場(chǎng)教,可以說(shuō)相當(dāng)麻煩;斟酌再三,二太子準(zhǔn)備動(dòng)用公司資源人力仿寫此系統(tǒng)。

  這菲馬系統(tǒng)比較龐大,界面和框架本身比較復(fù)雜,其中有很多的圖形處理界面,于是我們過(guò)完年后,便忙起這事來(lái),而且忙得焦頭爛額的,所以很多時(shí)候加班加到很晚,根本沒(méi)時(shí)間做其他的事兒。

  第四個(gè)是技術(shù)上的問(wèn)題。

  我們?nèi)〕鰜?lái)的代碼是機(jī)器碼,也就是二進(jìn)制代碼,那里面全是0101字樣,密密麻麻的,連斷句都不知怎么斷,完全沒(méi)有可讀性。于是,我們先作了反編譯處理,將那些機(jī)械代碼反編譯成能易理解和讀懂的更高級(jí)些的匯編語(yǔ)言代碼。

  雖然反編譯的代碼容易理解很多,但也存在弊端。

  通常來(lái)說(shuō),程序員在編寫程序時(shí)通常會(huì)有些注釋,解釋,標(biāo)記,以便于日后自己或他人在閱讀自己代碼時(shí),知道當(dāng)初這樣設(shè)計(jì)的用意和最初目的,但在反編譯后,這些類似于路標(biāo),書簽一樣的東西全部沒(méi)有了。

  用一句話來(lái)概括我們遇到的技術(shù)難點(diǎn)是第一次接觸老虎機(jī)這種機(jī)器,沒(méi)有說(shuō)明文檔,也沒(méi)有輔助文件,連匯編代碼中的注釋語(yǔ)句都沒(méi)有,想通過(guò)直接閱讀代碼方式,完全弄懂整個(gè)老虎機(jī)的設(shè)計(jì)流程以及所有細(xì)節(jié),那簡(jiǎn)直是不可能的事兒。

  一開(kāi)始我的研究工作走入了一個(gè)誤區(qū),我們采用剝繭抽絲的方法,想將每一句代碼從頭到尾都弄得一清二楚,我們一行一行的往下閱讀著代碼,每閱讀完一行,便會(huì)在行后面加上注釋,有不理解的地方,會(huì)在行后打個(gè)問(wèn)號(hào),希望看完所有代碼重新回頭再看時(shí)能有所收獲。

  后來(lái)我們發(fā)現(xiàn)這種做法不是很明智,因?yàn)樵酵驴矗l(fā)現(xiàn)問(wèn)題點(diǎn)越多,探討了半天也討論不出個(gè)結(jié)果來(lái),很多時(shí)候都直接陷入死胡同和迷失在茫茫的代碼海里。

  后來(lái)我們改變了策略,用一個(gè)行業(yè)話來(lái)形容我們的新策略叫關(guān)鍵代碼段。

  老虎機(jī)最核心最關(guān)鍵的是如何隨機(jī)產(chǎn)生數(shù),所以我們只需要找到產(chǎn)生隨機(jī)數(shù)的關(guān)鍵代碼,并弄懂它們即可攻破老虎機(jī),我們當(dāng)時(shí)是那樣想的,后來(lái)實(shí)事證明,我們當(dāng)時(shí)的決定非常明智。

  經(jīng)過(guò)了長(zhǎng)達(dá)一個(gè)月的苦心研究,終于我們?cè)诙阋黄吣晁脑率?hào)的晚上,揭開(kāi)了老虎機(jī)神密的面紗,我感覺(jué)那段時(shí)間,我起碼死了幾億的腦細(xì)胞,頭發(fā)都不知道白了多少根,加良更慘,差點(diǎn)就謝頂了。

  我們?nèi)〉贸晒ψ钪匾囊稽c(diǎn)是我們豐富的開(kāi)發(fā)經(jīng)驗(yàn)給了我們很大的幫助,產(chǎn)生隨機(jī)數(shù)的算法在編程里經(jīng)常要用到,在開(kāi)發(fā)菲馬系統(tǒng)時(shí),我就曾用到。

  在我所從事的高級(jí)語(yǔ)言的開(kāi)發(fā)中,具體怎么實(shí)現(xiàn)產(chǎn)生隨機(jī)數(shù)呢?當(dāng)然是調(diào)用隨機(jī)函數(shù),然后是人為輸入一個(gè)數(shù)字作為種子,由不同的種子和其他復(fù)雜的數(shù)據(jù)融合碰撞后,得到一個(gè)看似隨機(jī)的結(jié)果,這便是一般隨機(jī)數(shù)產(chǎn)生的核心算法。在這種產(chǎn)生隨機(jī)數(shù)的算法中,種子的選擇很重要,因?yàn)橄嗤姆N子會(huì)產(chǎn)生相同的結(jié)果,所以這隨機(jī)數(shù)其實(shí)是一個(gè)偽隨機(jī)數(shù),而并非真正意義上的隨機(jī)數(shù)。而我通常會(huì)以服務(wù)器的實(shí)時(shí)時(shí)間為種子,因?yàn)閷?shí)時(shí)的時(shí)間永遠(yuǎn)不會(huì)重復(fù),這樣才能保證最大化接近隨機(jī)。

  瑞典著名計(jì)算機(jī)科學(xué)家Wirth提出一個(gè)很經(jīng)典的理論是說(shuō):程序其實(shí)是等于數(shù)據(jù)結(jié)構(gòu)加算法,這個(gè)理論套用任何計(jì)算機(jī)上都實(shí)用,包括老虎機(jī)。

  老虎機(jī)內(nèi)部隨機(jī)數(shù)產(chǎn)生算法跟我們高級(jí)語(yǔ)言的算法極其類似的,它里面有一個(gè)叫隨機(jī)數(shù)生成器的東西,它跟隨機(jī)函數(shù)的功能很類似,能產(chǎn)生無(wú)法預(yù)測(cè)的、無(wú)窮的隨機(jī)數(shù)列。

  隨機(jī)數(shù)生成器也需要種子,那么它的種子是如何來(lái)的呢?我們通過(guò)分析得知,它其實(shí)來(lái)源于老虎機(jī)內(nèi)部芯片記錄的時(shí)間。

  同樣的問(wèn)題,這個(gè)虎機(jī)內(nèi)部芯片記錄的時(shí)間又是怎么來(lái)的呢?我們又通過(guò)分析得知,它是通過(guò)外部人員下注時(shí)按下拉桿的時(shí)間,這個(gè)時(shí)間被會(huì)記錄下來(lái),并作為參數(shù)傳遞給隨機(jī)數(shù)生成器。

  所以,老虎機(jī)最終產(chǎn)生的結(jié)果依賴于偽隨機(jī)數(shù)生成器,偽隨機(jī)數(shù)生成器依賴于內(nèi)部芯片記錄的時(shí)間,內(nèi)部芯片記錄的時(shí)間取決于外部拉下拉桿的那個(gè)時(shí)間點(diǎn),這就是老虎機(jī)奧秘所在。

  于是,我們費(fèi)了九牛二虎之力根據(jù)老虎機(jī)的核心算法,仿寫了一個(gè)叫老虎機(jī)字典的程序,用‘字典’二字來(lái)形容我們那個(gè)破解的程序很貼切,因?yàn)橹灰藶榻o它輸入時(shí)間,它便能根據(jù)相應(yīng)算法,產(chǎn)生老虎機(jī)最后隨機(jī)數(shù)的結(jié)果,它就跟字典一樣,能查看所有時(shí)間點(diǎn)的老虎機(jī)產(chǎn)生的結(jié)果。

  研究出成果的那一天,我們臉上的興奮簡(jiǎn)直無(wú)法言表,總算是黃天不負(fù)有心人。

  我們的研究成果是否經(jīng)得起實(shí)踐的檢驗(yàn),這個(gè)要等到去了澳門賭場(chǎng)才知道,但如果老虎機(jī)字典真可行的話,可以這么說(shuō),我們能通過(guò)它把賭場(chǎng)的老板給贏個(gè)精光,它成讓我們成為世界首富。

  

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁(yè)
返回書頁(yè)
指南