本帖最后由 BurYiA 于 2022-8-4 21:16 编辑
前言:
对一个vxworks系统固件的简单分析。
本篇文章的目的在于熟悉如何去入手分析vxworks固件,对其作一定的了解,希望可以给有需要的人提供一定的帮助(这东西资料确实少)
拿到一个vxworks固件后想要利用ida去分析,首要要做的便是加载基址恢复与函数名恢复(如果有符号表)
binwalk一看发现没有太多有用东西,需要注意的是0x10400处特别大
-e提取文件并对10400处的文件继续binwalk看看
大致分析后可以得知是一个vxworks系统文件,但是好像没有自带符号表,同目录下文件还有很多,尝试搜索看是否有包含符号表的部分
发现确实存在这么一个文件,010editor打开大致看一眼
确实是符号表,整个区间是从0x0008-0xF2E0。
ok,可以进行后续分析了。
架构是ARM架构
ida打开架构选择arm
(PS:这张是借用的图,看懂意思就好)
下一页直接回车,这会先什么都不用改
(同上)
在最开始按c将开头的一部分数据化为代码
大致可以看出基址是0x40205000(SP寄存器,详情请查阅vxworks文档)
接下来更改加载基址,可以手动可以利用脚本
手动需要关闭ida清除分析数据库重新打开固件(如果懂idapython的话可以在下方命令行输入函数修改基址),并在基址设置处填写ROM start address与Loading address,界面如下图
(PS:图片仅供参考)
自动可以利用vxhunter脚本(github地址: https://github.com/PAGalaxyLab/vxhunter)PS: 高版本IDA部分代码可能需要自己手动修改
改了好大一会脚本?很烦。vxhunter_ida_py3.py的load_symbols函数(Debug是真的费劲),修改后的部分如下所示:
利用vxhunter将刚才的符号表导入进来进行符号修复,修复的还算完美
先看usrAppInit(一般来说是用户侧的管理函数)
在cmdProtectInit中发现有密码相关的代码存在
大致分析后可以得到admin的密码规则
|