固件逆向的工具,firmware-mod-kit是集大成者
转自 路由器逆向分析——firmware-mod-kit工具安装和使用说明
firmware-mod-kit工具的安装(Ubuntu)
firmware-mod-kit工具的功能和binwalk工具的类似,其实firmware-mod-kit工具在功能上有调用binwalk工具提供的功能以及其他的固件解包工具的整合。下载firmware-mod-kit工具的源码进入到src目录下就能够看到firmware-mod-kit工具整合了那些固件提取和文件系统解压的工具。firmware-mod-kit工具的功能有固件文件的解包和打包、固件提取文件系统的解压和压缩、DD-WRT Web Pages的修改等,在每个整合的固件分析工具的源码文件夹里都有相关的使用说明。
安装依赖
1 | $ sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic |
正式安装
1 | git clone https://github.com/mirror/firmware-mod-kit.git |
使用
解包固件提取内核和文件系统
1 | $ ./extract-firmware.sh firmware.bin |
重打包解包的内核和文件系统重建固件文件
1 | $ ./build-firmware.sh [-nopad] [-min] |
详见文档
附binwalk的使用方法
binwalk的提取与分析
固件扫描
命令:binwalk firmware.bin —–> 通过扫描能够智能地发现目标文件中包含的所有可识别的文件类型。
提取文件
命令:binwalk -e firmware.bin ——> 选项“-e”和“–extract”用于按照定义的配置文件中的提取方法从固件中提取探测到的文件系统。
命令:binwalk -Me firmware.bin —–> 选项“-M”和“–matryoshka”用于根据magic签名扫描结果进行递归提取,仅对”-e”和“–dd”选项有效。
命令:binwalk -Me -d 5 firmware.bin —-> 选项“-d”和“–depth=
显示完整的扫描结果
命令:binwalk -I firmware.bin ——> 选项”-I”和“–invalid”用于显示扫描的所有结果(即使是扫描过程中被定义为“invalid“的项)。
当我们认为binwalk错把有效的文件当成无效文件时,可以通过该选项来检查。
指令系统分析
选项“A”和“–opcodes”用于扫描指定文件中通用CPU架构的可执行代码。
由于某些操作码签名比较短,所以比较容易造成误判。如果我们需要确定一个可执行文件的CPU架构,可以使用该命令。
命令:命令:binwalk -A 70|more
使用Binwalk扫描从firmware.bin中提取的文件的文件“70”中的可执行代码,在该文件中可以发现CPU的架构(大端或者小端也会给出)。