> ==== 写在前面 ====
>
血盟成员「某某某」登入游戏。> 还记得当初只要简单修改 Systemmsg-tw.dat 档案, 就可以让血盟成员登入讯息, 更加的符合人性, 至少, 可以看出是谁上线了.
> 3章之后, 由于 DAT 档加密改变, 之前的 L2Decrypt 早已无法使用.
> 现在纵然透过
L2encdec 可以解开 DAT 档的外层加密, 但由于资料封装的关系, 解密的 DAT 档仍为二元档, 难以直接编辑.
> LushiferEvil板友在
无限远教学中, 也提到了这个困难, 但是他针对的是 L2Decrypt 新版, 而我的着眼点不同.
> 由于 L2Decrypt 久未更新, 因此针对 DAT 档的编辑, 迟迟无法达成. 直到后来
>
Dstuff 网站又释出了
L2asm & disasm (v0.98) 软体, 用来进行 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 后面增加五个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...
> ==== 成品(写给懒的看上面那堆的) ====
> 1.
无限远+锁右键+user.ini除雾+穿墙+血盟登入讯息显示ID 懒人更新包(1.8M)> 注意 这边只附上有修改过的, 抓回去直接把里面档案解压缩到
C:\Program Files\NCTaiwan\天堂II序幕\system中覆盖原始档案
> 提供给完全未安装过无限远, 想一次搞定的人下载. 不包含原先system资料夹内未更动档案, 所以大小小很多.
> 2.
Systemmsg-tw.dat修改显示ID(40K)> 给已经装好无限远, 只需要血盟登入讯息的人使用, 使用方法同上.
> 3.
Systemmsg-tw.dat修改显示ID+字型颜色象牙白(40K)> 下午闲来无事做的, 因为有朋友反应登入的字样很容易洗频的时候没注意到
> 改成跟种田/瞬杀发动时相同的颜色.
> 4.
无限远+锁右键+user.ini除雾+穿墙+血盟登入讯息显示ID+象牙白 超级懒人包(15.1M)> 将
C:\Program Files\NCTaiwan\天堂II序幕\资料夹中system子目录完全砍掉, 用这个档案解压出来的system资料夹取代即可
> 提供给完全未安装过无限远, 不清楚哪些档案要保留, 上面的三个怎么弄都不行,
> 已经快要火大的人下载.
> 有人说上面的连结有问题(虽然我点还是可以), 那我放另个位置你们自己选着下吧
>
懒人包(1.8M) - TANet>
血盟登入讯息+ID(40K) - TANet>
血盟登入讯息+ID+象牙白(40K) - TANet>
超级懒人包(15.2M) - TANet> ==== 写在最后 ====
> 盯了一天的 Hex code, 头有够晕, 最后总算是完成了, 希望能够抛砖引玉, 看还没有什么需要变动的讯息, 再做修改啰.
> 补充一下, 目前要更动"讯息字型的颜色"比较简单, 要改变字串内容比较难.
> 要播放声音也还算容易, 例如想要的话也可以把好友登入的音效套用到血盟成员登入上面, 也可以把血盟成员登入游戏这句话改成紫色. DAT能解开对于客制化用户端是非常重要的一步. :)