日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bin文件格式分析

發(fā)布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bin文件格式分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

xip 的 bin 文件分析
???

一個bin 文件在存儲上是按以下的結(jié)構(gòu)存儲的

???? 組成:標記(7)+Image開始地址(1)+Image長度(1)
?????????? 記錄0地址+記錄0長+記錄0校驗和+記錄0內(nèi)容(文件內(nèi)容)
??????? 記錄1地址+記錄1長+記錄1校驗和+記錄1內(nèi)容(文件內(nèi)容)
?????????? ......
???? 最后一條記錄是表示結(jié)束,Start = 0x00000000, Length = 0x8C072C3C是StartUp地址, Chksum = 0x00000000,我的xip.bin的最后12個字節(jié)就是00 00 00 00 E4 B4 29 80 00 00 00 00,

當RecAddr和RecChk為0時表示READDATA完成,即:DownloadBin()函數(shù)中的

??????? while( OEMReadData (sizeof (DWORD), (LPBYTE) &dwRecAddr) &&
??????????? OEMReadData (sizeof (DWORD), (LPBYTE) &dwRecLen)?? &&
??????????? OEMReadData (sizeof (DWORD), (LPBYTE) &dwRecChk) )

???????? 循環(huán)退出

?????? 由 if (!dwRecAddr && !dwRecChk)
?????????? {
????????????? break;
??????????? }

?????? 得出以上的結(jié)論

???? bin 文件的頭部(不包含記錄)能夠用以下的結(jié)構(gòu)表示
????? struct BinFile{
????????????????? BYTE signature[7]; // = { ''B'', ''0'', ''0'', ''0'', ''F'', ''F'', ''/a'' }
????????????????? DWORD ImageStart
????????????????? DWORD ImageLength
??????????? };


一般xipkernel.bin,nk.bin 都符合正常bin文件格式,包括記錄開始0,1,2 記錄為特殊記錄,2做為cece的標記,其后4byte表示 TOC地址(指向ROMHDR結(jié)構(gòu)的數(shù)據(jù)),3記錄開始都是文件記錄,
比方coredll.dll等等。。。

//---------------------------------------------------------------------------------------------------------------------------------------------------------------
比方nk.bin 文件的viewbin 查看的內(nèi)容:
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
ViewBin... nk.bin
Image Start = 0x8C201000, length = 0x00DE9910
Record [ 0] : Start = 0x8C201000, Length = 0x00000040, Chksum = 0x00001A63???????? //->注意這里就是相應(yīng)到結(jié)構(gòu)struct Record{DWORD recaddress; DWORD reclength; DWORD chksum;void * recdata}的內(nèi)容
0x8C201000 : 4083F601 8096F601 3C18F801 64D7F901 @.......<...d...
0x8C201010 : D025F701 0C85F601 6C26F701 C488F901 .%......l&......
0x8C201020 : 10B6F601 0C85F601 5830F601 E086F901 ........X0......
0x8C201030 : 2074F601 67776573 2E657865 00000000 t..gwes.exe....

Chksum valid
Record [ 1] : Start = 0x8C201040, Length = 0x00000008, Chksum = 0x0000032D
0x8C201040 : 45434543 048FFE8C?????????????????? ECEC....????????????????????????? //這里ECEC是我們設(shè)置的#define ROM_SIGNATURE 0x43454345 (Romldr.h),后面4byte就是pToc的內(nèi)容

Chksum valid
Record [ 2] : Start = 0x8C201048, Length = 0x00000004, Chksum = 0x00000161
0x8C201048 : 047FDE00??????????????????????????? ....???????????

Chksum valid
Record [ 3] : Start = 0x8C202000, Length = 0x000A37BC, Chksum = 0x043BF7FA
0x8C202000 : 00000000 03407546 00000000 02000000 .....@uF ........
0x8C202010 : 78000000 D8530000 D8470000 20100100 x....S...G.. ...
0x8C202020 : 53005900 53005400 45004D00 2F004700 S.Y.S.T.E.M./.G.

。。。。。。

Chksum valid
Record [131] : Start = 0x00000000, Length = 0x00000000, Chksum = 0x00000000
?? Start address = 0x00000000
Checking record #129 for potential TOC (ROMOFFSET = 0x00000000)???
Found pTOC = 0x8cfe8f04
ROMOFFSET = 0x00000000


