首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > Original War
【标  题】:Original War
【关键字】:Original,War
【来  源】:http://blog.csdn.net/sssxueren/archive/2005/01/24/266694.aspx

Original War

当年汉化过的一款游戏的分析记录,由于项目关系,这个游戏没有上市,当然,我也没拿到钱,所以共享出来,应该不算违法吧

源码,也有,以后有机会或者谁敢兴趣,我再贴吧

当然,如果有人认为以下内容侵犯了他的利益,请和我联系,如果确实是我不对,我会及时更正的!:)

owar.exe
游戏菜单

owar.exe run
直接运行游戏

*********************************************************************
.owp 文件格式分析

-20

DWORD file index compress size
DWORD file index real size
DWORD
DWORD
DWORD

file index 格式

DWORD 0d 0a 02 00
DWORD XX XX XX XX
DWORD compress data length
DWORD real data length
DWORD filepointer
BYTE[5] XX XX XX XX XX

*********************************************************************

*********************************************************************
owar.exe文件分析

0x4064f4 jmp CreateWindowEx

push ebp;
mov ebp,esp;

[ebp+0x10] lpName

*********************************************************************

实际上,游戏主程序就是owarlite.dll

**********************************************************************
owarlite.exe文件分析


0x424804读文件并解文件头
0x424b40从owp文件内解出单个文件

----------------------------------------
0x41a764解码函数

具体代码分析
0x41a88b eax->解开后的指针
[ecx]->eax
[ebp-38]->length
----------------------------------------

0x41c664 解码函数,由0x41a764直接调用

0x402898 free
0x4028b0 realloc mem
0x402880 get mem
ox402dec fill mem

0x408360 create file
0x4083c4 read file
0x4083f0 write file
0x408428 close handle
0x40841c set file pointer

0x464b24 得到字符串宽度,eax为返回值
0x4044d0 得到字符串length,eax为返回值,两个写字串函数在写字串之前,均调用此函数得到字符串长度

-----------------------------------------
0x466f90 调用0x4671a8

参数
ecx y
edx x
[ebp+0x14] lpchar
[ebp+0x18]
[ebp+0x1c]
[ebp+0x20] 很可能是Width,和上面的x有关

代码分析
0x4670c7 eax 行数

-----------------------------------------


------------------------------------------
0x4671a8 写字符串函数 1

参数
ebp+0x8 color
ebp+0x14 字符串

变量
ebp-0x04 lpstruct
lpstruct+34 Width
lpstruct+30 Dst

offset=([ebp-0x0c]+[ebp-0x20]+[ebp-0x28])*(W/2)+[ebp-0x08]+[ebp-0x1c]+[ebp-0x34]+[ebp-0x24]

写字串部分代码
0x4672db 大循环开始 +
0x467315 确定字符串长度 +
0x4673fc 跳转 |
0x467461-| edx=dst |
 | eax=offset |
 | cx=color |
0x46750a 写字符部分结束 +
0x467517 大循环结束 +

------------------------------------------

------------------------------------------
0x52461c 调用0x471088

0x524690 [eax] 0x280,应该是屏幕宽度
[eax+4] 0x158,很可能是行宽
byte ptr [edx] 字符串长度
[edx+1] 字符串

------------------------------------------

------------------------------------------
0x471088 写字串函数 2 人物对话,背景做了融合效果的那种

参数
ecx y
edx x
ebp+0x0c color
ebp+0x10 字符串

变量
ebp-04 lpstruct
lpstruct+0x1c 表面首地址
lpstruct+0x14 表面Width
lpstruct+0x08

具体代码分析

0x4710f0 确定字符串长度 +
0x4712b7 跳转则不写点,否则写点 |
0x4713db 写字串部分结束 +

------------------------------------------

字库格式 没有压缩,单色字库,byte/pixel,01代表有颜色

**********************************************************************

unp??.zip 解游戏资源程序,直接调用游戏内部解压缩函数进行解资源包
cowar??.zip 汉化程序

动物凶猛 游戏好玩:【上一篇】
自己动手写操作系统(三):【下一篇】
【相关文章】
  • C++ Coding Standards ---- Item1 : Compile cleanly at high warning levels.
  • [C++] 编译时的warning
  • 凹凸电子Firmware/Software Engineer笔试题目(俺的处女笔试,赫赫)
  • Foward to my perdical
  • 用ssh2的DynamicForward做匿名的socks4,socks5代理
  • Macromedia Authorware 6.0 授权认证培训
  • 5.5 Authorware 应用实例
  • 5.5 Authorware 应用实例二
  • 6.1认识Authorware 交互功能
  • 6.2 掌握Authorware 交互图标
  • 【随机文章】
  • DNGuard 免费的DotNet加密保护工具 V1.0
  • 在线培训系统设计文档
  • Painter 7 手绘实例《素描篇》(2)
  • 体验CorelDraw12智能绘图工具
  • CVSWEB-CVS的WEB界面
  • 使用OWC的一个技巧
  • 总体了解C#(11.多态)
  • 用C#设计一个命令行方式的文件分割器
  • ClearCase Config_Spec 规则之Include与静态视图装载规则
  • linux 开机自动挂载 windows 分区
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.