血盟成员「某某某」登入游戏。还记得当初只要简单修改 Systemmsg-tw.dat 档案, 就可以让血盟成员登入讯息, 更加的符合人性, 至少, 可以看出是谁上线了.
3章之后, 由于 DAT 档加密改变, 之前的 L2Decrypt 早已无法使用.
现在纵然透过
L2encdec 可以解开 DAT 档的外层加密, 但由于资料封装的关系, 解密的 DAT 档仍为二元档, 难以直接编辑.
LushiferEvil板友在
无限远教学中, 也提到了这个困难, 但是他针对的是 L2Decrypt 新版, 而我的着眼点不同.
由于 L2Decrypt 久未更新, 因此针对 DAT 档的编辑, 迟迟无法达成. 直到后来
Dstuff 网站又释出了
L2asm & disasm (v0.981) 软体, 用来进行 DAT 档的资料解封.
无奈的是, 这个软体并"不支援"万国码(UNICODE), 因此只能用来处理美版天二, 中文版不论加密或解密都会产生错误结果.
由于 L2asm/L2disasm 这套软体的确可以解开DAT档的封装, 但dstuff讨论区中, 该作者并无打算改写程式让其支援万国码, 亦无打算释出程式库, 这点使的透过L2asm/L2disasm 软体来处理中文版DAT档有相当难度.
知道了这个消息之后, 相当振奋, 因为代表的DAT挡不是不能解, 而只是目前没有适合的软体协助; 在研究了该软体之后, 我参考他的DDF format以及旧版本解开的systemmsg-tw.dat , 进行直接暴力破解DAT档, 经过一天非常痛苦的 Hex 编辑后, 终于把他完成了.
==== 作法(写给有兴趣想自己作的人看) ====
1. 所有的DAT档, 在原始状况下都是加密的(v413), 所以在做任何操作之前, 请使用L2encdec解开. 这边也代表着, 没有进行 L2encdec 的 L2.exe Patch, 将无法套用这个修改. 所以第一步就是先参考LushiferEvil那篇文章, 套用修改.
2. 将资料夹中的 systemmsg-tw.dat 档透过L2encdec解密, 得到 dec-systemmsg-tw.dat
> 3. 参考 L2asm/disasm 中, systemmsg-e.ddf内容(可能需要配合阅读MANUAL), 可以得知 systemmsg.dat 的档案储存格式
4. 拿出 Hex Editor(我是用UltraEdit), 寻找 3001000001000000, 这代表着血盟成员登入游戏时所引发的系统讯息的 id/UNK_0 (计8bytes)
00064a0: 0030 0100 0001 0000 008a 4088 df76 1062 .0........@..v.b
00064b0: e154 7b76 6551 4a90 3262 0230 0000 0000 .T{veQJ.2b.0....
这串火星玩意就是血盟成员登入游戏这句话
(也可以直接找我附上的位址)
5. 透过 Hex Insert 在 0x00064b2 后面增加10个bytes, 内容为
0c30 2400 7300 3100 0d30. 这个代表着"「某某某」"字样. 修改完如下:
00064a0: 0030 0100 0001 0000 008a 4088 df76 1062 .0........@..v.b
00064b0: e154
0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
00064c0: 4a90 3262 0230 0000 0000 0000 799b b0ff J.2b.0......y...
6. 由于变更了字串长度 因此前面也需要做变动如下:
00064a0: 0030 0100 0001 0000 008
f 4088 df76 1062 .0........@..v.b
00064b0: e154 0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
7. 最后这区的成果应该长这样:
00064a0: 0030 0100 0001 0000 008f 4088 df76 1062 .0........@..v.b
00064b0: e154 0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
00064c0: 4a90 3262 0230 0000 0000 0000 799b b0ff J.2b.0......y...
8. 最后透过 l2encdec -e 413 dec-systemmsg-tw.dat systemmsg-tw.dat 加密即可
==== 成品(写给懒的看上面那堆的) ====
1.
7/3系统调整+env.int除雾+全彩讯息+无限远+穿墙 更新包注意 这边只附上有修改过的, 抓回去直接把里面档案解压缩到
C:\Program Files\NCTaiwan\天堂II序幕\system中覆盖原始档案
提供给完全未安装过无限远, 想一次搞定的人下载. 不包含原先system资料夹内未更动档案, 所以大小小很多.
2.
7/3 Systemmsg-tw.dat修改显示ID+字型颜色象牙白下午闲来无事做的, 因为有朋友反应登入的字样很容易洗频的时候没注意到
改成跟种田/瞬杀发动时相同的颜色. 抓下来后请改档名为 systemmsg-tw.dat (前面的部份拿掉), 然后拷贝入system资料夹.
需要先做过l2encdec修补3.
7/3 Systemmsg-tw.dat修改全彩讯息抓下来后请拷贝入system资料夹.
需要先做过l2encdec修补4.
7/3系统调整+env.int除雾+全彩讯息+无限远+穿墙 超级懒人包将
C:\Program Files\NCTaiwan\天堂II序幕\资料夹中system子目录完全砍掉, 用这个档案解压出来的system资料夹取代即可
> 已经快要火大的人下载.
有人说上面的连结有问题(虽然我点还是可以), 那我放另个位置你们自己选着下吧
7/3血盟登入讯息+ID+象牙白7/3全彩讯息7/3系统调整+env.int除雾+全彩讯息+无限远+穿墙 更新包7/3系统调整+env.int除雾+全彩讯息+无限远+穿墙 超级懒人包==== 写在最后 ====
盯了一天的 Hex code, 头有够晕, 最后总算是完成了, 希望能够抛砖引玉, 看还没有什么需要变动的讯息, 再做修改啰.
补充一下, 目前要更动"讯息字型的颜色"比较简单, 要改变字串内容比较难.
要播放声音也还算容易, 例如想要的话也可以把好友登入的音效套用到血盟成员登入上面, 也可以把血盟成员登入游戏这句话改成紫色. DAT能解开对于客制化用户端是非常重要的一步. :)