0x03 固件分析
- 固件拖入到kali里面进行下分析:
没有分析出什么有效信息,看下字符串,用16进制编辑器搜索一下蓝牙音箱型号
好,找到型号了,理论上只需要把这里的名字改成新名字就可以了。问题1解决。修改时注意末尾添加0x00和0x33,保持原始数据的结束符。
- 分析到这里时推测该蓝牙音箱为裸机系统,片外flash应该只是保存了配置信息,那么提示音的数据应该也在flash里。搜索Mp3文件头
ID3
字符串,找到了音频信息。 我想确定下这些都是什么提示音,直接给f900s.bin文件改后缀名为f900s.mp3,然后使用audicity打开就可以了。其实这里最开始遇到了一点麻烦,bin文件里除了ID3的音频数据,0x00000地址上有很长一段不知道什么数据,最开始我用导入原始数据的功能导入到audacity里,手动选择数据大小端和mp3编码方式,但是一直不成功。改后缀直接打开后就可以播放听一下了,这里还发现了一段不会在音响的任何工作状态里出现的歌声,哈哈彩蛋一个。
第二个问题关于提示音的解决方案,就是直接在16进制编辑器下,给所有ID3开头的音频数据全部清空写成0x00。理论上就可以了。
- 修改完bin数据后,使用编程器写入新的固件,写入前可以先擦除一下。
0x04 验证
- 写入新的固件以后,把Flash芯片焊接回PCB,给蓝牙音响上电,已经没有开机提示音”蓝牙模式”了,其他操作的提示音也没了。
- 手机连接上去,名字也改过了。
- 至此,文章开头提出的两个问题都已解决。
0x05 遗留问题
- bin文件的起始地址有一大段不知道做什么的数据:
- 一般的低成本SOC方案,主控采用8051内核的单片机。这里猜想可能会是一段程序代码?拖到IDA里面看看。
- 几个特殊的中断向量地址可以加载出来,包括定时器中断和外部中断,但是怎么会有816个function?一定是猜错了。这个不是8051的代码。
- 这个问题一直没有解决,如果有相关蓝牙音箱的开发人员看到这篇文章,见到过这个SOC的蓝牙芯片,望不吝赐教。我的邮箱
"enN6aGVyZUBnbWFpbC5jb20=".decode("base64")
。 - SOC芯片如下