查看: 1212|回復: 13

[分享] 關於改Server_Game.jar的時間軸(不用反組譯)

[複製鏈接]

3

主題

20

帖子

1496

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1516
在線時間
23 小時
相冊
0
日誌
0
好友
0
發表於 2026-3-3 11:22 | 顯示全部樓層 |閱讀模式

你只需要下載vs code然後使用copilot選一個較好的LLM,就可以由他幫你改,以下內容是改的過程筆記,這不是要給你看的,是要你把這份筆記丟給AI看,讓它加速更改。

# Server_Game_2.jar Bytecode 修改筆記

## 目標檔案

- **JAR:** `gameserver/Server_Game_2.jar`
- **Class:** `com/lineage/server/model/gametime/L1GameTime.class`
- **欄位:** `private static final long BASE_TIME_IN_MILLIS_REAL`
- **Offset:** `0x0061`(class 檔案內第 97 byte 開始,共 8 bytes,Big-Endian)

## 修改紀錄

| 日期 | 舊值 | 新值 | 有效期限 |
|------|------|------|---------|
| 2026-02-26 | `1057233600000L` (2003-07-03) | `1547121600000L` (2019-01-10) | 至 2030-05-15 |

### Server_Game.jar

| 日期 | 修改項目 | 舊值 | 新值 | 說明 |
|------|---------|------|------|------|
| 2026-02-27 | BASE_TIME (#7) | `1278680880000L` (2010-07-09) | `1547121600000L` (2019-01-10) | 溢出從 2021-11-11 延至 2030-05-15 |
| 2026-02-27 | 到期日 Date (#56) | `1798646400782L` | `4102444800000L` (2100-01-01) | `Date.after()` 到期檢查延至 2100 年 |


## 溢出原理

`L1GameTime.valueOf()` 計算公式:

```java
long t1 = currentTimeMillis - BASE_TIME_IN_MILLIS_REAL;
int t2 = (int)((t1 * 6) / 1000L);  // 結果轉 int,最大 2147483647
```

**溢出時間 = BASE 日期 + (2147483647 × 1000 ÷ 6) ms ≈ BASE + 11.34 年**

> [!IMPORTANT]
> BASE 不能大於當前系統時間,否則 `t1 < 0` 會拋 `IllegalArgumentException`

## 常用值速查

| BASE 值 | 對應日期 (UTC) | Hex (Big-Endian) | 溢出時間 |
|---------|---------------|-------------------|---------|
| `1057233600000L` | 2003-07-03 12:00 | `00 00 00 F6 28 08 7E 00` | 2014-11-05 |
| `1547121600000L` | 2019-01-10 12:00 | `00 00 01 68 37 A2 26 00` | 2030-05-15 |

## 修改步驟(PowerShell)

```powershell
# 1. 備份
Copy-Item "gameserver\Server_Game_2.jar" "gameserver\Server_Game_2.jar.bak"

# 2. 解壓目標 class
New-Item -ItemType Directory -Force "gameserver\_patch" | Out-Null
Push-Location "gameserver\_patch"
jar xf "..\Server_Game_2.jar" "com/lineage/server/model/gametime/L1GameTime.class"

# 3. 二進制替換(修改下面的 oldPattern / newPattern)
$classPath = Join-Path (Get-Location) "com\lineage\server\model\gametime\L1GameTime.class"
$bytes = [System.IO.File]::ReadAllBytes($classPath)

$oldPattern = @(0x00, 0x00, 0x01, 0x68, 0x37, 0xA2, 0x26, 0x00)  # 當前值
$newPattern = @(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)  # 替換成新值

for ($i = 0; $i -le $bytes.Length - 8; $i++) {
    $match = $true
    for ($j = 0; $j -lt 8; $j++) {
        if ($bytes[$i + $j] -ne $oldPattern[$j]) { $match = $false; break }
    }
    if ($match) {
        Write-Host "找到: offset $i"
        for ($j = 0; $j -lt 8; $j++) { $bytes[$i + $j] = $newPattern[$j] }
        [System.IO.File]::WriteAllBytes($classPath, $bytes)
        jar uf "..\Server_Game_2.jar" "com/lineage/server/model/gametime/L1GameTime.class"
        Write-Host "完成"
        break
    }
}

Pop-Location
Remove-Item -Recurse -Force "gameserver\_patch"
```

## 計算新值的 Hex

```powershell
# 將 epoch ms 轉 8-byte big-endian hex
$val = [long1547121600000  # 改成你要的值
$b = [BitConverter]::GetBytes($val); [Array]::Reverse($b)
Write-Host (-join ($b | ForEach-Object { '0x' + $_.ToString('X2') + ', ' }))

# 計算溢出日期
$overflowMs = [long]($val + [math]::Floor(2147483647 * 1000.0 / 6))
$overflow = [DateTimeOffset]::FromUnixTimeMilliseconds($overflowMs)
Write-Host ("溢出時間: " + $overflow.UtcDateTime.ToString("yyyy-MM-dd"))
```




評分

參與人數 1金錢 +10 收起 理由
xp558611 + 10 很給力!

查看全部評分




上一篇︰貓大版部分
下一篇︰搖一搖過任務

3

主題

20

帖子

1496

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1516
在線時間
23 小時
相冊
0
日誌
0
好友
0
 樓主| 發表於 2026-3-5 11:23 | 顯示全部樓層
keiggoo 發表於 2026-3-5 07:49
大大,抱歉,VS CODE我丟檔案上去結果還是不知道怎麼用
抱歉,我真的學不懂,真是,謝謝您的教學,我可能真 ...

別擔心慢慢來


你裝完之後,你用檔案總管開一個資料夾,隨便命名,然後,把JAR丟到資料夾裡,然後用VS把那個資抖夾打開,在我畫面紅框的地方,選擇一個LLM,如果不知要選什麼,就用AUTO,一開始可能也沒什麼額度。

然後,就用自然語言去請他幫你做你想做的事,你可以把我放版上的文件也丟進去,可以加速修改,因為他看得懂那份文件。

例如「幫我改時間軸,請參考我的文字修改JAR檔」

你可能不會看到我紅框的對話塊,那麼你就要先裝外掛。不過新版的VS應該裝好

但還需要註冊一個github的帳號登入
https://github.com/

過程雖然有點多,但如果你是稍為懂的人,應該5分鐘內會搞定。
看那裡卡住再跟我說


這裡字打不下了,我點連結看我說明
https://hackmd.io/@joumingt/SyyQY_ItWl

回復 支持 0 反對 1

使用道具 舉報

1

主題

10

帖子

111

金錢

鑽石VIP

Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
90
積分
121
在線時間
2 小時
相冊
0
日誌
0
好友
0
發表於 2026-3-5 01:41 | 顯示全部樓層
感謝大大分享!!
行動支持。。

回復 支持 0 反對 1

使用道具 舉報

17

主題

75

帖子

1562

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
5
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1615
在線時間
21 小時
相冊
0
日誌
0
好友
0
發表於 2026-3-4 13:39 | 顯示全部樓層
感謝分享,雖然我是自己改原始碼的xd

回復 支持 反對

使用道具 舉報

38

主題

854

帖子

1萬

金錢

巴列斯

Rank: 10Rank: 10Rank: 10

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
60
積分
20388
在線時間
238 小時
相冊
0
日誌
0
好友
5
發表於 2026-3-4 16:24 | 顯示全部樓層
大大,謝謝您,非常感謝您
這個我還是真的看不懂,
我要把Server_Game.jar這個先丟進去給ai對嗎?

回復 支持 反對

使用道具 舉報

4

主題

229

帖子

1萬

金錢

巴列斯

Rank: 10Rank: 10Rank: 10

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
60
積分
16738
在線時間
123 小時
相冊
0
日誌
0
好友
1
發表於 2026-3-4 17:03 | 顯示全部樓層
keiggoo 發表於 2026-3-4 16:24
大大,謝謝您,非常感謝您
這個我還是真的看不懂,
我要把Server_Game.jar這個先丟進去給ai對嗎? ...

打開jd-gui 把.JAR丟進去
選File > Save All > 選你要保存的地方
弄出來就是JAVA了
然後找你要改的JAVA用Notepad++開啟
把代碼餵給AI 再告訴AI你要改啥

確認無誤後編譯回class

右鍵點.JAR選擇開啟檔案> Winrar 壓縮工具
按照路徑找到你剛剛改完編譯回class的檔案
再丟進去就行了

回復 支持 反對

使用道具 舉報

38

主題

854

帖子

1萬

金錢

巴列斯

Rank: 10Rank: 10Rank: 10

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
60
積分
20388
在線時間
238 小時
相冊
0
日誌
0
好友
5
發表於 2026-3-4 17:10 | 顯示全部樓層
臭烘烘船長 發表於 2026-3-4 17:03
打開jd-gui 把.JAR丟進去
選File > Save All > 選你要保存的地方
弄出來就是JAVA了

Notepad++

大大,這個我有,
然後我打開,編輯上面那個大大教學的那樣,然後再丟回去
我試試看,謝謝您,非常感謝

回復 支持 反對

使用道具 舉報

3

主題

20

帖子

1496

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1516
在線時間
23 小時
相冊
0
日誌
0
好友
0
 樓主| 發表於 2026-3-4 18:00 | 顯示全部樓層
keiggoo 發表於 2026-3-4 16:24
大大,謝謝您,非常感謝您
這個我還是真的看不懂,
我要把Server_Game.jar這個先丟進去給ai對嗎? ...

要先會 VS CODE的工具才行

回復 支持 反對

使用道具 舉報

102

主題

197

帖子

7821

金錢

巨蟻女皇

Rank: 9Rank: 9Rank: 9

威望
5
精華
0
貢獻
0
鑽石
0
閱讀權限
55
積分
8028
在線時間
162 小時
相冊
0
日誌
0
好友
0

最佳新人論壇元老

發表於 2026-3-4 18:41 | 顯示全部樓層
昨天我也好奇.跑去下載試用看看
還廷好用的.昨天讓AI在管理者介面
幫我添加一個對玩家列表的玩家贈送物品
寫出來的還真的可以用

管理者介面贈送

管理者介面贈送



回復 支持 反對

使用道具 舉報

38

主題

854

帖子

1萬

金錢

巴列斯

Rank: 10Rank: 10Rank: 10

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
60
積分
20388
在線時間
238 小時
相冊
0
日誌
0
好友
5
發表於 2026-3-5 07:49 | 顯示全部樓層
大大,抱歉,VS CODE我丟檔案上去結果還是不知道怎麼用
抱歉,我真的學不懂,真是,謝謝您的教學,我可能真的不會
抱歉,還有我有抓出那個改時間的檔案用大大說的Notepad++
這個跑出一推字,我也不會,真是爛我
抱歉了,兩位大大的教學

[發帖際遇]: keiggoo 撿了錢沒交公 金錢 降了 2 . 幸運榜 / 衰神榜
回復 支持 反對

使用道具 舉報

38

主題

854

帖子

1萬

金錢

巴列斯

Rank: 10Rank: 10Rank: 10

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
60
積分
20388
在線時間
238 小時
相冊
0
日誌
0
好友
5
發表於 2026-3-5 16:01 | 顯示全部樓層
好的,謝謝大大您的教學
我會繼續努力
感謝您
非常非常謝謝您

回復 支持 反對

使用道具 舉報

12

主題

103

帖子

570

金錢

妖魔

Rank: 4

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
35
積分
673
在線時間
56 小時
相冊
0
日誌
0
好友
1
發表於 2026-3-10 05:11 | 顯示全部樓層
核心混淆加密的也可以改嗎

回復 支持 反對

使用道具 舉報

102

主題

197

帖子

7821

金錢

巨蟻女皇

Rank: 9Rank: 9Rank: 9

威望
5
精華
0
貢獻
0
鑽石
0
閱讀權限
55
積分
8028
在線時間
162 小時
相冊
0
日誌
0
好友
0

最佳新人論壇元老

發表於 2026-3-10 19:41 | 顯示全部樓層
ryu6809 發表於 2026-3-10 02:55
你是怎麼成功的 , 我照它指示去做 , 但最後都打包失敗 , 包出來的JAR 裡面檔案都是java而不是class
...

失敗就把失敗原因跟他說讓他更正
免費的AI就是這樣沒你想像那麼聰明
至少要改的4~6次抵BUG才會成功
只要最後成功測試沒問題
就叫AI把這次成果寫成筆記
下次修改別伺服器就會直接套用或是用他結論那套做一份新的


回復 支持 反對

使用道具 舉報

0

主題

38

帖子

388

金錢

哥布林

Rank: 3Rank: 3

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
30
積分
426
在線時間
8 小時
相冊
0
日誌
0
好友
0
發表於 2026-5-12 13:49 | 顯示全部樓層
哇哦,感谢大佬的分享。满眼星星

回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊會員

本版積分規則

天堂私服列表

45客服

Archiver| 45天堂私服論壇   分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!

45天堂私服發佈站 ©    天堂私服架設教學  提供最新天堂私服最新資訊

流量最高、品質最好、服務最優、玩家首選、最新天堂私服資訊,都在45天堂私服發佈站.    免責聲明

Sitetag
line客服聯繫
掃一掃二碼
Line客服聯繫
24H專人回覆
返回頂部 返回列表