Z3求解器学习(一) 引言安装成功后在命令行输入z3 -h可以查看帮助学习如何使用,下面用几个简单的例子熟悉Z3求解器的基本命令(这里我们例子都使用z3 -in的输入形式从标准输入读取表达式):例子1:首先写一个简单的可满足条件的例子(declare-const a Int)(assert (> a 10))(check-sat)(get-model)declare-const申明一个给定类型的常量(Int型的a);assert将一个公式添加到Z3内部堆栈中(a > 10);chec
KLEE学习——实例3 说明:这个例子展示了如何使用KLEE来寻找迷宫游戏的所有解决方案,是对如何使用符号执行来生成输入的一个很好的说明。示例官网原文见:Solving a maze with KLEE-实例中的迷宫大小为11X7,玩家通过’w’,‘s’,‘d’,'f’操作上下左右,从X出发,要找到路径达到出口#。如图所示:源代码在:https://pastebin.com/6wG5stht1.首先我们尝试手动寻找答案假设我们的代码存放在***maze.c***中,我们将其编译:$ gcc maze.c -
KLEE学习——实例2 该例子通过符号化输入字符串来完成正则式匹配,实例来源见官网:Testing a Simple Regular Expression Library1.编译生成LLVM位码源码所在目录为example/regexp,到该目录下执行:$ clang -I ../../include -emit-llvm -c -g -O0 -Xclang -disable-O0-optnone Regexp.c参数含义在第一个例子中有描述,不再累述。2.用KLEE执行代码执行命令:$ klee --onl
KLEE学习——实例1 下面开始根据KLEE官方给出的示例进行学习,闲话不多说,开始第一个示例的学习:Testing a small function这个例子是引导我们熟悉使用klee测试简单函数所需的主要步骤,代码在/examples/get_sign目录下.简单函数的代码如下,判断x的是0、正数、还是负数。int get_sign(int x) { if (x == 0) return 0; if (x < 0) return -1; else return 1;}主要分
c语言程序的执行过程(以输出hello,world为例) 1.c源文件的存储任何数据在计算机中都以二进制的样式进行存储,即0和1两种存储表示,那么c源文件中的各种字符要想存储在计算机中作为可执行的指令,那么必须得以二进制0或1的形式存储在其中,因此,需要将c源文件的需要被以某种方式“翻译”成二进制存储进计算机。数据类型表示数字的类型如int,double 等类型在内...
KLEE入门教程 本文1.首先介绍创建KLEE Docker容器的方法;2.然后介绍官网给出的一个指导实例;3.最后给出程序测试实例。创建KLEE Docker容器相关Dokcer的知识可以参见官网:https://docs.docker.com/get-started/1.创建临时KLEE Docker容器$ docker run --rm -ti --ulimit='stack=-1:-1' ...
CPAChecker安装 1.CPAChecker是什么?相关连接:CPAChecker官网:https://cpachecker.sosy-lab.org/doc.php官网对应的翻译:https://blog.csdn.net/weixin_41529962/article/details/804270562.CPAChecker安装说明:本文以笔者系统macOS10.14.6为说明,windows...
国内外主流静态分析类工具汇总 笔者从事该软件安全方面工作,在工作和学习中收集了国内外比较主流的静态分析类工具,供大家参考。大多是资料来自于网络整理,如有不足或欠缺,还请在评论中指出。我进行修正。也欢迎同行多多交流。我使用0标注北大软件CoBOT,因为他是国内第一款基于主流SAST技术的静态分析工具,填补了国内在缺陷检测、安全漏洞软件工...
KLEE安装 KLEE简介KLEE是一个构建在LLVM编译器之上的符号虚拟机,在UIUC开源许可下可用。有关KLEE的具体细节,可以参考这篇论文:OSDI 2008。安装流程说明:文本安装全程参照官网说明:http://klee.github.io/笔者操作系统为maxOS:Majave,因而首先介绍macOS系统,mac上的安装有两种方式通过Docker安装:首先,Docker是什么:...
七天LLVM零基础入门(Linux版本)------第一天 作者:snsn1984开篇语:学习LLVM的过程是一个漫长而艰巨的过程,需要大量的时间和精力。不仅仅如此,开始的过程也不轻松。一个好的开始就是成功的一半。我结合了自己学习的过程,以及给别人推荐学习的过程,整理出了这个七天LLVM零基础入门的系列博客。主要的目标是让没有LLVM基础的人,经过这一系列的学习,可以完成一些Pass的工作,并且可以成功的自己去自主学习,知道自己该怎么学习,知道自己该...
这可能是最为详细的Docker入门吐血总结 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,不信的话看看下面这张图。这是我在某招聘网站上看到的招聘 Java开发工程师 的招聘要求,其中有一条熟悉 docker 成为了你快速入职的加分项,由此可见熟悉&...
Python3爬虫从零开始:Beautiful Soup的使用 中文文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#id49基本用法实例1:from bs4 import BeautifulSouphtml ="""<html><head><title>The Dormouse's story</title></head>.
Python3爬虫从零开始:Xpath的使用 之前我们提取页面信息时使用的是正则表达式,但这比较繁琐,容易出错。XPath提供了简洁明了得路径选择表达式及大量内建函数。可以定位到几乎所有我们想要定位的节点。XPath需要安装lxml库,安装方法。 常用规则nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // ...
Python3爬虫从零开始:正则表达式 正则表达式测试工具:http://tool.oschina.net/regex# 实例1:match()import recontent = 'Hello 123 4567 World_This is a Regex Demo'print(len(content))result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}',cont...
Python3爬虫从零开始:抓取天猫电影排行 抓取分析 首先打开要抓取的目标站点:http://maoyan.com/board/4 我们需要爬取得实惠电影名称、主演、评分等信息。可以看到在这个页面只有10部影片,而我们需要爬取前100,也就是需要爬取10页。 滚动到最下方分页列表,打开下一页,可以看到页面的URL发生了变化,多了参数offset=10。根据这个规律,我们可以通过改变URL的offset参数请...
Python3爬虫从零开始:urllib库的使用(二) URLError来自urllib库的error模块,需要imort error实例1:当运行一个不存在的页面,如果没有异常处理,直接from urllib import request,errorrequest.urlopen('https://cuiqingcai.com/index.htm')则会报错:实例2::加上异常处理机制from urllib imp...