//---------------------------------------------------------------------------------------------------------------------------------------------------------------
xipkernel.bin viewbin 的內(nèi)容:
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
ViewBin... xipkernel.bin
Image Start = 0x8C000000, length = 0x001BCE90
Record [ 0] : Start = 0x8C000000, Length = 0x00000004, Chksum = 0x000001C3
0x8C000000 : 0DCB01EA??????????????????????????? ....???????????

Chksum valid
Record [ 1] : Start = 0x8C000040, Length = 0x00000008, Chksum = 0x00000327
0x8C000040 : 45434543 A0DA118C?????????????????? ECEC....????????????????????????? //注意這里的A0DA118C 就是8C11DAF4 指向record9 就是pToc的值

Chksum valid
Record [ 2] : Start = 0x8C000048, Length = 0x00000004, Chksum = 0x0000018B
0x8C000048 : A0DA1100??????????????????????????? ....???????????

Chksum valid
Record [ 3] : Start = 0x8C001000, Length = 0x000C5180, Chksum = 0x064E2C03
0x8C001000 : 00000000 96F37746 00000000 02000000 ......wF........
0x8C001010 : 55000000 DC2B0700 DC1F0700 41504953 U....+......APIS
0x8C001020 : 02060500 3010008C 00000000 00000000 ....0...........
0x8C001030 : B05A078C 7CA3078C 505B078C 0C5D078C .Z..|...P[...]..
0x8C001040 : 745D078C 00000000 08000000 41005200 t]..........A.R.
。。。。。。
0x8C072C30 : 00000000 73746172 740A0D00 060000EA ....start.......????????????????? //###################
0x8C072C40 : FDFFFFEA FCFFFFEA FBFFFFEA FAFFFFEA ................


。。。。。。

Chksum valid
Record [ 9] : Start = 0x8C11DAA0, Length = 0x00000054, Chksum = 0x00000CB3???????? //就是上面的pToc所指塊,是一個ROMHDR結(jié)構(gòu)
0x8C11DAA0 : FF01F501 00000002 0000008C 90CE1B8C ................
0x8C11DAB0 : 08000000 0010208C 0000278C 00E0E68F ...... ...'.....
0x8C11DAC0 : 01000000 F0FF1A8C 00000000 00000000 ................
0x8C11DAD0 : 05000000 00000000 10101010 00000000 ................
0x8C11DAE0 : 00000000 C2010200 1022008C 00000000 ........."......
0x8C11DAF0 : 00000000??????????????????????????? ....???????????

