首页 > 其他分享 >固件外设仿真处理工具——Laelaps

固件外设仿真处理工具——Laelaps

时间:2024-11-23 18:33:56浏览次数:9  
标签:1.2 -- qemu Laelaps 固件 txt 安装 docker 外设

0 .论文(先敬大佬)

Cao C, Guan L, Ming J, et al. Device-agnostic firmware execution is possible: A concolic execution approach for peripheral emulation[C]//Proceedings of the 36th Annual Computer Security Applications Conference. 2020: 746-759.

论文地址:Device-agnostic Firmware Execution is Possible: A Concolic Execution Approach for Peripheral Emulation | Proceedings of the 36th Annual Computer Security Applications Conferenceicon-default.png?t=O83Ahttps://dl.acm.org/doi/10.1145/3427228.3427280

关键点:符号执行优化、工具集成完整、concolic混合执行

1 .Laelaps部署

1.1 Docker安装(github也提供VM文件)

安装在VM虚拟机中,使用的是Ubuntu 18.04版本

sudo docker pull guanleustc/laelaps:1.0

Sudo docker run -it guanleustc/laelaps:1.0 /bin/bash

若无docker,可以通过sudo snap install docker进行安装

进入系统中

sudo docker run -it guanleustc/laelaps:1.0 /bin/bash

1.2 源码安装

1.2.1 安装 Python virtualenvwrapper 

链接:https://virtualenvwrapper.readthedocs.io/en/latest/

安装virtualenvwrapper可以建立一个隔离的环境,将环境所需的依赖进行单独存储,而不污染本地依赖环境。

Virtualenvwrapper的使用教程链接:https://zhuanlan.zhihu.com/p/70389886

以下所有步骤都在此虚拟环境中操作。因此,请先执行此命令。

workon laelaps

1.2.2 构建 qemu-3.0.0

sudo apt-get build-dep -y qemu

mkdir ./build && cd ./build

../qemu-3.0.0/configure --python=python3 --target-list="arm-softmmu" --disable-vnc --disable-curses --disable-sdl --disable-hax --disable-rdma --enable-debug

make

可以在以下路径中找到PATH.qemu-system-armarm-softmmu/qemu-system-armqemu-system-arm

1.2.3 下载 ARM GCC 工具链

链接:

https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2

解压缩并将目录放在PATH.BIN

1.2.4 安装 angr

wget https://files.pythonhosted.org/packages/35/19/07442cc5789f6c40eae7ea2bd34a04402fa94f9e3d94cba0ab8354d231cf/angr-8.19.2.4.tar.gz

tar xf angr-8.19.2.4.tar.gz

cd angr-8.19.2.4

pip install -e ./

CD 到 angr 的根目录,并使用以下命令对其进行操作。

patch -p1 < $(root_of_this_repo)/p.patch

1.2.5 安装 avatar2

cd avatar2

pip install -e ./

1.2.6 安装 concolic

cd concolic

pip install -e ./

此时手动源码安装完成

2 测试STM32100E-EVAL MCU_RTOS

测试采用的是docker部署模式进行演示,若使用是源码编译,唯一不同的是就是需要输入workon laelaps,进入virtualenvwrapper 虚拟环境。

2.1 固件文件

固件文件存储在项目PATH的proj/proj_stm_stm32100e_eval_rtos_readWrite中

2.2 测试过程

  1. 运行内部的driver.py脚本启动仿真

./driver.py

  1. Read操作过程

  1. Write操作过程

  1. 处理完所以的read和write请求后,系统进行等待状态,程序进入中断
  2. 在另一个终端输入

./scratch/kill.sh

即可停止仿真程序

注:若出现无法找到Killall命令

执行命令,安装所需依赖即可

apt-get install psmisc

2.3 测试结束

仿真结束后会在相应的文件夹中生成logfiles和myavatar日志文件夹,如下图

2.3.1 Logfiles 路径检索结果

Debug.txt文件是程序在执行中的输出结果,例如程序执行中输出hello world ,此时输入的结果会被debug保留在debug.txt文件中

Laelaps.txt中存储着程序执行过程,和终端输出相同

Real_path.txt记录的是外设路径检索的结果,即外设仿真模拟路径的最终结果

