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 漢化程序

發佈了71 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章