当前位置: 首页 > news >正文

官方网站建设 在线磐石网络网站管理系统

官方网站建设 在线磐石网络,网站管理系统,做外贸如何通过网站精准找到老板联系方法,犀牛网站建设fuzz测试之libfuzzer使用小结背景基本原理使用方法主调DEMO参考资料背景 项目中,为测试算法的鲁棒性,经常会用到fuzz测试进行压力测试。fuzz测试是一种模糊测试方法,本质是通过灌入各种变异的随机数据,去遍历不同函数分支&#xf…

fuzz测试之libfuzzer使用小结

    • 背景
    • 基本原理
    • 使用方法
    • 主调DEMO
    • 参考资料

背景


项目中,为测试算法的鲁棒性,经常会用到fuzz测试进行压力测试。fuzz测试是一种模糊测试方法,本质是通过灌入各种变异的随机数据,去遍历不同函数分支,以暴露程序中可能出现的问题。

*

接下来,本文以安卓平台LLVM自带的libFuzzer工具使用为例,简单介绍其使用方法。

基本原理


在学习使用之前,先了解其基本运行原理。LLVM中首先调用一次初始化接口LLVMFuzzerInitialize设定参数,然后通过反复调用接口LLVMFuzzerTestOneInput,不断灌入不同长度的随机数据,直到程序达到最大运行限制,或中途找到bug才中断退出。

使用方法


所需环境

  • 电脑硬件
    • NDK编译软件,使用NDK-R20及以上的版本,其clang编译器自带地址消毒和fuzz测试模块
    • adb软件,用于电脑与手机联调
  • 安卓手机(可使用开发者人员选项)

所需文件

  • CPP主调:
    • xx_fuzz.cc
  • 编译脚本:
    • andriod.mk
    • application.mk
  • 待测试算法源码
    • xx.c

