SuperAPI AI 工具集

re-fw-emulate

安全与审计

查看项目

更新于 10-15 21:34

技能介绍

用途:需要运行固件内程序观察行为、验证假设(如固件 Web 界面、服务端逻辑),或 rootfs 已解出需整体启动时使用。只需静态分析、仅有实物板子需真实硬件交互、或目标只是解包看内容时不适用。

主要能力:

  1. qemu-user 用户态仿真(最轻,优先)。安装如 apt install qemu-user、brew install qemu,验证 qemu-arm --version、qemu-mips --version(大端)、qemu-mipsel --version(小端)。基本用法:先 file rootfs_out/usr/sbin/httpd 确认架构,再 qemu-arm -L rootfs_out rootfs_out/usr/sbin/httpd,其中 -L 把 rootfs 当 sysroot。缺库时用交叉 ldd/readelf -d 查看依赖并从 rootfs 补库;可加 -E 传环境变量,-strace 记录系统调用,-0 <argv0> 伪造 argv[0],-cpu 指定 CPU。
  2. qemu-system 全系统仿真。安装 qemu-system-arm、qemu-system-mips 等。可指定 -M 平台、-kernel、-initrd、-nographic 与 -append 内核参数;rootfs 可制作为 ext2 磁盘镜像或 cpio initramfs,也可用 -drive 挂盘。
  3. binfmt_misc 直接执行交叉程序,Linux 下装 binfmt-support 与 qemu-user-static,用 update-binfmts --enable qemu-arm 注册;macOS/Windows 不支持。
  4. gdb-multiarch + gdbserver 交叉调试,qemu 加 -g 1234 起 gdbstub,宿主用 target remote :1234。
  5. firmadyne 为全系统自动仿真框架,安装 git clone https://github.com/firmadyne/firmadyne,依赖 qemu-system-* 与预编译内核,首次搭建较重,多数单程序分析不需要它。

使用方式:仿真即动态执行,默认沙箱加网络隔离。全系统仿真不加网络参数会默认建 NIC 加 user 后端,应先显式 -nic none。用户态仿真不是网络沙箱,需要受控网络应改用全系统方案。外设寄存器访问崩溃可用 strace 定位访问点,以 LD_PRELOAD 提供 stub 库返回假值;全系统可用 -device 挂虚拟外设,真实芯片外设无法模拟时打补丁或 stub ioctl。

限制与常见坑:架构或字节序选错会直接崩溃,须先确认;网卡型号不符会卡在初始化;QEMU 虚拟时钟可能令时间戳异常;不做网络隔离可能导致固件真实回连外网;仿真跑不起来的程序应回退静态分析。