- mir3源代码研究
- 第一讲:韩国3.0传奇wil文件说明
- Animationsc.wil游戏里一些动画的图片(灯台、晾的衣服、椰子树等)
- Cliffsc.wil各种岩石、岩石与草地结合的图片
- DMon-1.wil怪物被麻痹的各种动作图
- DMon-1.wil同上怪物的阴影图
- Dungeonsc.wil一些岩石(蚂蚁洞)的图片
- Equip.wil各种物品在装备栏里的图片
- Fmmap.wil陆地上所有地图的小地图图片
- Furnituresc.wil房间里的物品及阶梯的图片
- GameInter.wil游戏界面所看到的图片
- Ground.wil物品在地面所显示时的图片
- Horse.wil三种马的图片
- Housesc.wil房子的图片
- Innersc.wil房子的四壁、房顶的图片(沙漠、土城房子)
- Interface1c.wil刚进入游戏到人物选择所看到各个图片
- Inventory.wil在商店里买东西时所显示的物品的图片
- Magic.wil各种魔法效果图
- M-Hair.wil男性头发图
- M-Helmet1.wil男性所戴头盔的各个方向的图片
- M-Hum.wil男性的各种模型、动作图片(裸身、穿衣服、骑马、钩鱼)
- MIcon.wil魔法图标的图片
- mmap.wil小地图的地图
- Mon-1~13.wil所有怪物的图片
- MonS-1~13.wil所有怪物的阴影图片
- M-Weapon1~4.wil男性拿在手里的武器的各个方向的图片
- Npc.wil游戏里NPC的图片
- Npcface.wilNPC的脸面图
- object1~2c.wil建筑物及一些NPC前杂物的图片
- ProgUse.wil在装备栏所看人物裸身图像及头发的图片
- SmObjectsc.wil一些建筑物、树木、杂物的图片
- SmTilesc.wil地面上的小图片
- Tiles30c.wil城内地砖、草地、草池边的图片
- Tiles5c.wil大海、海与陆地交错地、陆地表面的图片
- Tilesc.wil同上
- Wallsc.wil城墙的图片
- WM-Hair.wil女性头发图片
- WM-Helmet1.wil女性所戴头盔的各个方向的图片
- WM-Hum.wil女性的各种模型、动作图片(裸身、穿衣服、骑马、钩鱼)
复制代码- WM-Weapon1~4.wil女性拿在手里的武器的各个方向的图片
- 第二讲:interfacec2.wil并不能用gameinter.wil替代
- 请看韩国源代码:
- m_pxInterImg->NewLoad(".\\Data\\gameinter.wil");
- m_xInterImgEx.NewLoad(".\\Data\\interfacec2.wil");
- 显然是在加载了gameinter.wil之后再加载interfacec2.wil,不可以简单替换掉!
- 第三讲:关于界面中文I/O问题的解决
- //韩文
- //HFONTCreateGameFont(LPCSTRszFontName,INTnHeight,INT
- nWidth=0,INTnWeight=FW_NORMAL,BOOLbItalic=FALSE,
- BOOLbULine=FALSE,BOOLbStrikeOut=FALSE,DWORDdwCharSet
- =HANGEUL_CHARSET);
- //中文
- HFONTCreateGameFont(LPCSTRszFontName,INTnHeight,INT
- nWidth=0,INTnWeight=FW_NORMAL,BOOLbItalic=FALSE,
- BOOLbULine=FALSE,BOOLbStrikeOut=FALSE,DWORDdwCharSet
- =GB2312_CHARSET);
- 第四讲:mir3的wil文件格式破译
- 下面是Interface1c.wil文件的16进制码,该文件14959571字节。
- 0100494C49422076312E302D57454D414445000000008813D007000077572AC08002E001E8FFF0FF30E8FF6800C6500400000000005400C0008A01C1004E00010020006110E3204431453165316639A641C749C751C75186416539653944310321E320E320C220A218C318A2188210811082108210410820006110A21882106110611061106110611061106110611061106108410841084108410841084108410841082108400841084108610861104108200840084108610861084108200001002000200020002000200020002000200020006108C310C3102100C000A8005600C0008901C1005000010020004108A218C218C2180321453166398641A64186418641A749A749863965394531242924292429E320C320A318C318A2188110821082106110200041088218A21881106110611061106110611061106108610841.....
- 文件结构源代码为:
- #pragmapack(1)
复制代码- typedefstructtagWILFILEHEADER
- {
- CHARszTmp[40];
- INTnImageCount;
- }WILFILEHEADER,*LPWILFILEHEADER;
- typedefstructtagWILFILEIMAGEINFO
- {
- SHORTshWidth;
- SHORTshHeight;
- SHORTshPX;
- SHORTshPY;
- DWORDdwImageLength;
- }WILIMAGEINFO,*LPWILIMAGEINFO;
- typedefstructtagWIXFILEIMAGEINFO
- {
- CHARszTmp[40];
- INTnIndexCount;
- INT*pnPosition;
- }WIXIMAGEINFO,*LPWIXIMAGEINFO;
- typedefstructtagNEWWILFILEHEADER
- {
- SHORTshComp;
- CHARszTitle[20];
- SHORTshVer;
- INTnImageCount;
- }NEWWILFILEHEADER,*LPNEWWILFILEHEADER;
- typedefstructtagNEWWILFILEIMAGEINFO
- {
- SHORTshWidth;
- SHORTshHeight;
- SHORTshPX;
- SHORTshPY;
- CHARbShadow;
- SHORTshShadowPX;
- SHORTshShadowPY;
- DWORDdwImageLength;
- }NEWWILIMAGEINFO,*LPNEWWILIMAGEINFO;
- typedefstructtagNEWWIXFILEIMAGEINFO
- {
- CHARszTitle[20];
- INTnIndexCount;
- INT*pnPosition;
- }NEWWIXIMAGEINFO,*LPNEWWIXIMAGEINFO;
- 注意#pragma
- pack(1)是为了确保存储结构与逻辑结构有同样的布局,这样我们才可以确信文件映像里的字节顺序与我们的设计相符合。
- 有了上面的数据,数据结构和说明,应该很容易从上面的16制码中计算出Interface1c.wil
- 文件的长度正好是14959571字节,从而验证了网上流传
- 的mir2ex的源码正是光通现在运行的mir3的源码的稍早版本,c/c++版本的服务端也正是原传奇2的服务端,里面包含有大量的传奇早期版本的对照代码。
- 类似方法可以分析出mapwix文件的结构。全都是吻合的。
- 本人经过整整两个半月的日夜奋斗,现已经完成调试和改造,客户端可兼容盛大传奇与光通传奇,运行稳定流畅。
- 第五讲宣告c/c++版本的服务器端已经改造成功
- 作晚11时30分,mir3的c/c++版本的服务器端改造版在我的私网上与改造后的客户端调试成功,使用机器人物成功博弈至现在,级别由最高级降至32级。
- 改造后的客户端可登录盛大传奇或光通官服进行部分游戏功能,试运行10小时并不能被服务器端察觉!
- 改造后的原c/c++代码已经全部规范为纯净的c++代码,原dx7部分已经全部改为dx8,界面部分与应用逻辑部分100%绝缘,使用rose建模后在vc6下编译通过,rose代码与纯净的c++代码代码完美结合,教科书级的全中文简体注释,整个客户端与服务器端的源码里找不出连续6行以上与原c/c++代码相同外观的代码,除简单的临时变量外,没有一个函数名字或类名字与原c/c++代码相同,但完全兼容盛大传奇2或光通mir3。
- 下面是美国的盖次级牛人写的一段代码,流传到全世界41个较发达国家,但是有个不易察觉的漏洞,导某些情况下黑屏,您能把它指出来吗?
- #defineINITGUID
- #defineWIN32_LEAN_AND_MEAN//NoMFC
- #include<d3d8.h>
- #include<d3dx8.h>
- #include<stdio.h>
- #include"dxutil.h"
- #definePI3.1415926535897932384626433832795
查看完整源代码研究资料
|