Air720固件分析系列A-结构分析

Air720固件分析系列-结构分析

提醒

本系列文章为个人分析结果,不代表官方,如有遗漏,非常正常,欢迎指正^_^

分析材料

AT固件 AirM2M_720_V337_LTE_AT.blf
位于 data\default_lod\asr1802At\720\AirM2M_720_V337_LTE_AT

一些准备知识

  1. Air720的核心asr1802广泛用于mifi,所以出现mifi字眼很正常
  2. Air720有Nor和Nand两个版本,刷机会不一样,但新版luatools已经屏蔽差异

分析

首先, 顶层的blf是一个zip压缩包

使用7zip, 解压N个文件:

文件名 含义
720.blf Air720刷机定义,这些就不是压缩包了,是文本文件
720D.blf Air720D刷机定义,移动双模
720H.blf Air720H刷机定义,全网通五模
AddtionalAPN.bin 附加APN,猜测是为国外运营商准备的
FIC_SKY_v176_Hezhou_32X29_Skyworks_SKY77645_SKY77912_GSM.bin 功率放大器的数据文件
FIC_SKY_v176_Hezhou_32X29_Skyworks_SKY77645_SKY77912_GSM_lzma.bin 功率放大器的数据文件
FIC_SKY_v176_Hezhou_32X29_Skyworks_SKY77824_SKY77912_082018_CLC.bin 功率放大器的数据文件
FIC_SKY_v176_Hezhou_32X29_Skyworks_SKY77824_SKY77912_082018_CLC_lzma.bin 功率放大器的数据文件
Lua_socket_demo.bin Luat的socket demo代码,不知道为啥在这里
Nezha_loader_MIFI_V5_NOR.bin 为NOR设备准备的bootloader
Nezha_loader_MIFI_V5_NOR_Release.bin 为NOR设备准备的bootloader,压缩包版?
Nezha_loader_MIFI_V5_SPI_NAND.bin 为NAND设备准备的bootloader
Nezha_loader_MIFI_V5_SPI_NAND_Release.bin 为NAND设备准备的bootloader
ntim_ddr.bin 未知,可能是DDR配置文件,总是第一个写入闪存
NZ_CP_LWG_MIFI_V5_TX.bin 某种MIFI固件?
NZ_CP_LWG_MIFI_V5_TX_lzma.bin 某种MIFI固件的lzma压缩包
NZ_LWG_M09_B0_SKL_Flash.bin 未知
NZ_LWG_M09_B0_SKL_Flash_lzma.bin 上一个文件的lamz压缩包
ReliableData+FDD-B138+TDDB38-41.bin 基带数据
WebData.bin MIFI网页管理工具

