免IE進入遊戲(上):用以窺探launch.dat的一句代碼

日服的啟動流程和港台服的很不同。日服需要先到IE登入後從IE啟動更新程式,版本檢查完成後遊戲啟動時會自動登入。這個設計的用戶體驗是很不錯的,但是隨著時代的變遷”必須使用過時的IE”這點十分令人頭痛(beanfun:在說我嗎)

於是這裡就是要把這個惱人的設定去掉~

這裡要介紹的第一個方法是白撞XD

首先準備老版本的啟動器(沒有被強迫打開IE的),打開launch.dat

使用notepad下開,顯示如下:

???????????????????????????????????????????????????? 

明顯是沒有用的,打開 010Editor

00 01 DC FF DF FF D8 FF DC FF D8 FF 93 FF 96 FF
91 FF 9A FF DF FF 96 FF 8C FF DF FF 9C FF 90 FF
92 FF 92 FF 9A FF 91 FF 8B FF D1 FF F2 FF F5 FF
DC FF DF FF 9A FF 91 FF 9C FF 90 FF 9B FF 96 FF

這裡可以抓到一個模式,除了起首的00 01之後全都是XX FF

然後我們開始白撞XDD 把其中一個FF換成FE會怎樣

足夠歐洲的話,我們會打開網頁失敗。仔細看一下發現網址錯誤了,當中的一個”i“被換成了”ũ“,因此推斷

  • 這些 XX FF全是字符中的一部分
  • 一個字佔用2 byte,大機率是 UTF16

然後查一下ASCII編碼表

比如,ASCII 65 63 6F對應 eco這3個字,換成UTF16BE編碼就是00 65 00 63 00 6F

順藤摸瓜,只要再多一次實驗就能將軍。

"eco": 00 65 00 63 00 6F
"ddo": 00 64 00 64 00 6F

在剛好那個能影響網址的位置,旁邊做一個+1,另一邊做-1。結果做了+1那個的字母變成了-1,做了-1那個的字母變成了+1。總而言之,就是相反的。

用node. js寫了一行代碼

運行後結果如下:

開首的00 01經過Xor計算後變成了FF FE,也就是對應LE的BOM。大部分的文本編輯器都能正確地憑BOM辨認。如果開起來還是亂碼,動手調成UTF16LE即可~

另一個方法是在010Editor中 Tools > Hex Operations > Binary Xor

這就連寫代碼的工夫也省掉了(拍手…

幾項值得修改的項目:

  • LAUNCH_SINGLESIGNON_ENABLE 改成 "0" 
  • LAUNCH_UPINFO_URL 改成 www.google.com,
  • LAUNCH_OUTPUTLOG_VERCHK_OK 改成 "Hello World!" 

完成後重新轉回去,效果如圖

PS: 另外也粗略分享一下不需要賭運氣的思路:
Olly打開launch.exe斷點設在ReadFile上面

歡樂送找也不用找。大步跟下去幾次就能注意到邏輯近在咫尺。

1

Leave a Reply

Your email address will not be published. Required fields are marked *