Chksum valid
Record [ 10] : Start = 0x8C11DAF4, Length = 0x0000018C, Chksum = 0x0000895E
0x8C11DAF4 : 07000000 005C33FC 84B2C701 00BE0C00 ...../3.........
0x8C11DB04 : D4BF118C CCDE0F8C 3CDF0F8C 0000008C ........<.......
0x8C11DB14 : 07000000 00A1CC46 EAB0C701 00600300 .......F.....`..
0x8C11DB24 : DCBF118C 6CFD1A8C 9CDF0F8C 00F0128C ....l...........
0x8C11DB34 : 07100000 0052626B C5B0C701 00380100 .....Rbk.....8..
0x8C11DB44 : E8BF118C DCFD1A8C 4CFE1A8C 0020178C ........L.... ..

。。。。。。

Chksum valid
Record [ 14] : Start = 0x00000000, Length = 0x8C072C3C, Chksum = 0x00000000????? //這就是xipkernel.bin的最后一條記錄其內(nèi)容表示0x8C072C3C 是startup 的入口地址 //################### 那行就是
?? Start address = 0x8C072C3C?????????????????????????????????????????????? //060000EA=>EA000060 的一條跳轉(zhuǎn)指令 (1110[cond always] +1010[branch]+offset)
Checking record #9 for potential TOC (ROMOFFSET = 0x00000000)
Found pTOC = 0x8c11daa0
ROMOFFSET = 0x00000000
Done.

//---------------------------------------------------------------------------------------------------------------------------------------------------------------
xip.bin viewbin 的內(nèi)容: 是上面兩個bin的結(jié)合
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
ViewBin... xip.bin
Image Start = 0x8C000000, length = 0x00FEA910
?? Start address = 0x8C072C3C
Checking record #9 for potential TOC (ROMOFFSET = 0x00000000)
Found pTOC = 0x8c11daa0
ROMOFFSET = 0x00000000

Checking record #9 for potential TOC (ROMOFFSET = 0xFF134B9C)?? //-》FF134B9C-》ECB464 =14m多??????
Checking record #144 for potential TOC (ROMOFFSET = 0x00000000)
Found pTOC = 0x8cfe8f04
ROMOFFSET = 0x00000000


//---------------------------------------------------------------------------------------------------------------------------------------------------------------
chain.bin viewbin 的內(nèi)容: 是上面兩個bin的結(jié)合
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
ViewBin... chain.bin
Image Start = 0x8C200000, length = 0x00000528
Record [ 0] : Start = 0x8C200000, Length = 0x00000528, Chksum = 0x0000084B
0x8C200000 : 02000000 0000008C 90CE1B00 00002000 .............. .?? //填充xipkernel部分的_XIPCHAIN_ENTRY 的內(nèi)容
0x8C200010 : 01000100 00000000 5849504B 45524E45 ........XIPKERNE
0x8C200020 : 4C000000 00000000 00000000 00000000 L...............
0x8C200030 : 00000000 00000000 00000000 00000000 ................
0x8C200040 : 00000000 00000000 00000000 00000000 ................
0x8C200050 : 00000000 00000000 00000000 00000000 ................
0x8C200060 : 00000000 00000000 00000000 00000000 ................
0x8C200070 : 00000000 00000000 00000000 00000000 ................
0x8C200080 : 00000000 00000000 00000000 00000000 ................
0x8C200090 : 00000000 00000000 00000000 00000000 ................
0x8C2000A0 : 00000000 00000000 00000000 00000000 ................
0x8C2000B0 : 00000000 00000000 00000000 00000000 ................
0x8C2000C0 : 00000000 00000000 00000000 00000000 ................
0x8C2000D0 : 00000000 00000000 00000000 00000000 ................
0x8C2000E0 : 00000000 00000000 00000000 00000000 ................
0x8C2000F0 : 00000000 00000000 00000000 00000000 ................
0x8C200100 : 00000000 00000000 00000000 00000000 ................
0x8C200110 : 00000000 00000000 00000000 00000000 ................
0x8C200120 : 00000000 00000000 00000000 00000000 ................
0x8C200130 : 00000000 00000000 00000000 00000000 ................
0x8C200140 : 00000000 00000000 00000000 00000000 ................
0x8C200150 : 00000000 00000000 00000000 00000000 ................
0x8C200160 : 00000000 00000000 00000000 00000000 ................
0x8C200170 : 00000000 00000000 00000000 00000000 ................
0x8C200180 : 00000000 00000000 00000000 00000000 ................
0x8C200190 : 00000000 00000000 00000000 00000000 ................
0x8C2001A0 : 00000000 00000000 00000000 00000000 ................
0x8C2001B0 : 00000000 00000000 00000000 00000000 ................
0x8C2001C0 : 00000000 00000000 00000000 00000000 ................
0x8C2001D0 : 00000000 00000000 00000000 00000000 ................
0x8C2001E0 : 00000000 00000000 00000000 00000000 ................
0x8C2001F0 : 00000000 00000000 00000000 00000000 ................
0x8C200200 : 00000000 00000000 00000000 00000000 ................
0x8C200210 : 00000000 00000000 00000000 00000000 ................
0x8C200220 : 00000000 00000000 00000000 00000000 ................
0x8C200230 : 00000000 00000000 00000000 00000000 ................
0x8C200240 : 00000000 00000000 00000000 00000000 ................
0x8C200250 : 00000000 00000000 00000000 00000000 ................
0x8C200260 : 00000000 00000000 00000000 00000000 ................
0x8C200270 : 00000000 00000000 00000000 00000000 ................
0x8C200280 : 00000000 00000000 00000000 00000000 ................
0x8C200290 : 00000000 0010208C 1099DE00 00009001 ...... .........?? //0010208C 開始就是 填充nk部分的_XIPCHAIN_ENTRY 的內(nèi)容
0x8C2002A0 : 02000100 00000000 4E4B0000 00000000 ........NK......
0x8C2002B0 : 00000000 00000000 00000000 00000000 ................
0x8C2002C0 : 00000000 00000000 00000000 00000000 ................
0x8C2002D0 : 00000000 00000000 00000000 00000000 ................
0x8C2002E0 : 00000000 00000000 00000000 00000000 ................
0x8C2002F0 : 00000000 00000000 00000000 00000000 ................
0x8C200300 : 00000000 00000000 00000000 00000000 ................
0x8C200310 : 00000000 00000000 00000000 00000000 ................
0x8C200320 : 00000000 00000000 00000000 00000000 ................
0x8C200330 : 00000000 00000000 00000000 00000000 ................
0x8C200340 : 00000000 00000000 00000000 00000000 ................
0x8C200350 : 00000000 00000000 00000000 00000000 ................
0x8C200360 : 00000000 00000000 00000000 00000000 ................
0x8C200370 : 00000000 00000000 00000000 00000000 ................
0x8C200380 : 00000000 00000000 00000000 00000000 ................
0x8C200390 : 00000000 00000000 00000000 00000000 ................
0x8C2003A0 : 00000000 00000000 00000000 00000000 ................
0x8C2003B0 : 00000000 00000000 00000000 00000000 ................
0x8C2003C0 : 00000000 00000000 00000000 00000000 ................
0x8C2003D0 : 00000000 00000000 00000000 00000000 ................
0x8C2003E0 : 00000000 00000000 00000000 00000000 ................
0x8C2003F0 : 00000000 00000000 00000000 00000000 ................
0x8C200400 : 00000000 00000000 00000000 00000000 ................
0x8C200410 : 00000000 00000000 00000000 00000000 ................
0x8C200420 : 00000000 00000000 00000000 00000000 ................
0x8C200430 : 00000000 00000000 00000000 00000000 ................
0x8C200440 : 00000000 00000000 00000000 00000000 ................
0x8C200450 : 00000000 00000000 00000000 00000000 ................
0x8C200460 : 00000000 00000000 00000000 00000000 ................
0x8C200470 : 00000000 00000000 00000000 00000000 ................
0x8C200480 : 00000000 00000000 00000000 00000000 ................
0x8C200490 : 00000000 00000000 00000000 00000000 ................
0x8C2004A0 : 00000000 00000000 00000000 00000000 ................
0x8C2004B0 : 00000000 00000000 00000000 00000000 ................
0x8C2004C0 : 00000000 00000000 00000000 00000000 ................
0x8C2004D0 : 00000000 00000000 00000000 00000000 ................
0x8C2004E0 : 00000000 00000000 00000000 00000000 ................
0x8C2004F0 : 00000000 00000000 00000000 00000000 ................
0x8C200500 : 00000000 00000000 00000000 00000000 ................
0x8C200510 : 00000000 00000000 00000000 00000000 ................
0x8C200520 : 00000000 00000000?????????????????? ........???????

Chksum valid
Record [ 1] : Start = 0x00000000, Length = 0x00000000, Chksum = 0x00000000
?? Start address = 0x00000000
僅僅有1條有效記錄,一條記錄分成兩部分相應(yīng)xipkernel.bin 和nk.bin,使用結(jié)構(gòu)
typedef struct _XIPCHAIN_ENTRY {
??? LPVOID pvAddr;???????????????? // address of the XIP?????? // 依據(jù)這個地址能夠找到pToc!!!!!!
??? DWORD?? dwLength;?????????????? // the size of the XIP
??? DWORD?? dwMaxLength;??????????? // the biggest it can grow to
??? USHORT usOrder;??????????????? // where to put into ROMChain_t
??? USHORT usFlags;??????????????? // flags/status of XIP
??? DWORD?? dwVersion;????????????? // version info
??? CHAR??? szName[XIP_NAMELEN];??? // Name of XIP, typically the bin file's name, w/o .bin
??? DWORD?? dwAlgoFlags;??????????? // algorithm to use for signature verification
??? DWORD?? dwKeyLen;?????????????? // length of key in byPublicKey
??? BYTE??? byPublicKey[596];?????? // public key data
} XIPCHAIN_ENTRY, *PXIPCHAIN_ENTRY;

//其它相關(guān)結(jié)構(gòu):
typedef struct ROMHDR {
??? ULONG?? dllfirst;?????????????? // first DLL address
??? ULONG?? dlllast;??????????????? // last DLL address
??? ULONG?? physfirst;????????????? // first physical address
??? ULONG?? physlast;?????????????? // highest physical address
??? ULONG?? nummods;??????????????? // number of TOCentry's
??? ULONG?? ulRAMStart;???????????? // start of RAM
??? ULONG?? ulRAMFree;????????????? // start of RAM free space
??? ULONG?? ulRAMEnd;?????????????? // end of RAM
??? ULONG?? ulCopyEntries;????????? // number of copy section entries
??? ULONG?? ulCopyOffset;?????????? // offset to copy section
??? ULONG?? ulProfileLen;?????????? // length of PROFentries RAM
??? ULONG?? ulProfileOffset;??????? // offset to PROFentries
??? ULONG?? numfiles;?????????????? // number of FILES
??? ULONG?? ulKernelFlags;????????? // optional kernel flags from ROMFLAGS .bib config option
??? ULONG?? ulFSRamPercent;???????? // Percentage of RAM used for filesystem
??????????????????????????????????????? // from FSRAMPERCENT .bib config option
??????????????????????????????????????? // byte 0 = #4K chunks/Mbyte of RAM for filesystem 0-2Mbytes 0-255
??????????????????????????????????????? // byte 1 = #4K chunks/Mbyte of RAM for filesystem 2-4Mbytes 0-255
??????????????????????????????????????? // byte 2 = #4K chunks/Mbyte of RAM for filesystem 4-6Mbytes 0-255
??????????????????????????????????????? // byte 3 = #4K chunks/Mbyte of RAM for filesystem > 6Mbytes 0-255

??? ULONG?? ulDrivglobStart;??????? // device driver global starting address
??? ULONG?? ulDrivglobLen;????????? // device driver global length
??? USHORT usCPUType;????????????? // CPU (machine) Type
??? USHORT usMiscFlags;??????????? // Miscellaneous flags
??? PVOID?? pExtensions;??????????? // pointer to ROM Header extensions
??? ULONG?? ulTrackingStart;??????? // tracking memory starting address
??? ULONG?? ulTrackingLen;????????? // tracking memory ending address
} ROMHDR;

?

本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/wu_ye_zhou/archive/2010/06/08/5656119.aspx

轉(zhuǎn)載于:https://www.cnblogs.com/gcczhongduan/p/4036722.html

總結(jié)

以上是生活随笔為你收集整理的bin文件格式分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国黄色a级片 | av国产在线观看 | 久久性感视频 | 超碰精品在线 | 男生c女生 | 国产色综合天天综合网 | 午夜久久久久久久久 | 欧美性受xxxx黑人xyx | 在线香蕉视频 | 日韩中文欧美 | 看毛片视频 | 日本电影成人 | 亚洲一级av毛片 | 亚洲伦理在线观看 | 欧美 亚洲 一区 | 另类综合在线 | 中文字幕美女 | 亚洲国产一区二区三区四区 | 97se亚洲国产综合在线 | 在线观看亚洲免费视频 | 奇米影视777在线观看 | av黄色片| 这里只有精品6 | 欧美日韩一区二区三区免费 | 肉大榛一进一出免费视频 | 欧美黑人一级片 | 天天干夜操 | 亚洲第一精品在线 | 久久久88 | 37p粉嫩大胆色噜噜噜 | wwwxxoo| 中文字幕精品视频在线观看 | 美女视频国产 | 亚洲一区91| 欧美亚洲一区 | 欧美日韩综合一区二区 | 国产有码| 91黄色在线视频 | 18深夜在线观看免费视频 | tube极品少妇videos | 日韩综合| n0659极腔濑亚美莉在线播放播放 | 久久接色| 无码精品在线观看 | 调教少妇视频 | 免费在线看黄网站 | 日本一区二区三区在线视频 | 日朝毛片 | 国产在线免费观看 | 国产真实偷伦视频 | 色欲国产精品一区二区 | 国产视频日韩 | 美女视频国产 | 99久久婷婷国产一区二区三区 | 婷婷色影院 | 呦呦av| 大奶一区 | 视频在线观看 | 欧美精品videos | 性自由色xxxx免费视频 | 精品久久久久久久久久久久久久久久久久 | 日韩成人动漫在线观看 | 亚洲男女激情 | 亚欧在线 | 丰满人妻一区二区三区大胸 | wwwww在线观看 | 久久久999国产 | 亚洲永久精品一区 | 黄片一区二区 | 午夜国产视频 | 日韩a级大片 | 国产激情视频一区二区 | 欧美性猛片aaaaaaa做受 | 国产精品电影一区 | 夫の上司に犯波多野结衣853 | 婷婷一区二区三区 | 免费国产区| 香蕉a | 黄瓜视频在线免费看 | 美女四肢被绑在床扒衣 | 在线免费毛片 | 91久久久久一区二区 | av免费在线观看网址 | 美味的客房沙龙服务 | 一区二区三区视频在线观看免费 | 狠狠艹视频| 国产原创一区 | 日韩av视屏 | 亚洲天堂欧美在线 | 亚洲视频在线观看免费视频 | 免费亚洲网站 | 欧美做爰性生交视频 | 91久久精品一区二区 | 精品乱码一区二区三区 | 婷婷亚洲综合 | 色小说综合 | 国产在线精品一区二区 | 久久久久国产精品午夜一区 | 亚洲视频欧洲视频 |