前言
Binwalk是一款用于IoT固件解包,提取固件镜像和逆向分析的工具。相对简单易用,自动化脚本,使用比较广泛。目前binwalk最新版本为v2.2.0,新版本网上中文介绍不多,多数以v2.1.1及以前版本为主,且英文术语翻译不甚准确,本文对新版本的参数使用进行中英文对照详细介绍,有兴趣的童鞋可以参考练习。
安装及使用
安装过程,之前博文已近有详细介绍,这里不再重复。已经安装旧版本binwalk,可以先卸载在安装新版本。
$ sudo apt-get remove binwalk
$ sudo apt-get update
$ git clone https://github.com/ReFirmLabs/binwalk
$ cd binwalk
$ sudo python setup.py install
$ binwalk
参数中英文详解
使用binwalk -h可以显示全部参数,按不同功能区分,分为七组。
1. 反汇编扫描(Disassembly Scan Options)
-Y, --disasm :Identify the CPU architecture of a file using the capstone disassembler
使用capstone反汇编程序识别文件中包含的可执行代码的CPU体系结构。
$ binwalk --disasm firmware.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 750 valid instructions
-T, --minsn= :Minimum number of consecutive instructions to be considered valid (default: 500)
将–disasm结果的最小连续指令数设置为有效。默认值为500条指令。
$ binwalk --minsn=1200 -Y firmware.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions
-k, --continue:Don’t stop at the first match
指示反汇编结果连续执行, - disasm不会停在第一个结果。
$ binwalk --continue -Y firmware.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
428 0x1AC MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions
1048576 0x100000 MIPS executable code, 32/64-bit, little endian, at least 1250 valid instructions
...
2. 签名扫描(Signature Scan Options)
-B, --signature:Scan target file(s) for common file signatures
对目标文件执行签名分析,如果未指定其他分析选项,则这是默认值。如果希望将签名分析与其他分析器(例如 - 熵)结合使用,请使用此选项。
$ binwalk --signature firmware.bin
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
0 <