【Rust 日报】2022-07-21 关于serde_json我希望大家都能知道这些事

2022-11-28 11:05:56 浏览数 (1)

关于serde_json我希望大家都能知道这些事

我最近一直在用Rust解析大量的json,这里有一些细节我想和大家分享。

  • 与有标签的unions相比,无标签的unions解析起来非常慢。如果你关心性能,最好是有一个可以区分unions变量的属性。
  • 你可以通过解析到一个使用&str字段的数据结构来避免对字符串的分配。
  • 有一种类型serde_json::Number可以避免转换为数字格式,直到你真正想要花费处理时间。
  • 如果你使用标签union来区分json属性值,你不需要使用枚举变量的名称,你可以使用:
代码语言:javascript复制
  #[serde(tag="animal_type")]
  enum Animal {      #[serde(alias="crab")]
      Crab(MyCrabStruct)      #[serde(alias="gopher")]
      Gopher(MyGopherStruct)
  }

该帖子下还有其他网友分享的一些细节。

Reddit: https://libreddit.spike.codes/r/rust/comments/w3q1oq/things_i_wish_i_had_known_about_serde_json/

LibAFL 一个模糊器发布0.8.0版本

LibAFL为你提供了许多现成的模糊器的优点,同时可以完全定制。目前的一些亮点功能包括:

  • 快速:我们在编译时做了所有能做的事情,使运行时的开销最小。用户在手机上的frida-mode中达到12万次/秒的执行率(使用所有内核)。
  • 可扩展性:低水平消息传递,简称LLMP,允许LibAFL在核心上几乎线性地扩展,并通过TCP传输到多台机器。
  • 可适应性强:你可以替换LibAFL的每个部分。例如,BytesInput只是一个潜在的表单输入:可以随意添加一个基于AST的输入,用于结构化的模糊测试,以及更多。
  • 多平台:LibAFL被证实可以在Windows、MacOS、Linux和Android的x86_64和arch64上工作。LibAFL可以在no_std模式下构建,将LibAFL注入到不知名的目标中,如嵌入式设备和管理程序。
  • 你自己的target:我们支持纯二进制模式,如Frida-Mode,以及基于资源的仪器化的多个编译通道。当然,添加自定义的仪器化后端也很容易。

Github: https://github.com/AFLplusplus/LibAFL/releases/tag/0.8.0

From 日报小组 Cupnfish

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss
  • 微信公众号:Rust 语言中文社区

0 人点赞