magma测试与安装,使用(含docker配置)

2023-11-13

Docker的配置与安装

Docker更改镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://non8v4km.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker下载ubuntu

docker pull ubuntu:<version>, 其中<version>代表的版本,我选的是18.04,即docker pull ubuntu:18.04

docker运行进入容器

在docker1.3.x之后提供了一个新的命令exec用于进入容器,下面我们看一下以下的命令:
开始启动容器: sudo docker run -it ubuntu:18.04 /bin/bash
exit退出容器
查看所有的容器 sudo docker ps -a
停止一个容器:docker stop <容器 ID>
进入一个已经运行的容器 docker exec -it <容器ID> /bin/bash

以下是我进入docekr的命令

  • docker run -itd --name <自己命名的名字> ubuntu:18.04 /bin/bash
  • docker exec -it <容器ID> /bin/bash

通过Dockfile更改docker中ubuntu的apt源

在Dockerfile中添加如下代码

RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean

docker容器中的ubuntu的配置

下载vim:
  • apt-get update
  • apt-get install vim

更改镜像源

vim /etc/apt/sources.list

#  阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

运行magma

运行magma时一定不要加root权限!!!!!!, 在docker下载完成后就可以进行测试

  • 配置captainrc,根据官网,进行配置
  • 进入/path/to/magma/tools/,运行./run.sh
    然后就可以跑通,如果有问题前往官网问题解答,需科学上网

Got permission denied while trying to connect to the Docker daemon socket

将Docker加入权限

github镜像网站的配置

镜像网站加速项目

magma中run.sh的配置,即captainrc的配置

WORKDIR

定义了run.sh的当前实例将存储其输出和瞬态结果的目录的路径,WORKDIR目录具有以下的层次结构

./
|
-- cache: 当前运行的活动的临时存储
|
-- ar: 存档的活动结果(可选压缩包)
|
-- log: docker 构建时和运行时日志
|
-- poc: 收集触发已知错误或新崩溃的测试用例

cachear子文件夹拥有以下的层次结构:

./
|
-- [FUZZER]
|  |
|  -- [TARGET]
|  |  |
|  |  -- [PROGRAM]
|  |  |  |
|  |  |  -- [RUN]
|  |  ...
|  ...
...

每个 [RUN] 目录都会包含此活动的运行时结果:

./
|
-- findings:为模糊测试提供的输出目录
|
-- log:fuzzer的stdout和stderr流,存储在log/current中
|
-- monitor: 包含检测结果的带时间戳的文件
Repeat

指定了每个实验必须重复的次数.如上所述,每个重复都在工作目录层次结构分配了一个本地的RUN序列号

WORKER_MODE

它定义了CPU资源分配的线程

  1. 逻辑核心
  2. 物理核心
  3. 物理插槽(一个CPU端口一个线程)

例如,如果设置有2个CPU插座,每个插座有8个物理内核和16个启用的SMT的线程(逻辑内核):

  1. 2 * 16 = 32 workers
  2. 2 * 8 = 16 workers
  3. 2 workers
WORKERS

定义了使用的最大CPU核心数量

WORKER_POOL

指定分配的cpu分配空间的逻辑核心列表,如果没有被指定,captain工具将会从lscpu的输出中来分配核心数量,分配的依据建立在前面的WORKER_MODE 模式的选择以及分配的WORKERS的数量上,会根据这两个规则做一次筛选.
如果你想要控制分配那些核心,可以在列表中指定(以空格作为分隔符)

lscpu:

CAMPAIGN_WORKERS

指定单一核心分配的线程的数量.在大多数例子中,这个应该不能超过1个(默认值).然而,如果你自定义fuzz的fuzz的配置,并且使用多核心,你可以指定全局的变量来应用这个效果.相反的,你如果要指定特定的fuzz参数,可以看一下下边的fuzz_CAMPAIGN_WORKERS.

POOL

为了避免同步的复杂性和低速度,Magma需要不断的访问存储文件,并且每次运行时将它的内容保存在monitor目录中,这个参数定义了后续轮循中需要等待的时间

CACHE_ON_DISK

为了加速fuzz的进程并且降低 fuzzer/target/instrument 中I/O的阻塞率,Magma默认将缓存的目录挂载为tmfs卷,然而,这可能会导致较高的内存占用,并且需要root权限来装载和卸载卷.要禁用这个行为,只需要定义或者取消这个注释即可.

