hex檔案分析
用文字隨便開啟一個檔案都可以看到hex檔案的內容。例如:
:020000040800F2
:1000000080040020690100087101000873010008E4
:1000100000000000000000000000000000000000E0
:100020000000000000000000000000007501000852
:1000300000000000000000007701000879010008BE
“““““
“““““
“““““
:1005E0002001000800000000006CDC020000000098
:1005F00000000000010203040607080900000000D3
:04000005080000C12E
:00000001FF
上面就是一個hex檔案內容首尾的一部分資料,從內容中很明顯可以看出這不是二進位制資料。Hex檔案是用ASCII來表示二進位制的數值,十六進位制陣列成的指令或者資料,每一行就是一個hex記錄。由於微控制器執行的只能是二進位制指令和資料,而hex檔案是十六進位制數,所以燒錄器的工作必然有一個進位制轉換機制。具體機制怎麼實現暫時可以不管,知道是燒錄器處理的就行了。從這裡可以找出第二問題的答案。
hex檔案的每一行資料記錄都是以行為單位,每行從“:”(0x3a)開始,這從檔案內容可以看出。以Enter鍵結束(0x0d,0x0a),每行以換行結束。每行的資料都是由兩個字元表示一個16進位制位元組,例如第一行,:020000040800F2中的“02”表示數為0x02,“F2”就表示為0xF2。如果資料位地址時,地址高位在前低位在後。
以上面內容的第二行資料為例,進行詳細解析:
:1000000080040020690100087101000873010008E4
1、“:”表示一行的開始;
2、第1、2個字元1和0,即“0x10”表示本行包含的資料長度為16個;
3、第3、4、5、6個字元,固定這4位表示地址,即“0000”表示資料儲存的起始地址,表示在0x0000地址開始存放本行包含的16個資料。
4、第7、8個字元,固定這2位表示本行包含資料資料的型別,即“00”表示本行包含的資料為實際燒寫的資料。而資料的型別有如下幾種:
“00”表示實際資料記錄
“01”表示檔案結束記錄
“02”表示擴充套件段地址記錄
“04”表示擴充套件線性地址記錄
5、由前兩個字元“10”可知本行的資料長度位16個位元組,所有往後的32個字元就是本行包含的資料,每兩個字元表示一個位元組資料,總共有16個位元組資料。跟最前兩個字元決定的長度一致。但是這個資料的長度不是固定的,例如最後一行00000001FF,這行包含的資料長度0,沒有資料。
6、最後兩個字元為本行的校驗碼。
通過上面的幾點分析可以總結出hex檔案的每一行的格式:
<0x3a>[資料長度1Byte][資料地址2Byte][資料型別1Byte][資料nByte]
[驗證碼1Byte]<0x0d><0x0a>
校驗的演算法:
計算從(0x3a)以後的所有各位元組的和模256的餘。即各位元組二進位制算術和,不計超過256的溢位值,然後用0x100減去這個算數累加和,得出的值就是此行校驗碼。舉一個簡單的例子,如第一行020000040800F2
0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E
0x100 – 0x0E = 0xF2.
相關文章
- 【Hex】什麼是英特爾 HEX 檔案格式
- APK 檔案分析APK
- 如何在keil中生成hex檔案,並下載到51微控制器中
- hdfs小檔案分析
- ELF檔案逆向分析
- 分析Mach-O檔案Mac
- 【Blazor】1-Blazor專案檔案分析Blazor
- Apache Tomcat檔案包含漏洞分析ApacheTomcat
- 標頭檔案的作用分析
- REdis AOF檔案結構分析Redis
- vue原始碼分析系列之入口檔案分析Vue原始碼
- MQTT接收HEX(2/2)MQQT
- mach-o 檔案分析(解析類)Mac
- 21.1 Python 使用PEfile分析PE檔案Python
- 取證中exe檔案的分析
- Gixy–分析Nginx配置檔案的工具Nginx
- Visual Studio 快速分析 .NET Dump 檔案
- tempdb日誌檔案暴增分析
- tempdb資料檔案暴增分析
- 專案中常用的 .env 檔案原理原始碼分析原始碼
- RxDownload2 檔案下載太慢分析
- Linux檔案系統與日誌分析Linux
- XLOG段檔案跳號現象分析
- Novter無檔案攻擊分析報告
- 表`t`的INODE結構檔案分析
- zabbix agent 日誌檔案輪詢分析
- SpringBoot配置檔案讀取過程分析Spring Boot
- Springboot 載入配置檔案原始碼分析Spring Boot原始碼
- Spark Shuffle Write階段磁碟檔案分析Spark
- 達夢8分析core檔案
- linux檔案系統和日誌分析Linux
- 轉:使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- css12 CSS HEX ColorsCSS
- Java實現密碼、檔案MD5加密,密碼sha256、sha384、sha512Hex等加密Java密碼加密
- [TIL] 如何使用 hex editor (二進位制編輯器)修改遊戲存檔遊戲
- 例項分析JAVA CLASS的檔案結構Java
- Java Class檔案結構例項分析(下)Java
- Java Class檔案結構例項分析(上)Java