AFL源码分析(Ex.1)——附录(Part 1) | xxxAFL源码分析(Ex.1)——附录(Part 1) – xxx
菜单

AFL源码分析(Ex.1)——附录(Part 1)

七月 7, 2021 - 安全客

robots

AFL源码分析(Ex.1)——附录(Part 1)

 

0. 写在前面

此文章主要是对AFL仓库中doc目录下的所有文档进行翻译。

后续附录将继续翻译以上列表中的文章。

 

1. life_pro_tips.txt(使用技巧)

  1. 此文档是为那些了解基础知识但又懒得阅读或记住AFL 的所有其他文档的人提供的小建议。
  2. 通过使用模糊字典获得更多的有效测试结果。请参阅dictionaries/README.dictionaries了解如何操作。
  3. 为了充分使用电脑的硬件资源,可以使用AFL的并行作业模式(多进程模式)。(详见docs/parallel_fuzzing.txt了解如何操作)
  4. 通过使用libdislocator.so获得更多的有关内存损坏的测试结果。请参阅libdislocator/README.dislocator了解如何操作。
  5. 如果您想了解fuzz器是如何解析输入样本的,请使用afl-analyze工具,此工具将通过彩色输出的方式为您展示。
  6. 您可以直观的监控fuzz测试的进度,请使用afl-plot工具,此工具将生成浏览器友好的监控GUI。
  7. 您也可以通过编程的方式来监控fuzz测试的进度,请使用afl-whatsup工具或者直接操作AFL输出目录中的fuzzer_stats文件。
  8. AFL实时结果中显示为红色或紫色的重要信息感到困惑,请查阅docs/status_screen.txt获取进一步解释!
  9. 您可以将您的测试目标转换为持续模式以获得巨大的性能提升!请参阅llvm_mode/README.llvm中的第5部分以获取提示。
  10. 如果您使用clang语言,查看llvm_mode/下的文件以获取afl-gcc的更快替代方案!
  11. 您知道AFL可以对闭源代码、黑/灰盒文件、跨平台/跨架构文件进行模糊测试吗?查看qemu_mode/README.qemu了解更多信息。
  12. 您知道afl-fuzz可以帮您将任何测试用例最小化吗?试试随AFL项目提供的afl-tmin工具,他能帮您快速获得小型目标文件!
  13. 不确定fuzz出的导致样例crash的输入样本是否可利用?AFL可以帮助您解决问题。指定-C以启用崩溃探索模式。有关更多信息,请参阅自述文件中的第 10 节。
  14. Trouble dealing with a machine uprising? Relax, we’ve all been there.Find essential survival tips at http://lcamtuf.coredump.cx/prep/.译者注:此条Tips总感觉像是AFL项目组开的一个小玩笑,翻译过来是如何应对关于机器毁灭人类的问题,由于此条Tip过于无厘头,因此不做翻译,直接附上原文,喜欢科幻的读者可以随便看看(?
  15. AFL生成的语料库可用于为其他测试过程提供参考。请参阅README文件中的第2节以获取灵感 – 这往往会产生意料外的结果!
  16. 想要自动化的发现不会导致崩溃的内存处理错误?尝试通过ASANMSANValgrind运行AFL生成的语料库。
  17. 正确选择输入文件对于成功的模糊测试工作至关重要。如果需要此方面的专业提示,请参阅自述文件(或docs/perf_tips.txt)中的第5部分。
  18. 您可以手动设置相关选项以提高AFL自动化发现堆栈损坏问题的几率,您可以在环境中指定AFL_HARDEN=1以启用强化标志。
  19. 遇到了不可重现的崩溃问题?此类问题往往会发生,但通常不难诊断。如果您想获得有关提示,请参阅自述文件中的第7节。
  20. 模糊测试不仅仅可以找到关于代码库中的内存损坏问题。您可以添加一些健全性检查,例如assert()/abort() 语句以轻松捕获逻辑错误。
  21. 如果你想弄清楚AFL是如何真正运作的,查看docs/technical_details.txt以了解所有细节!
  22. 有大量旨在与AFL配合使用的第三方帮助工具!在编写自己的第三方工具之前,请务必查看docs/sister_projects.txt
  23. 需要对特定程序的命令行参数进行模糊测试?您可以在Experiment/argv_fuzzing中找到一个简单的解决方案。
  24. 您的测试目标使用校验和的格式?删除校验和检查代码或使用后处理器!有关更多信息,请参阅experimental/post_library/
  25. 处理一个非常缓慢的目标但是希望立即获得结果?调用afl-fuzz时指定-d

2. env_variables.txt(环境变量手册)

本文档讨论了American Fuzzy Lop使用的环境变量,这些变量可以帮助高级用户或需要进行某些类型的自定义模糊测试的用户,这些环境变量可以用于影响fuzz器的函数行为。有关一般说明手册,请参阅自述文件。

2.1. afl-gccafl-clangafl-as相关的设置

因为它们不能直接接受命令行选项,所以编译时这三个工具相当广泛地使用了环境变量:

2.2. afl-clang-fast相关的设置

native LLVM检测工具可以使用接受2.1中讨论的环境变量,但以下变量除外:

请注意, AFL_INST_RATIO这个环境变量的效果与afl-gcc的行为略有不同,因为函数本来就不是无条件地被检测,因此此环境变量被设置为低值将产生更显着的效果。对于此工具,0不是有效选择。

2.3. afl-fuzz相关的设置

这个工具接受多个环境变量,这些变量将禁用一些完整性检查或更改该工具的一些奇特的语义:

2.4. afl-qemu-trace相关的设置

用于检测纯二进制文件的QEMU包装器支持多种环境变量:

2.5. afl-cmin相关的设置

语料库最小化攻击提供很少的可定制性:

2.6. afl-tmin相关的设置

此工具几乎没有什么可设置的。

2.7. afl-analyze相关的设置

2.8. libdislocator.so相关的设置

此库文件有四个环境变量可被设置:

2.9. afl-fuzz等工具主动设置的变量

afl-fuzz 不直接解析以下几个变量,但如果环境中尚不存在,则将其设置为最佳值:


Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51