说明
注:以项目为主线,完成任务并且有时间可以深入分析,之后会补充详细的工具使用
这里对常用工具进行说明。
下载或提取到的固件是包含整个操作系统和文件系统的。包括boot-loader(一般是uboot,用来引导系统启动),linux内核,文件系统。需要的是文件系统,厂商自己定义的代码一般在文件系统里主要分析的也是文件系统里的文件
- binwalk可以用来解压,把一个固件解压找到它的文件系统分析单个文件。
- ghidra可以用来反编译,iot固件一般不用x86架构用的arm和mips比较多。ghidra是一个比较好的其他架构语言反编译工具
- qemu 动态调试工具。调试起来比较麻烦,从项目角度动态调试一般用不到
binwalk
安装
官方的安装文档,注意需要把上面的工具都安装了(不安装也能用但是会有一些文件系统解压不出来)
https://github.com/ReFirmLabs/binwalk/blob/master/INSTALL.md
比较坑的是上面写了一堆下面说官方准备好了一键安装脚本
遇到问题
E: 无法定位软件包 cramfsprogs
可以取官网下载这个包https://packages.ubuntu.com/xenial/amd64/cramfsprogs/download
然后安装dpkg -i xxxx.deb
常用命令
binwalk -Me xxxx.bin
- M表示递归(镜像可能会进行很多层压缩)
- e表示解压,会生成一个文件夹
用find . |grep httpd
可以找到httpd文件所在的目录
- find是搜索一个路径,递归底下所有的文件夹,文件
- |grep表示过滤,只在显示器上显示包含httpd的目录
file xxx
命令可以查看二进制文件的信息
- LSB表示小端字节序
- ARM是cpu架构
ghidra
ghidra 用于反编译mips架构(一种cpu架构,路由器比较常用,跟arm,x86,amd一类)的程序。ida只能看到mips架构程序的汇编,这个工具可以反编译。结合ida使用。
效果如图
下载 https://ghidra-sre.org/ (暂时不能用,在其他地方找资源吧)
常用命令:
- g:跳转到某个地址或函数
- ctrl+shift+e 搜索字符串
- 查找交叉引用如下