Like Share Discussion Bookmark Smile

J.J. Huang   2021-09-14   天堂私服   瀏覽次數:

天堂私服 | 遊戲帳號分析/Debug (二)「L1J版」

核心版本

  • L1J-TW_3.80c

接續

上一章節遊戲帳號分析/Debug (一),針對創建帳號的部分做部份分析,尚有以下需要做分析。

  • C_AuthLogin.java內的51~59行與69~104
  • 對應一下資料表欄位,稍做分析:
    • access_levle
    • online
    • banned
    • character_slot
    • warepassword
    • OnlineStatus

此章節針對C_AuthLogin.java內的51~59行做除錯(Debug)。

Debug

  • 首先針對51~59行程式碼進行除錯(Duebg)。
  • 初步觀看程式碼大概可以猜測:
    • 判斷此登入IP是否已經有登入在線的帳號。

  • 啟動天堂登入,登入第一個帳號。
    1
    2
    MoroseJJ
    12345678
  • 一路Step Over:步過到51行。
  • 此時觀察第51行的判斷!Config.ALLOW_2PC = false,所以if判斷式是不會再進入的。
  • 在觀察到下方Variables視窗內的Config.ALLOW_2PC = true,是取得Config裡面的設定是否允許雙開(同IP同時連線) ,這邊可以看到值為True

    註:針對Config.ALLOW_2PC 的值為 true 但是在 if 判斷確是 false,是因為在前面加入了一個驚嘆號做相反。

  • 此時不想修改設定檔,只想要暫時將Config.ALLOW_2PC更改為false,讓if判斷式變成true,我們方便除錯(Duebg)。
  • 右建點擊Variables視窗內的Config.ALLOW_2PC,選擇Set Value...
  • 可見Config.ALLOW_2PC變成可變更其值,這邊將其修改為false後,並按下Enter鍵完成輸入。
  • 觀察第51行的判斷已經變更!Config.ALLOW_2PC = true,所以if判斷式是會進入的。
  • Step Over:步過會到52行的for迴圈,成功進入if判斷式內。
  • 但當再次Step Over:步過,會發現離開此迴圈了,跳到61行。
  • 這是因為52行的for是去取得目前在線上得所有帳號,然而目前確實沒有任何的帳號正常登入在線上。
  • 此時使用Resume Program恢復程式,讓帳號正常登入到選擇人物畫面。
  • 再另外啟動天堂,登入第二個帳號。
    1
    2
    Morose
    12345678
  • 一路Step Over:步過到51行。

    註:其實可以在51行下斷點,使用Resume Program恢復程式,除錯會直接到51行這邊。

  • 照著剛剛上方的操作,再來一次,使其可以進入if判斷式內。
  • 然後Step Over:步過到52行的for迴圈,成功進入if判斷式內。
  • 當再次Step Over:步過,會發現進入到53行程式碼。
  • 此時表示52行的for是取得目前在線上得所有帳號,已經有取得剛剛第一個帳號登入所使用的IP = 127.0.0.1
  • 53行程式碼,是在判斷當前登入的帳號所使用的IP是否與目前在線上的帳號的IP是否有相同的?
  • 如果有進入if判斷式,會在55行發送一個登入結果數據包給客戶端。

    註:登入結果 = 8,這個部分,作者尚未研究分析到那邊,請先大概知道即可,後面有再分析客戶端和封包應該會就知道了。

  • 然後到56Return就結束。
  • 此時使用Resume Program恢復程式,讓帳號繼續登入的步驟。
  • 可以看到登入畫面如下,已經被拒絕登入了。

結論

  • 程式碼:
    • src/l1j/server/server/clientpackets/C_AuthLogin.java51~59`行
      • 用於判斷是否允許雙開(同IP同時連線) 的邏輯處理。
  • 設定檔:
    • server.properties
      1
      2
      #是否允許雙開(同IP同時連線) true or false
      Allow2PC = true

結語

這邊的詳細分析一步一步帶除錯模式解析說明這些程式碼,雖然解析後的內容可能不多,但是對於新手的幫助應該是非常大。
可以學習到除錯模式的一些常用的方法功能和技巧。

原創文章真的不易,希望多多支持,感謝。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章結目錄,此處會不定時更新。

免責聲明

  • 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
  • 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有
  • 本部落格文章為研究SQL資料庫與修改JAVA語法使用,非商業用途,亦無做營運事實等任何一切商業行為
  • 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容