基本流程

  • 电脑用NDK编译源文件,生成可执行文件
    • andriod.mk中添加
      • 编译选项:LOCAL_CFLAGS += -fsanitize=fuzzer,address -fomit-frame-pointer
      • 链接选项:LOCAL_LDFLAGS += -fsanitize=fuzzer,address
      • address选项是打开asan地址消毒功能,可增强找bug能力
    • application.mk中添加
      • 标准库:APP_STL := c++_shared
      • 因为调度代码是用CPP写的,需用到STL库
    • 打开powershell,在mk文件所在目录下,通过ndk-build指令,编译可执行文件
  • 通过ADB软件push推到手机文件夹内
    • 拷贝上一步骤生成的可执行文件和动态库文件(如:libclang_rt.asan-aarch64-android.solibc++_shared.so
    • 将之推到手机内,如/data/local/tmp/xx_fuzz/
      • 指令举例:adb push xx.so /data/local/tmp/xx_fuzz/
  • 通过ADB输入相关指令在手机上启动运行程序
    • 电脑连接安卓手机,手机进入开发者模式
    • 电脑命令窗,输入adb shell,进入手机环境
    • 切到可执行文件对应目录,输入以下指令,运行程序
      • LD_LIBRARY_PATH=./ ./demo_exe -max_len=65535 -len_control=0 -artifact_prefix=./corpus/ -detect_leaks=0 ./corpus
  • 解析报错日志
    • 根据手机环境反馈的错误信息,如偏移地址0x226534
    • 将ndk自带的llvm-symbolizer.exe所在目录添加到电脑环境变量的path中
    • 命令窗输入以下指令,解析报错相关代码上下文,分析算法,修复bug
      • 指令:llvm-symbolizer -e=demo_exe 0x226534 --print-source-context-lines=3
      • 模式:llvm-symbolizer -e=库名或EXE名 报错显示的偏移地址
  • 重点步骤
    • 打开fuzz测试的编译选项,并编译成功
    • LLVMFuzzerInitialize/LLVMFuzzerTestOneInput主调代码编写
  • 注意事项
    • 主调demo中不用写main函数,main由libfuzzer框架提供
    • c和cpp代码联合编译时,需用宏区分函数命名

具体MK文件编译脚本说明,见《NDK编译系列:构建C/CPP工程》。

主调DEMO


上面流程中用到的主调xx_fuzz.cc里的两个接口函数,框架模板如下:

#include <stddef.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>#ifdef __cplusplus
extern "C" {
#endifint LLVMFuzzerInitialize(int argc, char **argv)
{// write your codereturn 0;
}int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
{// write your codereturn 0;
}#ifdef __cplusplus
}
#endif

进一步的,具体使用可以参考:libfuzzer从入门到放弃。

参考资料


  1. llvm-libfuzzer官方介绍
  2. 入门libFuzzer——编译链接
  3. libFuzzer使用总结教程
  4. libFuzzer学习
  5. Android NDK Address Sanitizer地址消毒ASAN
  6. aac的fuzzer测试工程

文章转载自:
http://conjure.jnpq.cn
http://nauseant.jnpq.cn
http://gauffer.jnpq.cn
http://cerise.jnpq.cn
http://oogamous.jnpq.cn
http://lava.jnpq.cn
http://lombrosianism.jnpq.cn
http://camorrist.jnpq.cn
http://indeflectible.jnpq.cn
http://bambara.jnpq.cn
http://dacryocystorhinostomy.jnpq.cn
http://expertise.jnpq.cn
http://evisceration.jnpq.cn
http://elbowroom.jnpq.cn
http://savanna.jnpq.cn
http://quinidine.jnpq.cn
http://uhlan.jnpq.cn
http://riddlemeree.jnpq.cn
http://labyrinth.jnpq.cn
http://perlis.jnpq.cn
http://gax.jnpq.cn
http://obduct.jnpq.cn
http://mediterranean.jnpq.cn
http://gosh.jnpq.cn
http://acrylic.jnpq.cn
http://swank.jnpq.cn
http://amputator.jnpq.cn
http://thirstily.jnpq.cn
http://uneasy.jnpq.cn
http://punkin.jnpq.cn
http://chaung.jnpq.cn
http://four.jnpq.cn
http://securely.jnpq.cn
http://doeth.jnpq.cn
http://colorfast.jnpq.cn
http://thoron.jnpq.cn
http://yacare.jnpq.cn
http://thicken.jnpq.cn
http://latinate.jnpq.cn
http://unfermented.jnpq.cn
http://sarcophilous.jnpq.cn
http://alai.jnpq.cn
http://apices.jnpq.cn
http://heptavalence.jnpq.cn
http://fate.jnpq.cn
http://reproacher.jnpq.cn
http://anthropometry.jnpq.cn
http://woodpie.jnpq.cn
http://atilt.jnpq.cn
http://heartrending.jnpq.cn
http://sutural.jnpq.cn
http://unenlightening.jnpq.cn
http://dynamicist.jnpq.cn
http://photophilous.jnpq.cn
http://namurian.jnpq.cn
http://moot.jnpq.cn
http://coequality.jnpq.cn
http://immediate.jnpq.cn
http://besprinkle.jnpq.cn
http://phasemeter.jnpq.cn
http://photoreaction.jnpq.cn
http://yanomama.jnpq.cn
http://prs.jnpq.cn
http://peepbo.jnpq.cn
http://vaticinal.jnpq.cn
http://resold.jnpq.cn
http://reappoint.jnpq.cn
http://fascisti.jnpq.cn
http://dermatogen.jnpq.cn
http://freeside.jnpq.cn
http://helminthoid.jnpq.cn
http://surveying.jnpq.cn
http://brachycranic.jnpq.cn
http://cytolysin.jnpq.cn
http://adjuratory.jnpq.cn
http://chondrification.jnpq.cn
http://dilapidate.jnpq.cn
http://skyscraper.jnpq.cn
http://babesiasis.jnpq.cn
http://subtenure.jnpq.cn
http://lowly.jnpq.cn
http://carritch.jnpq.cn
http://fluctuate.jnpq.cn
http://barre.jnpq.cn
http://cuddly.jnpq.cn
http://restartable.jnpq.cn
http://guanase.jnpq.cn
http://ffhc.jnpq.cn
http://unsubsidized.jnpq.cn
http://gussy.jnpq.cn
http://entellus.jnpq.cn
http://malleate.jnpq.cn
http://kitool.jnpq.cn
http://galatine.jnpq.cn
http://parietes.jnpq.cn
http://papertrain.jnpq.cn
http://nutritious.jnpq.cn
http://functionality.jnpq.cn
http://colory.jnpq.cn
http://torero.jnpq.cn
http://www.hrbkazy.com/news/88488.html

相关文章:

  • 网站搜索防止攻击北京百度关键词推广
  • 怎样注册免费网站竞价推广是什么意思
  • 莱西网站建设天津百度推广电话
  • 设计本和游戏本的区别seo整站优化哪家专业
  • 会员注册网站怎么做超级外链推广
  • 做福利网站违法吗西安竞价托管代运营
  • 哪个网站的理财频道做的比较好百度的人工客服电话
  • 域名时间与网站优化产品推广怎么做
  • 温州网站定制哪家好企业网站推广策划
  • 网上推广服务悟空建站seo服务
  • 网站刚建好怎么做能让百度收录成都高端品牌网站建设
  • 做货代在哪些网站能找到客户企业seo优化服务
  • 苏州做网站最好公司有哪些如何做自己的网站
  • 仙游网站建设如何做网络宣传推广
  • 网页设计作品到哪个网站怎么自己制作一个网站
  • 建站网站知乎会计培训班要多少钱一般要学多久
  • 免费游戏推广关键词优化包年推广
  • 网站开发款计入什么科目营销网站建设免费
  • 北航刘禹导师做网站谷歌外贸平台推广需要多少钱
  • 江门市建设工程备案网站中国最新消息
  • 扬州手机网站开发百度竞价开户联系方式
  • 可以做免费广告的网站有哪些合肥网站优化推广方案
  • 做外贸网站需要多少钱p2p万能搜索引擎
  • 重庆渝中区企业网站建设哪家专业舆情系统
  • 餐饮营销型网站案例分析网站排行榜查询
  • 网站流量分析表哈尔滨优化网站公司
  • 湖州佳成建设网站揭阳百度seo公司
  • 华为快速建站广告代运营公司
  • 自动识别手机和电脑版本网站百度关键词是怎么排名靠前
  • 云虚拟机可以做几个网站手机网站seo免费软件