DirectX类库分析(WindHorn):
1. RegHandler.cpp 注册表访问(读写)。
2. CWHApp派生CWHWindow,CWHWindow完成窗口的注册和创建。CWHWindow派生出CWHDXGraphicWindow,CWHDXGraphicWindow调用CWHWindow完成创建窗口功能,然后再调用CreateDXG()来初始化DirectX。
3. WHDefProcess.cpp在构造函数中获得CWHDXGraphicWindow句柄。                 
Clear函数中调用在后台缓存上进行绘图操作,换页至屏幕。
    ShowStatus函数,显示状态信息。
DefMainWndProc函数,调用CWHDXGraphicWindow->MainWndProcDXG消息处理。
4. WHImage.cpp图象处理。加载位图,位图转换。优化处理。
5. WHSurface.cpp 主页面处理。
6. WHWilTexture.cpp 材质渲染。
WILTextureContainer:WIL容器类。m_pNext指向下一个WILTextureContainer,单链表。
7. WHWilImage.cpp 从Data目录中加载Wix文件(内存映射)。
8. WHDXGraphic.cpp 处理DirectX效果。
 
文件类型格式探讨:
Wix文件:索引文件,根据索引查找到相应数据地址(数据文件)。
// WIX 文件头格式
typedef struct tagWIXFILEIMAGEINFO
{
CHAR    szTmp[40];     // 库文件标题'WEMADE Entertainment inc.' WIL文件头
INT     nIndexCount;   // 图片数量
INT*    pnPosition;    // 位置
}WIXIMAGEINFO, *LPWIXIMAGEINFO;
我们下载一个Hedit编辑器打开一个Wil文件,分析一下。我们发现Wix文件中,0x23地址(含该地址)以前的内容是都相同的,即为:#INDX v1.0-WEMADE Entertainment inc.
Ofs44 0x2C的地方:存放着0B 00 00 00,高低位转换后为:0xB转换十进制数为11(图片数量)Ofs48 0x30的地方:存放着38 04 00 00,高低位转换后为:0x438 = 1080, 这个就是图象数据的开始位置。
我们用Wil编辑打开对应的Wil文件,发现,果然有11张图片。另外我们发现,在Ofs = 44 -47之间的数据总是38 04 00 00,终于明白,所有的图片起始位置是相同的。
Wil文件: 数据文件。
前面我们说了图象数据的开始位置为0x438 = 1080, 1080中有文件开头的44字节都是相同的。所以,就是说有另外的1036字节是另有用途。1036中有1024是一个256色的调色板。
我们看到图片位置数据为: 20 03 58 02, 转化为十六进制: 0x320, 0x258 刚好就是800*600大小的图片。07 00 D4 FF。图片起始位置为:
Ofs 1088: 0x440 图片大小为480000
起始位置:0x440 1088   终止位置:0x7573F 481087 为了验证数据是否正确,我们通过Wil工具,把第一幅图片导出来,然后用Hedit编辑器打开,经过对比,我们发现,数据一致。大小一致。
第二张BMP图片(图片起始位置:0x436 10078) : F0 01 69 01 , 07 00 D4 FF
刚好大小。第二张Wil起始位置:Ofs:481096  0x75748
知道了图片格式,我们可以写一个抓图片格式的程序了。
 
 很遗憾,网速太慢, 图片很难贴上去. 如果有图片,大家看得就更清楚了.
 