720.blf内容分析

  1. [BLF_Version]
  2. Blf_Version_Number = V2.0.0 //版本号
  3. [UE_Options]
  4. UE_Boot_Option = 0
  5. [Flash_Properties]
  6. Flash_Block_Size = 0x10000
  7. Max_Upload_Split_Size = 0x1cff000
  8. Max_FBF_Split_Size = 0x1cff000
  9. Flash_Family = SPI-NOR // 内部存储的类型, 有NOR和NAND两种
  10. Spare_Area_Size = 64
  11. Data_Area_Size = 2048
  12. FBF_Sector_Size = 4096
  13. [Flash_Options]
  14. Skip_Blocks_Number =
  15. Erase_All_Flash = 0
  16. Reset_BBT = 0
  17. [TIM_Configuration]
  18. Number_of_Images = 9 // 这个数值决定了Image_List段的数量
  19. Number_of_Keys = 0
  20. Boot_Flash_Signature = 0x5350490A
  21. Processor_Type = PXA1202
  22. OEM_UniqueID = 0x21796B53
  23. Issue_Date = 0x20091029
  24. Version = 0x00030400
  25. Trusted = 0
  26. [Reserved_Data]
  27. UARTID
  28. Port(FFIDENTIFIER) = 0x00004646
  29. Enabled = 0x00000001
  30. End_UARTID
  31. LTWS
  32. LWG only = 0x00000003
  33. End_LTWS
  34. TRFU
  35. Enabled = 0x00000001
  36. Flash_Address = 0x041C0000
  37. Magic = 0x54524657
  38. End_TRFU
  39. End_Reserved_Data
  40. [EraseOnly_Option]
  41. Total_Eraseonly_Areas = 1
  42. 1_Eraseonly_Area_Size = 0x03000000
  43. 1_Eraseonly_Area_FlashStartAddress = 0x010E0000
  44. 1_Eraseonly_Area_Partition = 0
  45. [Extended_Reserved_Data]
  46. Consumer_ID
  47. CID = TBRI
  48. PID = DDR1
  49. End_Consumer_ID
  50. DDR_Initialization
  51. DDR_PID = DDR1 // DDR类型,可以看出是DDR 1代,对MCU来说是够的
  52. DDROperations
  53. DDR_INIT_ENABLE = 0x00000001
  54. DDR_MEMTEST_ENABLE = 0x00000000 // MEMTEST,有点像linux了?但据说是rtos系统
  55. End_DDROperations
  56. Instructions
  57. WRITE = <0xB0000010,0xB0000000>
  58. WRITE = <0xB0000020,0x00001220>
  59. WRITE = <0xB0000080,0x01800000>
  60. WRITE = <0xB0000090,0x00080000>
  61. WRITE = <0xB00000F0,0xC0000000>
  62. WRITE = <0xB00001A0,0x20C0C011>
  63. WRITE = <0xB0000770,0x02000000>
  64. WRITE = <0xB0000570,0x00000001>
  65. WRITE = <0xB0000100,0x00090601>
  66. WRITE = <0xB0000050,0x488B0196>
  67. WRITE = <0xB0000060,0x32330102>
  68. WRITE = <0xB0000190,0x20101009>
  69. WRITE = <0xB00001C0,0x12820002>
  70. WRITE = <0xB0000650,0x00080022>
  71. WRITE = <0xB0000280,0x02020102>
  72. WRITE = <0xB0000210,0x00000000>
  73. WRITE = <0xB0000240,0x80000000>
  74. WRITE = <0xB0000140,0x20004422>
  75. WRITE = <0xB00001D0,0x1330077D>
  76. WRITE = <0xB00001E0,0x03300770>
  77. WRITE = <0xB00001F0,0xC0000077>
  78. WRITE = <0xB0000200,0x0010310C>
  79. WRITE = <0xB0000230,0xF0500003>
  80. WRITE = <0xB0000E10,0x00500003>
  81. WRITE = <0xB0000E20,0x00500003>
  82. WRITE = <0xB0000E30,0x00500003>
  83. WRITE = <0xB0000240,0x20000000>
  84. WRITE = <0xB0000240,0x40000000>
  85. WRITE = <0xB0000200,0x0010311C>
  86. WRITE = <0xB0000120,0x00000001>
  87. WAIT_FOR_BIT_SET = <0xB00001B0,0x00000001,0x00001000>
  88. End_Instructions
  89. End_DDR_Initialization
  90. End_Extended_Reserved_Data
  91. [Image_List]
  92. // 这一段是每个区域的镜像数据, 循环的,所以只分析第一个
  93. 1_Image_Enable = 1 // 部分enable=1,部分是0, 应该是启用/禁用的意思
  94. 1_Image_Tim_Included = 1 // 未知含义
  95. 1_Image_Image_ID = 0x54494D48 // 当前image的id
  96. 1_Image_Next_Image_ID = 0x4F424D49 // 下一个image的id
  97. 1_Image_Path = ntim_ddr.bin // 数据文件来源
  98. 1_Image_Flash_Entry_Address = 0x00000000 // 写入的基地址,非常重要
  99. 1_Image_Load_Address = 0xD1101000 // 载入地址
  100. 1_Image_Type = RAW // 数据文件格式,这里是裸数据
  101. 1_Image_ID_Name = TIMH // 好像是一种内部命名
  102. 1_Image_Erase_Size = // 需要抹除的区域,WebData.bin之类的会设置
  103. 1_Image_Partition_Number = 0
  104. 1_Image_Size_To_CRC_in_bytes = 0
  105. 1_Image_Hash_Algorithm_ID =
  106. 1_Image_Image_Size_To_Hash_in_bytes =
  107. 2_Image_Enable = 1
  108. 2_Image_Tim_Included = 1
  109. 2_Image_Image_ID = 0x4F424D49
  110. 2_Image_Next_Image_ID = 0x52424C49
  111. 2_Image_Path = Nezha_loader_MIFI_V5_SPI_NAND.bin
  112. 2_Image_Flash_Entry_Address = 0x00006000
  113. 2_Image_Load_Address = 0x01C00000
  114. 2_Image_Type = RAW
  115. 2_Image_ID_Name = OBMI
  116. 2_Image_Erase_Size =
  117. 2_Image_Partition_Number = 0
  118. 2_Image_Size_To_CRC_in_bytes = 0
  119. 2_Image_Hash_Algorithm_ID =
  120. 2_Image_Image_Size_To_Hash_in_bytes =
  121. 3_Image_Enable = 0
  122. 3_Image_Tim_Included = 1
  123. 3_Image_Image_ID = 0x52424C49
  124. 3_Image_Next_Image_ID = 0x52424C52
  125. 3_Image_Path = ReliableData+FDD-B138+TDDB38-41.bin
  126. 3_Image_Flash_Entry_Address = 0x00020000
  127. 3_Image_Load_Address = 0x01D4F000
  128. 3_Image_Type = RAW
  129. 3_Image_ID_Name = RBLI
  130. 3_Image_Erase_Size = 0x00020000
  131. 3_Image_Partition_Number = 0
  132. 3_Image_Size_To_CRC_in_bytes = 0
  133. 3_Image_Hash_Algorithm_ID =
  134. 3_Image_Image_Size_To_Hash_in_bytes =
  135. 4_Image_Enable = 0
  136. 4_Image_Tim_Included = 1
  137. 4_Image_Image_ID = 0x52424C52
  138. 4_Image_Next_Image_ID = 0x4F534C4F
  139. 4_Image_Path = ReliableData+FDD-B138+TDDB38-41.bin
  140. 4_Image_Flash_Entry_Address = 0x00040000
  141. 4_Image_Load_Address = 0x01D4F000
  142. 4_Image_Type = RAW
  143. 4_Image_ID_Name = RBLR
  144. 4_Image_Erase_Size = 0x00020000
  145. 4_Image_Partition_Number = 0
  146. 4_Image_Size_To_CRC_in_bytes = 0
  147. 4_Image_Hash_Algorithm_ID =
  148. 4_Image_Image_Size_To_Hash_in_bytes =
  149. 5_Image_Enable = 1
  150. 5_Image_Tim_Included = 1
  151. 5_Image_Image_ID = 0x4F534C4F
  152. 5_Image_Next_Image_ID = 0x47524249
  153. 5_Image_Path = NZ_CP_LWG_MIFI_V5_TX.bin
  154. 5_Image_Flash_Entry_Address = 0x00060000
  155. 5_Image_Load_Address = 0x00000000
  156. 5_Image_Type = RAW
  157. 5_Image_ID_Name = OSLO
  158. 5_Image_Erase_Size = 0x00A00000
  159. 5_Image_Partition_Number = 0
  160. 5_Image_Size_To_CRC_in_bytes = 0
  161. 5_Image_Hash_Algorithm_ID =
  162. 5_Image_Image_Size_To_Hash_in_bytes =
  163. 6_Image_Enable = 1
  164. 6_Image_Tim_Included = 1
  165. 6_Image_Image_ID = 0x47524249
  166. 6_Image_Next_Image_ID = 0x57454249
  167. 6_Image_Path = NZ_LWG_M09_B0_SKL_Flash.bin
  168. 6_Image_Flash_Entry_Address = 0x00A60000
  169. 6_Image_Load_Address = 0x01D80000
  170. 6_Image_Type = RAW
  171. 6_Image_ID_Name = GRBI
  172. 6_Image_Erase_Size = 0x00280000
  173. 6_Image_Partition_Number = 0
  174. 6_Image_Size_To_CRC_in_bytes = 0
  175. 6_Image_Hash_Algorithm_ID =
  176. 6_Image_Image_Size_To_Hash_in_bytes =
  177. 7_Image_Enable = 1
  178. 7_Image_Tim_Included = 0
  179. 7_Image_Image_ID = 0x57454249
  180. 7_Image_Next_Image_ID = 0x5246424E
  181. 7_Image_Path = WebData.bin
  182. 7_Image_Flash_Entry_Address = 0x00D60000
  183. 7_Image_Load_Address = 0xFFFFFFFF
  184. 7_Image_Type = RAW
  185. 7_Image_ID_Name = WEBI
  186. 7_Image_Erase_Size = 0x00200000
  187. 7_Image_Partition_Number = 0
  188. 7_Image_Size_To_CRC_in_bytes = 0
  189. 7_Image_Hash_Algorithm_ID =
  190. 7_Image_Image_Size_To_Hash_in_bytes =
  191. 8_Image_Enable = 0
  192. 8_Image_Tim_Included = 1
  193. 8_Image_Image_ID = 0x5246424E
  194. 8_Image_Next_Image_ID = 0x41504E4C
  195. 8_Image_Path = FIC_SKY_v176_Hezhou_32X29_Skyworks_SKY77645_SKY77912_GSM.bin
  196. 8_Image_Flash_Entry_Address = 0x01060000
  197. 8_Image_Load_Address = 0x01FDFFC0
  198. 8_Image_Type = RAW
  199. 8_Image_ID_Name = RFBN
  200. 8_Image_Erase_Size = 0x00020000
  201. 8_Image_Partition_Number = 0
  202. 8_Image_Size_To_CRC_in_bytes = 0
  203. 8_Image_Hash_Algorithm_ID =
  204. 8_Image_Image_Size_To_Hash_in_bytes =
  205. 9_Image_Enable = 1
  206. 9_Image_Tim_Included = 0
  207. 9_Image_Image_ID = 0x41504E4C
  208. 9_Image_Next_Image_ID = 0xFFFFFFFF
  209. 9_Image_Path = AddtionalAPN.bin
  210. 9_Image_Flash_Entry_Address = 0x041A0000
  211. 9_Image_Load_Address = 0xFFFFFFFF
  212. 9_Image_Type = RAW
  213. 9_Image_ID_Name = APNL
  214. 9_Image_Erase_Size =
  215. 9_Image_Partition_Number = 0
  216. 9_Image_Size_To_CRC_in_bytes = 0
  217. 9_Image_Hash_Algorithm_ID =
  218. 9_Image_Image_Size_To_Hash_in_bytes =

下一篇文章,会分析WebData.bin的文件结构

  • 发表于 2018-10-18 15:04
  • 阅读 ( 3258 )
  • 分类:默认分类

0 条评论

请先 登录 后评论
不写代码的码农
技术销售Wendal

软件工程师

15 篇文章

作家榜 »

  1. 技术销售Delectate 43 文章
  2. 陈夏 26 文章
  3. 国梁 24 文章
  4. miuser 21 文章
  5. 晨旭 20 文章
  6. 朱天华 19 文章
  7. 金艺 19 文章
  8. 杨奉武 18 文章