注意:所有的多字節(jié)數(shù)據(jù),都是低位在前,高位在后的。比如 89 34 00 63 應(yīng)該為0x63003489
很奇怪,左軟鍵彈出菜單在資源文件中找不到。估計(jì)是直接集成到主程序里面的
00000000h: 01 00 04 00 0B 00 10 00 | 31 B2 71 08 7C 18 5F 00
前8個(gè)字節(jié)所有版本都一樣的 | 該部分不知道什么意思,每個(gè)版本都不盡相同,但同一個(gè)版本的界面文件是一樣的
00000010h: FA 02 00 00 這4個(gè)字節(jié)表示后面跟的資源地址對(duì)的個(gè)數(shù),這里表示后面有0x02FA=762個(gè)資源
從這之后的開始就是下面這個(gè)索引地址對(duì)了:
struct
{
DWORD resNo; 4字節(jié)的資源號(hào),高兩位都為00 即形如:AB CD 00 00 格式
DWORD address; +10H 后表示該索引對(duì)應(yīng)資源的偏移地址,從該部分的開頭計(jì)算偏移地址【即從0x20860004開始的相對(duì)偏移地址】
}RESOURCE_ADDR
索引里面,實(shí)際上的圖片,文字,鈴聲等資源僅為420個(gè)左右,其他的那些不知道是什么,估計(jì)是每一屏幕的菜單資源吧。
跳轉(zhuǎn)到address+10H的地方,首先是4個(gè)字節(jié)的 resNo 的重復(fù),接下來的4個(gè)字節(jié)根據(jù)資源文件的不同而有如下區(qū)別:
struct
{
DWORD resNo; 4字節(jié)的索引,和INDEX_ADDR.resNo的相同
DWORD length;
對(duì)于MID,MMF鈴聲,這四個(gè)字節(jié)是大小
對(duì)于bmp文件,寬度[WORD] * 高度[WORD],接著的data區(qū)的1000000000000000是文件頭,后面的數(shù)據(jù)的長(zhǎng)度是(寬度*高度*2)字節(jié)【導(dǎo)入的時(shí)候把24位的bmp文件轉(zhuǎn)換成了16位的文件】
有一種比較特殊的索引,length == resNo,???不知是什么資源,可能是菜單
BYTE data[]; 具體的數(shù)據(jù)區(qū)
}RESOURCE_DATA
文字分析:
索引為 F92F0000 為中文字符 前12個(gè)字符為標(biāo)識(shí)頭,后面4個(gè)字符為接下來的 字符串索引 所占的長(zhǎng)度,包括自己共有4F04字節(jié),也即有(4F04-4)/4 = 0x13C0個(gè)字符串,
再后面則是字符串索引4個(gè)字節(jié)一項(xiàng),按順序排下去,索引對(duì)應(yīng)的字符串存放在【偏移地址為:索引本身所在的開始地址+索引存儲(chǔ)的數(shù)值】。比如:
在0x00171430h處為第一個(gè)字符串索引,存放的數(shù)據(jù)為 01 4F 00 00 -> 0x4f01,則該字符串對(duì)應(yīng)的存放起始地址為:0x00171430h+0x4f01 = 0x00176631h
第二個(gè)字符串索引應(yīng)該位于 (2-1)*4 + 0x00171430h = 0x00171434h處
第n個(gè)字符串索引應(yīng)該位于 (n-1)*4 + 0x00171430h處
后面就是UTF-8編碼的中文字符基本上都是3個(gè)字符表達(dá)一個(gè)漢字的UNICODE編碼,每個(gè)字符串之間 00 隔開
索引為 F82F0000 為英文字符 前12個(gè)字符為標(biāo)識(shí)頭,英文字符的UTF-8編碼和ASCII碼一致的
菜單項(xiàng)分析:
菜單項(xiàng)偏移地址處應(yīng)該 RESOURCE_DATA.length = RESOURCE_DATA.resNo;
每一個(gè)菜單界面應(yīng)該有一個(gè)16字節(jié)頭,然后按16字節(jié)一個(gè)菜單條目往下編排
struct
{
DWORD dw1; 估計(jì)是菜單的屬性,風(fēng)格
WORD wdreserve; 目前都為0
WORD wdNo1;
WORD wdNo2; 不知是一個(gè)什么編號(hào)
WORD wd[2]; 目前都為0
WORD itemNum; 項(xiàng)目個(gè)數(shù)
}MENU_HEAD;
struct
{
DWORD dw1;
WORD strIndex; 菜單項(xiàng)名稱在字符查找表中的序號(hào)(取值范圍 1~0x4F04)
WORD wdNo; 不知是一個(gè)什么編號(hào),感覺和 MENU_HEAD.wdNo 是在同一個(gè)空間里面的編號(hào)
DWORD subIndex;
對(duì)于仍有子菜單的項(xiàng)目,該位置存儲(chǔ)子菜單項(xiàng)目的資源號(hào)(INDEX_DATA.index)
對(duì)于沒有子菜單的項(xiàng)目,填充0
DWORD dw2; 目前都為0
}MENU_ITEM;
1 電話本菜單編排:
22900000資源:
80041200 00002600
E600 0000 0000 0800 8個(gè)菜單項(xiàng) [060310:E300...]
00000000 ED11 E700 00000000 00000000 火拼速查 [060310:...ED11 E400...]
00007A1B C500 0000 F19F0000 00000000 查找
0000791B A60E EC00 00000000 00000000 添加 [060310:...A60E E900...]
0000781B FC10 E900 00000000 00000000 群組管理 [060310:...FC10 E600...]
00005D1F 2200 0000 F89F0000 00000000 通話信息
00007B1B 8C02 2201 00000000 00000000 快速撥號(hào) [060310:...8C02 1F01...]
0000771B 2902 0000 F09F0000 00000000 電話本管理
0000761B 5702 0000 F99F0000 00000000 資料室
2 信息菜單編排:
16900000資源:
80041200 00003000
1C010000 0000 0600 6個(gè)菜單項(xiàng) [060310:1901...]
00000D1C 0700 0000 26900000 00000000 短信
00000E1C ED04 7D00 27900000 00000000 彩信
0000C31E 9602 0000 EB9F0000 00000000 語(yǔ)音信箱
00005523 8802 0000 F79F0000 00000000 小區(qū)廣播
0000751B B612 0000 E89F0000 00000000 空間查看
0000C41E 9402 0000 EA9F0000 00000000 信息設(shè)置
小區(qū)廣播菜單編排:
F79F0000資源:
0000A208 00008802 [060310:...00002700]
00000000 0000 0300 3個(gè)菜單項(xiàng)
00000000 EC02 3800 00000000 00000000 讀廣播消息
0000FA05 9A02 3900 00000000 00000000 自動(dòng)顯示
00000000 ED02 0000 F69F0000 00000000 頻道選擇
3 音畫效果菜單編排:
18900000資源:
80041200 0000 2900
00000000 0000 0700 7個(gè)菜單項(xiàng)
00000000 1300 0000 E59F0000 00000000 鈴聲選擇
00000000 FD10 0000 D99F0000 00000000 效果音設(shè)置
00009F1F 7B04 2500 00000000 00000000 提示方式 [060310:..7B04 2400...]
0000A01F 3203 2400 00000000 00000000 音量調(diào)整 [060310:..3203 2300...]
00000000 0F00 0000 E49F0000 00000000 待機(jī)設(shè)置
00000000 0111 0000 E39F0000 00000000 隱藏信息設(shè)置
00000000 3F04 0000 D89F0000 00000000 開關(guān)機(jī)效果
5 影音休閑菜單編排:
1C900000資源:
80041200 00000411 這一段不知道是什么
00000000 0000 0600 是指示項(xiàng)數(shù)的,表示總共有6條項(xiàng)目
00000B1C 240C 0000 1E900000 00000000 ;照相機(jī)->進(jìn)入子菜單 240C反轉(zhuǎn)后是(0C24-1)*4+字符查找表起始地址(0x00171430),找到對(duì)應(yīng)的字符串索引 后面指示對(duì)應(yīng)子菜單的索引 901E0000
0000421C 4100 0501 00000000 00000000 ;MP3播放器->直接進(jìn)入程序 [060310:..4100 0201...]
0000411C 4200 1E00 00000000 00000000 ;電影院->直接進(jìn)入程序
0000501E 2A00 4401 00000000 00000000 ;調(diào)頻收音機(jī)->直接進(jìn)入程序 [060310:..2A00 4101...]
00000000 4007 0200 00000000 00000000 ;電子書
00000000 2700 0000 F59F0000 00000000 ;游戲->進(jìn)入子菜單【java版本的該地方為 無線java】
照相機(jī)菜單編排:
1E900000資源:
80044200 0000240C
00000000 0000 0400 4個(gè)菜單項(xiàng)
0000AD1C 250C 0500 00000000 00000000 拍攝照片->直接進(jìn)入程序
0000651C E012 0301 00000000 00000000 拍攝視頻->直接進(jìn)入程序
0000AC1C 270C 0400 00000000 00000000 瀏覽照片->直接進(jìn)入程序
0000651C E112 0401 00000000 00000000 瀏覽視頻->直接進(jìn)入程序
游戲菜單編排:【java版本也采用此資源】
F59F0000資源:
0000A208 00002700
00000000 0000 0300 3個(gè)菜單項(xiàng)
00000000 F310 0000 F49F0000 00000000 五子棋->進(jìn)入子菜單
00000000 F409 0800 00000000 00000000 俄羅斯方塊->進(jìn)入子菜單
00000000 EE09 0700 00000000 00000000 推箱子->進(jìn)入子菜單
Java版本:
0000A208 00003805
00000000 00000500
00000000 3E05 9300 00000000 00000000 應(yīng)用管理器
00000000 8C00 9600 00000000 00000000 剩余空間
00000000 0A00 9200 00000000 00000000 設(shè)置
00000000 3400 0000 F49F0000 00000000 下載資源
00000000 9401 6801 00000000 00000000 重置
五子棋菜單編排:
F49F0000資源:
0000A208 0000F310
00000000 0000 0400 4個(gè)菜單項(xiàng)
00000000 9000 0000 F39F0000 00000000 新游戲->進(jìn)入子菜單
0000F420 8B0C 2801 00000000 00000000 載入游戲->直接進(jìn)入游戲
00000000 F410 0000 F29F0000 00000000 等級(jí)選擇->進(jìn)入子菜單
00000000 9200 2A01 00000000 00000000 游戲規(guī)則->查看游戲幫助 打開0x1109序號(hào)的字符串
五子棋->新游戲菜單編排:
F39F0000資源:
0000A208 00009000
00000000 0000 0200 2個(gè)菜單項(xiàng)
0000F220 F510 2801 00000000 00000000 先手->直接進(jìn)入游戲
0000F320 F610 2801 00000000 00000000 后手->直接進(jìn)入游戲
五子棋->等級(jí)選擇菜單編排:
F29F0000資源:
00002209 0000F410
2B010000 0000 0300 3個(gè)菜單項(xiàng)
0000F520 9E00 2901 00000000 00000000 初級(jí) 打?qū)幢硎具x擇【設(shè)置選項(xiàng)】
0000F620 9F00 2901 00000000 00000000 中級(jí)
0000F720 A000 2901 00000000 00000000 高級(jí)
6 工具箱菜單編排:
1A900000資源:
80041200 00000B00
00000000 0000 0800 8個(gè)菜單項(xiàng)
00009D20 1C00 0100 00000000 00000000 鬧鐘
00000000 6406 2301 00000000 00000000 日程管理
0000DF22 A20B 0000 DC9F0000 00000000 詞典
0000221C 1D00 0A01 00000000 00000000 計(jì)算器
0000BD20 2000 2701 00000000 00000000 錄音機(jī)
0000801B 2500 4301 00000000 00000000 便箋
0000991C 1F00 9D00 00000000 00000000 電腦通信
00000000 910E 0000 DD9F0000 00000000 其它
7 互聯(lián)網(wǎng)菜單編排:
17900000資源:
80041200 00000400
22000000 0000 0400 4個(gè)菜單項(xiàng)
00000000 B912 8300 00000000 00000000 手機(jī)音樂專區(qū)
00000000 BA12 8400 00000000 00000000 聲色炫彩鈴
00000000 BB12 8500 00000000 00000000 免費(fèi)天氣預(yù)報(bào)
00000614 B004 7C00 00000000 00000000 主頁(yè)
8 設(shè)置菜單編排:
19900000資源:
80041200 00000A00
00000000 0000 0500 5個(gè)菜單項(xiàng)
00005E06 FC02 FF00 00000000 00000000 時(shí)間設(shè)置
00000000 1800 0000 EC9F0000 00000000 話機(jī)設(shè)置
00000000 1500 0000 E29F0000 00000000 通話設(shè)置
0000F609 1900 0000 3F900000 00000000 網(wǎng)絡(luò)設(shè)置
00008B1F 3300 0000 EF9F0000 00000000 安全信息