I am currently reading "The Fuzzing Book" and I am trying to determine how I should apply or implement the fuzzing techniques that I have learned from the book. For instance, in the book, they describe "coverage" and further expand on that idea by coding a coverage tool. Now my misunderstanding comes from not being sure if I should attempt to write my own coverage tool, as they have in the book, or if I should use the "coverage.py" Python module.
Overall, I am asking advice on how I should apply the knowledge acquired from "The Fuzzing Book"? Do I read the book and attempt to implement my own tools or can I use prefabricated tools available for everyday application development?
In theory you can write your own "everything" but it takes to much time. For learning point it is great aproach to create mocks of used and loved tools. Hence there are many tutorials in form of "create your own x". Making you both understand the tool and improve your development skills.
But in engineering stand point if there are a good tool that is suitable for your need and available for your use it is better to use it. And spend your energy to learn how to use it efficiently. Since they have many time tested features, learning about them improve you too. Because they introduce you features that you dont previously aware and besides the reasons why such features are required.
You can think it as people using test tools and frameworks to develop big projects. Incase of gaming studios who develop their own engine they either need specialized system or do it due to legal/cost/ownership reasons. So if you dont have such problem general approach is to use trustable tools.