顯示具有 心情是行在海中央的船 標籤的文章。 顯示所有文章
顯示具有 心情是行在海中央的船 標籤的文章。 顯示所有文章

2009年7月21日 星期二

我要畢業了~~

7/21是我碩士論文口試的日子,在眾老師的用心提點,總算完成碩士成就,冠上碩士稱號,智力+3,可惜我偏愛肌肉系職業,IQ可能沒什麼用,哈哈哈...,不管如何感謝這些年來所有給予鼓勵的老師、同學們、讓我三年來有飯吃的DCI同仁們、還有感謝老婆孩子,當然,要感謝的人太多了,只好謝天吧[1]

7/21也是老婆生日的日子,所以今天算來是雙喜臨門,考完經過樂透站,順手買了幾張,來個三喜臨門吧~~

[1]..............

2009年7月7日 星期二

迫在眉梢

剩下兩周就要碩士論文口試了,現在最擔心的竟然不是論文還沒寫完+還沒校稿,而是: 口試當天要買什麼孝敬委員們啊? 咖啡? 冷的熱的? 要加蛋糕甜點嗎? 我會不會太奇怪啊?

2009年6月8日 星期一

外掛之後

碩士論文做的是關於外掛的研究,為了抓外掛的資料,忽然很感佩有"再生"功能設計的遊戲,例如"Quake系列",有很多玩家會把自己的遊戲過程PO上網,省了我很多找logs的時間,可是,對於沒有的絕大部分遊戲怎麼辦?起源於老闆的一句話"你有沒有辦法取得XX遊戲的按鍵紀錄?",當時想說,取按鍵紀錄?好像只要偷偷利用SetWindowLong函式,然後把處理訊息的WndProc換成自己的,接下來不是只要等在這個函式中就好了?

得意算盤打得精,誰知道這是一個很長的路,走了大概兩個月吧,要讓SetWindowLong可以執行,需要把自己的程式注入對方程式中,寫到最後,變成在寫外掛了,換掉WndProc? 簡單,五分鐘搞定,第一個犧牲的對象是某跳舞遊戲,但是為了精確對時,讓我延畢了一學期,本來以為不會再碰外掛的事了,忽然老師又給了個想法"你可不可以利用LUA抓取山口山的部分截圖?",想想,LUA?我會,抓圖?簡單,只要取得山口山的Direct3D繪圖裝置就搞定了,好吧,就接下來了。

這次,更累了,攔不到山口山的Device!!!

Device不是從IDirect3D9生出來的嗎?怎麼山口山這麼奇怪,硬是另闢蹊徑,問遍了GOOGLE,有文章提到可以從COM物件創建方面攔截,但是...失敗。老師說可以去掃描記憶體,我試了,在山口山程式記憶體中翻山越嶺,守著電腦執行4個多小時後,放棄了,就算成功,誰會願意每次執行山口山都要等個幾個小時? 好幾個禮拜,對著山口山這個大怪物,執行又跳出,跳出又不死心繼續執行,最後發現,我快到了極限,想不出任何的方法,只好準備向老師自首。有一句話是對的,山窮水盡疑無路,柳暗花明又一村,正當要放棄的時候,一個很偶然的錯誤,正當我的外掛開始跑,而不小心把山口山切成錯誤的視窗模式,把它改回全螢幕獨占模式時,莫名奇妙忽然抓到了繪圖裝置,一切都搞定了,好想哭!!後來修修改改,用了一個很醜的方法,但是總是可以透過LUA來自動執行抓圖,沒圖沒真相...


掛人程式,感覺沒那麼難,真的難的是,開了一扇門後面還有無數扇門,要跟原設計者鬥智鬥力鬥時間,我覺得,最後應該還是原設計者落下風,為什麼? 雖然我很累,花了好幾個月,可是他們更慘,花了好幾年來完成遊戲,被人破解,也不能怪他們了,那要怪誰? 微軟的濫OS吧,可是我得感謝微軟,沒有這個爛OS,我恐怕要等頭髮花白才有辦法畢業吧~~

2009年1月8日 星期四

0.01秒的代價

我的畢業論文,跟跳舞機遊戲相關,就是那種只要聽音樂,然後按上下左右的遊戲,論文論什麼呢? 就是眼睛閉起來,只看上下左右按下的時間,跟正確時間的相關關係,來推測現在是BOT在玩還是人類在玩? 聽起來很玄,但是經過兩年學校的洗禮,發現方法還頗為容易理解,就是線性代數與資料探勘的應用,此篇不是技術文章,所以不用太擔心我會介紹這兩者。

首要工作呢,就是要蒐集遊戲中的資料,來推估一些準確度上的特性,以作為分類的依據,因為不方便找開發公司要玩家資料(一方面開發公司也會以千百種理由拒絕你),因此腦筋動到駭別人程式的方面。

從九月到現在,駭客程式寫了一個多月,難歸難,總是學到一些東西,推算了一些可能,給老師打包票,誤差應該在0.033秒內,老師面有難色,他委婉地希望壓到0.01秒以內。

10月起就開始撰寫在別人家程式裡面,錄製玩家資料,與推算正確時間點,那是瞎子摸象的過程,我怎麼知道對方程式怎麼寫? 怎麼取時間? 標準時間又是什麼? 程式邏輯改了又改,每測一次單位時間是5分鐘,因為每次開始前,都要經過長長的更新時間,不能用除錯工具,當了不知道為什麼,錯了只能從LOG去猜,要怎麼調整,都是為了那0.01秒。

摸索來到了12月,沒錯,一個月內,只在喬公式,猜測這邊可能加個係數,那邊可能多除個4,無聊且痛苦的日子,誤差一直在+-0.033秒左右徘迴,後來問到指導教授一句: "對方遊戲公司有跟我們合作,所以可以去找他們解答...",一時間愈哭無淚,我怎麼不早問,白白浪費了這麼久,花在猜測的時間上。

現在1月了,情況如何? 是的,有改善,所有錄製時間的誤差最大也不超過0.01秒,我過關了嗎?

沒有,原因有兩個
(1) 不要忘了,蒐集資料的程式只是第一步,我的論文書面資料隻字未動
(2) 老師很好心,找人與我共同研究,他做分析,但是0.01秒關係到按鍵分數的評分一個等級,會造成論文結果的誤差

所以需要把這個0.01秒的誤差解決...

學校論文繳交時間是2/2日,必要條件是,通過口試+繳交總圖書館4x頁論文正本,扣除過年,好了,只剩下十來天,我這裡先上演mission impossible4了! 結果這0.01秒的代價,就是再花半年的時間+一學期註冊費60,000元+沒辦法專職工作的損失.....好貴的0.01秒啊