官方文档地址

根据官方定义:libFuzzer is in-process, coverage-guided, evolutionary fuzzing engine.

其本身是llvm项目的一部分,和clang是亲兄弟,二者项目源码分别可见于https://github.com/llvm/llvm-project/tree/master/compiler-rt/lib/fuzzerhttps://github.com/llvm/llvm-project/tree/master/clang,就在同一个仓库里面。

现在稍微新的版本的clang都已经内置libFuzzer了,所以Linux下直接apt install clang就安装完事了。

1. Fuzz Target

libFuzzer要求实现一个fuzz target作为被测对象的接口。

官方文档中的代码示例如下:

// fuzz_target.cc
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
DoSomethingInterestingWithMyAPI(Data, Size);
return 0; // Non-zero return values are reserved for future use.
}

给的是个C++的源码,但实际上却通过extern "C"指定采用C风格的编译约定。所以实际上fuzz target的C语言原型如下:

int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);

名称参数返回值类型都不能动,并且注意参数中传来的字节数组Data是通过底层const修饰了的,也就是不允许修改其中数据。

fuzzer target(即LLVMFuzzerTestOneInput函数)目的是作为被测对象与libFuzzer库之间的一个中转接口,其作用在于接受libFuzzer提供的输入数据Data字节串,(可能还需要进行数据格式转换,)然后传递给实际的被测函数(如上述示例中的DoSomethingInterestingWithMyAPI)。

阅读全文 »

数据引用:bilibili AV5711740视频结束部分

纪年:

显示选项:

点击操作:

年份 事由 {{position}}
{{'前' + -record['西元'] + '年'}} {{record['纪年']}} {{'(共' + (records[index + 1]['西元'] - record['西元']) + '年)'}} {{record['事由']}} {{record['将佐'][position]}}

下文将会从数学定义和TensorFlow范数计算API两个方面进行讲解。

另外,numpy的范数计算API与TensorFlow基本一致,故以下内容也适用之。

阅读全文 »

对Hexo的主题进行升级,最头疼的莫过于配置文件(_config.yml)的处理。我们自己需要对它进行自定义配置,但是主题升级更新后它的内容也可能会有所改变,二者可能产生冲突。如果只是在升级后简单把旧的配置文件复制过去,当然是不合理的。

所以,正确的打开方式因该是:利用git的分支与合并功能,自动检查冲突或者快速合并。

阅读全文 »

Linux上的驱动配置本就麻烦还危险,再加上CUDA和cuDNN,嗯……,搭好一个环境估计又得多掉几根头发。但是!

这一切其实可以像apt install和pip install一样简单!

下文教程经Linux Mint(Ubuntu系)实证可用,如果不出岔子,feora、opensuse、rhel、sles这几个发行版应该也可以采用这种方式进行配置。

阅读全文 »

1. 基本概念

Keras模型都继承自keras.Model类,可以分为两种类型:

  • 顺序(Sequential)模型:单输入单输出,且层与层之间首尾顺序相连,对应于常见的逐层相连的神经网络,可以使用keras.models.Sequential并依次add所需要的层进行快速构建。
  • 使用函数式API的模型:对应于更加复杂的结构,如拥有多个输入或者输出,以及涉及到跨层连接,需要手动组织层之间的数据关系再调用keras.models.Model构建。
阅读全文 »

NexT主题内部已经集成了MathJax(其实还有KaTeX),相对而言,配置起来已经是很方便了。但在一些细节方面上还是存在各种小问题,这里记录一下解决方式。

版本信息:

Node.js: 11.10.1

Hexo: 3.8.0

NexT: 7.0.1

阅读全文 »