游戏联盟分享平台-全自助-免费游戏分享-七玩网
我的世界《记忆之间》一个全新的MMOARPG模式MC-七玩网
独家出售24-70级附魔端授权、完美六职业、农场BOSS挑战、自定义加密RFS、支持称号图片,同时兼容64位与32位系统。-七玩网
蓝易云香港服务器特惠:29元/月尊享1核1G内存10Mbps CN2线路,大带宽首选,品质推荐,信赖之选!-七玩网

[游戏补丁] TMS273 Center破解思路探討

*** 請注意, 這篇不提供完整的執行檔, 並且這個只破了Center, 其他的破解還在進行中,沒興趣的請直接跳過 ***
(文字內容發表後直接消失..重打中)

先前大老分享的破解問題在於 端口8181必須由Center自己執行,該破解構造了一個沒功能的8181服務導致服務間交互無法進行 (數據庫以及跨頻道服務溝通)。

要正確啟用Center服務首先必須得構造一個假的 /root/.credentials.dat (或者/home/xxxxx/.credentials.dat, 取決於是否為root執行)

該文件本質是存放加密過的 JSON 檔案,裡面兩個數值 clientId以及secretKeyBase64,但因為不知道密鑰,要捏造文件比較困難,因此從加解密的流程下手:

1. 直接呼叫加密函數進行加密再接著解密,地址 0x005555566FC881  這邊esi為2代表解密,改成1後會將讀取到的文字 (應該是放在 [rsp + 0x30])加密後存放在rax,這時候重新構造一次Cipher.init 並且把rax放回[rsp+0x30]即可獲得 “加密後又解密”的文字,但這邊要注意的是文件開頭12位元會作為IV,因此在JSON字串前我個人是塞了iviviviviviv填充。

2. 具體看代碼,但需要自己另外找地方填充代碼:

mov r8, [rsp+0x10]
mov qword [rcx+0xc], 0x80
mov rdi, [rsp+0x20]
mov esi, 1
mov rdx, [rsp+0x28]
mov [rsp+0x38], rcx // RCX必須保存
call 0x555558a2d6c0


mov rdi, [rsp+0x20]
mov rsi, [rsp+0x30]
call 0x555558a270a0

mov [rsp+0x30], rax
mov rcx, [rsp+0x38]

//重新做一遍原本的代碼流程
mov r8, [rsp+0x10]
mov qword [rcx+0xc], 0x80
mov rdi, [rsp+0x20]
mov esi, 2
mov rdx, [rsp+0x28]
call 0x555558a2d6c0


mov rdi, [rsp+0x20]
mov rsi, [rsp+0x30]
call 0x555558a270a0

lea rsi, [r14+0x84d71e0]
mov     rdi, rax
call    0x555556DCB790
...

 

3. 這個步驟正確完成後服務端不再關閉,但8181端口依然沒起來,應該是因為遠端的授權驗證沒通過,繞過的方法首先在 0x5555587484fc 處有4個條件轉跳需要nop,而0x555558748672這個mov也必須nop。

4. 0x000555556304EAF處直接轉跳到0x555556304fda。

5. 防串改以及防調試在 0x05555566F6F02 地址直接把r14+0x7a30882改成1並且就近轉跳 (有個AntiHack的call可以nop掉) 返回。

6. 0x555556332470這個是isAuthenticated判斷是否驗證,直接在最近的轉跳無條件跳到0x5555563326DB,原本的cmp rax, rcx改成cmp rax, rax

7. 應該可以看到服務端在8181咝校獿ogin服務連上之後會卡者或者出現Auth failed之類的,這是因為Login這邊會連到另外的驗證服務 (於16400端口),這部分的破解仍在進行,完成後會再發一篇分享給大家。

8. 目前的觀察是 0x0005555561D1D98 這邊是processAuthPacket,兩個分支,預設的會先encode1(0),另一個分支encode1(1)才會讓Login服務跑起來,不過還在猜測正確的咝羞壿嬛校烙嫳仨毜孟韧ㄟ^授權驗證,這部分再看看怎麼繞過。

un.png

© 版权声明
THE END
文章不错?点个赞呗
点赞6 分享
评论 共3条

请登录后发表评论