传奇源码分析-客户端(WindHorn简述和传奇文件格式分析)相关推荐

  1. 草帽船长(梦想海贼王)全套源码:客户端+服务端+资源+文档

    草帽船长(梦想海贼王)全套源码:客户端+服务端+资源+文档 ,需要帮助搭建联系QQ 2805477110 下载地址:http://www.51xyyx.com/2705.html 梦想海贼王全套源码, ...

  2. opcclient源码OPC客户端DA源码(c#开发)

    opcclient源码OPC客户端DA源码(c#开发) 内容: C#开发,源码,可二次开发. 本项目为VS2010开发,可转换为VS其他版本的编辑器打开项目. 已应用到多个行业的几百个应用现场,长时间 ...

  3. 急急急~!求一款源码~!背背恋Android约会交友APP完整源码(客户端+服务端)~!

    急急急!求一款源码!背背恋Android约会交友APP完整源码(客户端+服务端)~!

  4. 传奇源码分析-客户端(传奇2和3 文件格式分析比较)

    贴这个贴子,希望大家少走弯路.网上下载的那个版本应该是从传奇2改的,传奇3的格式.分析一下源码吧,g_xLoginProc.Load(); 之后就加载m_Image.NewLoad(IMAGE_INT ...

  5. 基于matlab的语音信号,科学网—[转载]【信息技术】【2014.06】【含源码】基于MATLAB的语音信号处理与分析 - 刘春静的博文...

    本文为瑞典耶夫勒大学(作者:Nan Wu)的学士论文,共48页. 语音传递是人类最重要.最有效.最常用的信息交流方式.语言是人类特有的特征,而人声是常用的工具,也是相互传递信息的重要途径.语音具有较大 ...

  6. twitter storm源码走读之2 -- tuple消息发送场景分析

    欢迎转载,转载请注明出处源自徽沪一郎.本文尝试分析tuple发送时的具体细节,本博的另一篇文章<bolt消息传递路径之源码解读>主要从消息接收方面来阐述问题,两篇文章互为补充. worke ...

  7. graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一)

    graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一) 问题背景 graylog+kafka+zookeeper(单机测试及源码),graylog ...

  8. Android源码配置第三方应用电池白名单流程分析笔记

    这里以MTK6765 Android S举例说明,Android系统在加载客户应用白名单的过程. 首先Android系统可以根据不同手机厂商的需要进行源码的定制,当然定制应用白名单也是可以的,一般情况 ...

  9. c语言劫持dll写法,[原创]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析

    本菜最近学习了什么DLL注入啊,hook啊(r3)的相关技术,觉得很好玩,于是深入发现还有DLL劫持这种东西觉得挺好玩的,加上最近看到各种木马分析报告中都还有发现有利用白加黑的现象.于是自己想找几个来 ...

  10. selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析

    ·5 |webdriver/common/action_chains.py-ActionChains类分析 1 源码路径 2 功能描述 3 使用方法 4 几个方法 4.1 `__init__`方法 4 ...

最新文章

  1. 经1503 20151453 张开拓
  2. Cisco Easy ***综合配置示例
  3. Xiotech任命新CEO EMC又少一员大将
  4. python 使用全局变量_如何在Python中的不同模块中使用全局变量
  5. NYOJ 236 心急的C小加
  6. Spring Boot官网概述
  7. Android 如何全局获取Context
  8. 【Android智能硬件开发】【009】安卓读写GPIO
  9. mysql支持ip访问
  10. 卸载ps显示无法连接adobe服务器,PS还在无法安装?无法卸载?通通搞定!
  11. PyCharm专业版破解
  12. leetcode402. 移掉 K 位数字
  13. Word中插入表格与柱状图饼状图技术经验分享
  14. 微信公众号添加Word文档附件教程_公众号添加Excel、PDF、PPT、Zip等附件教程
  15. JS小数点保留后2位
  16. 互联网日报 | 8月9日 星期一 | 字节跳动否认重启上市计划;TikTok全球下载量去年居首;中国代表团38金32银18铜收官...
  17. 标准事件模型和IE事件模型
  18. BMPFont使用教程--免费的位图字体制作工具字体制作(2)
  19. Vuex基础教程(讲得基础透彻篇)
  20. 六轴机械臂与单目相机的标定和视觉伺服的理解

热门文章

  1. 数学建模之概率模型详解
  2. C# ffmpeg工具将视频转为SWF格式
  3. 继承ActionSupport例子展示
  4. PowerPC PPC460-S MMU
  5. 用C#打造QQ对战平台挤房器
  6. 代码统计工具SourceCounter(绿色版)
  7. IPEmotion采集J1939协议信号介绍
  8. 油猴脚本(实习生趁手的工具)
  9. TIS-prescan
  10. MATLAB入门教程