2.3.2 Myavatar 仿真结果

此结果是在Avatar2的结果上进行的改进

其中qemuTarget0.log是qemu执行的日志,即路径选择后,程序执行的报告

QemuTarget0_err.txt 记录了程序内部函数跳转过程,表示方式和IDA中的反编译窗口一样

最后记录了程序错误点

QemuTarget0_out.txt 记录了程序的中断过程

标签:1.2,--,qemu,Laelaps,固件,txt,安装,docker,外设
From: https://blog.csdn.net/gromatic/article/details/143944730

相关文章

  • STM32CubeMX下载芯片固件库失败
    1.错误截图使用STM32CubeMX下载STM32H7R固件失败如下所示:Forunavailablefiles,youcandownloadthemmanuallywiththe"FromLocalbutton"实际图片如下所示出现这个问题的时候,STM32CubeMX的软件重新卸载和安装过,但是均无效。网络也更换过,也无效,所以只有通过错误的......
  • SAN交换机配置的备份还原,固件升级
    SAN交换机配置的备份还原,固件升级 FTPServer:使用3CDeamon这个软件(设置过程略)     ......
  • Linux 外设驱动 应用 3 串口
    3串口3.1串口原理串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIARS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口通讯......
  • PKG系统安装包及IPSW固件:MacOS 11-14 正式版
    MacOS 14Sonoma,为提高生产力和创造力带来了全新的功能,有了更多使用小部件和令人惊叹的新屏幕保护程序进行个性化设置的方法,对Safari浏览器和视频会议进行了重大更新,以及优化的游戏体验——Mac体验比以往任何时候都更好。下载地址:点击下载支持机型2019年以及后续的iMa......
  • 外设管控是什么,都有哪些方法可以管控外设(外设管控的六个小技巧)
    外设管控是指通过技术手段和管理策略,控制外接设备的使用,防止数据泄露或安全风险。以下是一些常见的外设管控方法:1.USB端口管控USB接口是最常见的外设连接方式,也是数据泄露的高风险途径之一。以下是针对USB接口的管控方法:禁用或限制USB端口:使用软件禁用未授权的USB设备,仅......
  • 螺丝、螺母、垫片等紧固件常用类型详细介绍
    螺钉、螺母、垫片等紧固件介绍螺钉杯头内六角首先介绍一下杯头内六角,杯头内六角是我们用的最常见的一种螺钉,如果你对选择螺钉没有什么想法,可以直接无脑选杯头内六角去使用。比如说我们有一个零件加工了通孔,另一个零件加工了螺纹孔,我们只要把螺钉穿过通孔的零件,然后锁......
  • 铝型材及其常用紧固件、连接件介绍
    铝型材介绍(包括紧固件和连接件以及走线)铝型材铝型材一般是6063铝合金挤压成型,分为欧标和国标两个标准。(左边国标,右边欧标,欧标槽宽一点)由于槽型不一样,相关的螺栓和螺母也是分欧标和国标的。下面,我们就用欧标铝型材来做例子进行介绍。铝型材一般是按系列分的,常用的比......
  • ROM修改进阶教程------如何修改固件 线刷转卡刷 卡刷转线刷 操作中的一些注意事项
            在接待各种rom定制化服务中。有很多客户需要各种各样的需求。包括修改rom默认开启usb调试类默认开启开发者选项。修改不锁屏 不休眠跳过开机引导以及一些内置app和可卸载app等等的定制项目。还有很多导出系统导出数据完整恢复类要求。今天给大......
  • stm32 SPI通信外设(硬件SPI读写W25Q64)
    理论1.SPI外设简介STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担可配置8位/16位数据帧、高位先行/低位先行时钟频率:fPCLK/(2,4,8,16,32,64,128,256)支持多主机模型、主或从操作可精简为半双工/单工通信支持DMA兼......
  • 一分钟在线编译定制专属固件: openwrt.ai
    https://github.com/kiddin9/Kwrt?tab=readme-ov-file  KwrtPublic Watch96Fork 3k Star 7.4k kiddin9/Kwrt   master1 Branch0 TagstAddfileAddfile CodeFoldersandfilesName  ......