TMPFS_SIZE

如果 CACHE_ON_DISK没有被定义.并且tmpfs 已经被使用,这个参数会定义安装卷的大小.

NO_ARCHIVE

为了能够更好的移动活动的结果,magma默认在RUN目录存储在ar目录前就进行压缩

你可以选择禁用此项服务

CANARY_MODE

Magma的bug和工具在构建过程中可以以下三种方式来配置:

  1. 不用修复错误(包含bug的错误), 工具能够正常运行,这是默认的模式.
  2. 不用修复包含在内的bug,这对测试模糊测试器是否过度覆盖噪声,或者工具引入新的bug十分有效
  3. 可以修复(不包含bug),这对测试crash是真是假十分有效.
ISAN

Magma 包含一种理想的清理模式,一旦有bug触发就会立刻造成崩溃.这与 AddressSanitizer 在检测到内存安全违规时终止程序的策略相同。

一旦内存占用发生,这个程序就会处于不连贯的状态,可能会导致令人困惑的结果并且有可能误导后续报告的生成

通过Magma的ISan,模糊测试器评价仅限于到达和触发bug的能力,但并不包括检测他的能力.

HARDEN

在运行事件中一些bug可能会导致内存损坏并且不被检测,而我们不希望mmap的数据被破坏. Magma包含了hardened canaries模式.Magma包含一个强化的抗噪模式,当其控制在检测块以外时,mprotect是检测存储区域,具有只读权限.

POC_EXTRACT

这个 captain工具有一个脚本,可以用于对莫乎其生成的自动测试用例的自动分类.这个脚本在每个活动终止后作为后处理步骤来运行.

MAGMA

这个captain工具集依赖于同一目录的其他文件的脚本与工作集.因此,脚本尝试查找当前目录,将其存储在名为MAGMA的局部变量里边,并使用它来引用这些文件.

lscpu 与 tmpfs的名词解释

tmpfs
在平常的工作中,我们需要经常查看Linux服务器的磁盘挂载使用情况,可以使用df命令.此时会看到有一个tmpfs也在挂载.tmpfs实际上就是临时的文件系统,驻留在内存中,可以提供较高的访问速度.可以通过mount -o remount,size=777M tmpfs /dev/shm命令将tmpfs设置为777M

lscpu
使用lscpu可以获取到主机的CPU信息
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

magma测试与安装,使用(含docker配置) 的相关文章

