首頁 短篇

偽裝者I

第33章 老虎機字典

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

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

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

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

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

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

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

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

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

  第四個是技術(shù)上的問題。

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

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

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

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

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

  后來我們發(fā)現(xiàn)這種做法不是很明智,因為越往下看,發(fā)現(xiàn)問題點越多,探討了半天也討論不出個結(jié)果來,很多時候都直接陷入死胡同和迷失在茫茫的代碼海里。

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

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

  經(jīng)過了長達(dá)一個月的苦心研究,終于我們在二零一七年四月十六號的晚上,揭開了老虎機神密的面紗,我感覺那段時間,我起碼死了幾億的腦細(xì)胞,頭發(fā)都不知道白了多少根,加良更慘,差點就謝頂了。

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

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

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

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

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

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

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

  于是,我們費了九牛二虎之力根據(jù)老虎機的核心算法,仿寫了一個叫老虎機字典的程序,用‘字典’二字來形容我們那個破解的程序很貼切,因為只要人為給它輸入時間,它便能根據(jù)相應(yīng)算法,產(chǎn)生老虎機最后隨機數(shù)的結(jié)果,它就跟字典一樣,能查看所有時間點的老虎機產(chǎn)生的結(jié)果。

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

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

  

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