随机推荐

  • Java并发编程之CyclicBarrier详解

    简介 栅栏类似于闭锁 它能阻塞一组线程直到某个事件的发生 栅栏与闭锁的关键区别在于 所有的线程必须同时到达栅栏位置 才能继续执行 闭锁用于等待事件 而栅栏用于等待其他线程 CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集
  • docker容器将系统盘空间占满的解决办法

    最近遇到一个问题 线上服务器的系统盘空间被占满了 导致服务不能正常运行了 docker启动时会报出下面这个错误 no space left on device 排查用到的命令 显示当前路径下占用空间超过1G的文件或文件夹 du h max
  • AD 原理图统一隐藏元器件的参数和序号

    AD 原理图统一隐藏元器件的参数和序号 如果隐藏元件参数 元件 右击 查找相似对象 确定 点击原理图 ctrl a 点击 属性对话框中 Part Conmment Hide 统一隐藏元件参数 如果隐藏元件序号 元件 右击 查找相似对象 确定
  • 用JAVA中的URL获取网页相关信息

    ava中有一个URL类 可以获取指定url的内容 import java io BufferedReader import java io InputStreamReader import java net URL public class
  • [Unity2D]在2D游戏里面实现人物的移动[消除抖动]

    Unity2D 在2D游戏里面实现人物的移动 先来一张效果图 一般的Unity2D游戏中 用WASD控制来移动人物角色的移动 缺陷 与含有碰撞器的强行碰撞时会发生抖动 原因 例如我人物要向左边走 利用脚本获取键盘输入 给人物角色一个向左边的
  • 一张图把DCDC电源拓扑“融会贯通”

    1 基本拓扑的由来 我们把一个电源电路抽象成一个黑盒电路模型 一个电源输入 一个电源输出 一个接地端口 对于非隔离电源 输入输出电路是共 地 的 所以非隔离电源的这个模型可以简化为图4 1 所示的模型 在所有的拓扑中 电感的一端需要连接到三
  • 使用docker部署golang编译环境

    前言 不想在windows上安装环境 打算docker部署 一拉一运行很方便 要注意的就是 官方的镜像跑起来后要改些参数再导成镜像 否则重启后改动消失 所以多一步 1 拉取镜像 运行镜像 docker pull golang docker
  • SpringBoot使用Swagger报NullPointerException

    第一次使用Swagger时报NullPointerException 在pom文件中引入Swagger 在启动项中加入注解 接口注解 运行出现NullPointerException 解决运行空指针问题 在pom文件中引入Swagger
  • Ini文件读取类,采用C++ STL实现

    背景 编程过程中经常会遇到读取Ini文件的场合 封装一个方便的类 能否避免重复编写 以后可复用 ini文件的格式很简单 并且不像xml之类的配置文件严谨 通常用于配置简单的键值对 本类测试文件如下
  • vuex的使用场景

    vuex的使用场景 首先 我们先来探讨一下 什么情况下vuex才是必须要到的呢 需要数据共享和行为进行拆分 复杂的异步逻辑 需要综合多个模块进行状态演进 需要用到第三方插件 需要综合考虑多个组件的生命周期 先后顺序 特定逻辑等等 vuex使
  • 如何在前端传递一个String 的变量和一个obj对象到后端,然后被Java后端接收

    首先我们通过post向后端发送请求 本篇博客仅纪录一下 在实际开发中需要从前端传递多值到后端 并且不存放到一个对象中进行传值处理 简单的一个案例展示该怎么做罢了 创建一个包含字符串和对象的数据 const postData stringVa
  • centos yum安装mysql出现的错误与解决办法

    1 InnoDB Error ib logfile0 of different size 错误的解决方法 查看Mysqld var log mysqld log 日志 发现以下错误 InnoDB Error log file usr loc
  • 冒泡排序--java(详解)

    对于一个数组 4 6 3 9 而言 首先进行第一轮 第一次比较 4 lt 6 所以不用交换两元素 数组不变为 4 6 3 9 第二次比较 6 gt 3 所以交换两元素 得到一个新数组为 4 3 6 9 第三次比较 6 lt 9 所以不用交换
  • 计算机维修培训教材,计算机芯片级维中心(芯片级维修培训教材)b.doc

    计算机芯片级维中心 芯片级维修培训教材 b 一 芯片的功能 作用及性能 具体内容 芯片组 南桥 北桥 BIOS芯片 时钟发生器IC RTC实时时钟 I O芯片 串口芯片75232 缓冲器244 245 门电路74系列 电阻R 电容C 二极管
  • Java笔记1:IntelliJ IDEA详细安装步骤

    安装IntelliJ IDEA 一 安装JDK 1 下载最新的jdk 这里下的是jdk 8u66 2 将jdk安装到默认的路径C Program Files Java目录下 二 安装IntelliJ IDEA 1 运行IntelliJ ID
  • Redis中SAVE和BGSAVE的区别

    Redis的这两个命令都是用于创建当前数据库的备份 因为Redis持久化选择RDB快照模式 所以Redis并不是实时的进行数据持久化 而是有一定的时间间隔 这个时候如果我们想要手动进行一次持久化 可以使用save或者bgsave命令 SAV
  • 如何使用sharemouse共享鼠标

    如何使用sharemouse共享鼠标 文章目录 如何使用sharemouse共享鼠标 1 Step 1 查看server IP 2 Step 2 配置Server的TCP UDP端口 设置密码 3 Step 3 client连接server
  • #ifndef/#define/#endif使用详解

    问题 想必很多人都看过 头文件中的 ifndef define endif 防止该头文件被重复引用 但是是否能理解 被重复引用 是什么意思 是不能在不同的两个文件中使用include来包含这个头文件吗 如果头文件被重复引用了 会产生什么后果
  • Linux系统安全——NAT(SNAT、DNAT)

    目录 NAT SNAT SNAT实际操作 DNAT DNAT实际操作 NAT NAT network address translation 支持PREROUTING INPUT OUTPUT POSTROUTING四个链 请求报文 修改源
  • magma测试与安装,使用(含docker配置)

    作者Ubuntu 18 04 Docker的配置与安装 Docker更改镜像源 docker下载ubuntu docker运行进入容器 通过Dockfile更改docker中ubuntu的apt源 docker容器中的ubuntu的配置 下