2007 рдореЗрдВ, рдореИрдВрдиреЗ
рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП
рдХреБрдЫ рдореЛрдбрд▓рд┐рдВрдЧ
рдЯреВрд▓ рд▓рд┐рдЦреЗред рдЦреЗрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ "рдмрд╛рдЗрдирд░реА рдЖрдИрдПрдирдЖрдИ" рдпрд╛ "рдмреАрдЖрдИрдПрдирдЖрдИ" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛: рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ INI рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдордирдорд╛рдиреЗ рдкрд╛рда рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реИрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЦреЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реАрдзреЗ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдирд╛рдо рдмрджрд▓рддреЗ рд╣реБрдП, рдЙрддреНрдкрд╛рдж рдХреА рдХреАрдорддреЗрдВ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдХреЗ рдЖрдБрдХрдбрд╝реЗ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирдП рдЬрд╣рд╛рдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдПред рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдиреНрд╣реЗрдВ рдЖрдИрдПрдирдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ, рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ, рдлрд┐рд░ рдмреАрдЖрдИрдПрдирдЖрдИ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдЦреЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдореИрдВрдиреЗ BINI рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдореМрдЬреВрджрд╛ рдЙрдкрдХрд░рдг рдкрд╕рдВрдж рдирд╣реАрдВ рдереЗ, рдФрд░ рдореЗрд░реА рдЕрдкрдиреА рджреГрд╖реНрдЯрд┐ рдереА рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдпреВрдирд┐рдХреНрд╕ рд╢реИрд▓реА рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧреЗрдо рдЦреБрдж рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рдЙрд╕ рд╕рдордп, рдореИрдВ рдЕрднреА
рдпрд╛рдХ рдЙрдкрдХрд░рдг (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдмрд╛рдЗрд╕рди ) рдФрд░
рд▓реЗрдХреНрд╕ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдлреНрд▓реЗрдХреНрд╕ ) рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдирдХрд╛ рд╕рдЯреАрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдиреНрдп рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдирдХрд▓ рдХреА, рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реБрдП рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВред Yacc / lex рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░рдг, рдПрдХ рдкреВрд░реНрдг рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рд╕рднреА
рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ
рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдлреА рд╕рдлрд▓ рд░рд╣реА: рдореИрдВрдиреЗ рдЦреБрдж рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рд╡реЗ рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдореЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред
рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ
2018 рдХреЗ рдордзреНрдп рдореЗрдВ, рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓реМрдЯ рдЖрдпрд╛ред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдЗрд╕ рд╕реЛрдЪ рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рд╣реИ: рдЖрдкрдиреЗ рдХреНрдпрд╛ рд╕реЛрдЪрд╛ рдерд╛? рдореЗрд░рд╛ рдЖрдИрдПрдирдЖрдИ рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдареЛрд░ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рдерд╛, рджреНрд╡рд┐рдкрддреНрд░реЛрдВ рдХреЛ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рднреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереАред
рджрд╕ рд╕рд╛рд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдЗрди рд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ред рдпрд╣ рдирдпрд╛ рдХреЛрдб рдЕрдм Github рдкрд░ рдорд╛рд╕реНрдЯрд░ рдереНрд░реЗрдб рдореЗрдВ рд╣реИред
рдореБрдЭреЗ рд╣рд░ рдЪреАрдЬ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рд╣реИ , рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ
рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛ред рдХреЛрдИ рдФрд░ рдпрд╛рдХ рдпрд╛ рд▓реЗрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд░реНрд╕рд░ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЙрдкрдпреБрдХреНрдд, рдкреЛрд░реНрдЯреЗрдмрд▓ рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдореИрдВ
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдПрдХ рдЫреЛрдЯреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк
stdint.h
рд╕рд╛рде
stdint.h
рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
рдбреЙрд╕ рдХреЗ рддрд╣рдд рджреНрд╡рд┐рдкрдж рднреА
рдмрдирд╛ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рддреЗрдЬ, рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ, рдХреНрд▓реАрдирд░ рдФрд░ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ INI рдЗрдирдкреБрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реИ?
fuzzing
рдореБрдЭреЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ
рдлрд╝рдЬрд╝рд┐рдВрдЧ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
рдПрдлрдПрд▓ (рдЕрдореЗрд░рд┐рдХрди рдлрд╝рдЬрд╝реА рд▓реЛрдк)ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдЗрд╕рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдЬрд┐рдирдХрд╛ рдореИрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХреЛ рдХреБрдЫ рднреА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдирд╣реАрдВ рдорд┐рд▓рд╛, рдХрдо рд╕реЗ рдХрдо рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд░ рдорд╛рди рд▓реАред рдореИрдВрдиреЗ рдЕрдкрдиреА JSON рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореЗрд░рд╛ JSON рдкрд╛рд░реНрд╕рд░
рдЗрддрдирд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛
рд╣реИ , рд╣реИ рдирд╛? рд▓реЗрдХрд┐рди рдлрд╝рдЬрд╝рд┐рдВрдЧ рдиреЗ рдХреБрдЫ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ред (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдореЗрд░реА JSON рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╣реБрдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рд╕рдореБрджрд╛рдп рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!)
рд▓реЗрдХрд┐рди рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдП рдЖрдИрдПрдирдЖрдИ рдкрд╛рд░реНрд╕рд░ рд╣реИрдВред рдпрджреНрдпрдкрд┐ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЦреЗрд▓ рдореЗрдВ Bini рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдореВрд▓ рд╕реЗрдЯ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХреБрдЫ рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХреЛрдб рдкрд░ afl рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рднреА рд▓рд╛рдЗрди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдХрд░рдг рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрджрд░реНрд╢ рд╣реИред
рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ (рдореЗрдХ, рдЬреАрд╕реАрд╕реА, рдПрдлрдПрд▓), рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд┐рдЯреНрдпреВрд▓реНрд╕ рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
$ make CC=afl-gcc $ mkdir in out $ echo '[x]' > in/empty $ afl-fuzz -i in -o out -- ./bini
bini
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрдирдкреБрдЯ рдкрд░ INI рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░
bini
рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░рд┐рд╡рд░реНрд╕
unbini
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЪреВрдВрдХрд┐
unbini
рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, (рд╢рд╛рдпрдж) рдлрд╝рдЬрд╝рд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдЬрд╛рдБрдЪ рд▓рд┐рдпрд╛ред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ afl (
CC=afl-gcc
) рдХреЗ рд▓рд┐рдП GCC рд╢реЗрд▓ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдпрд╣рд╛рдБ afl рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ GCC рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдЕрдкрдирд╛ рдЯреВрд▓рдХрд┐рдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬрдм рдлрд╝рдЬрд╝рд┐рдВрдЧ,
afl-fuzz
рдЗрд╕ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдкрде рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
рдПрдлрдПрд▓ рдкреНрд░рд▓реЗрдЦрди рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрдирдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЗрдирдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рднреА рдмрдирд╛рдИрдВ, рдЬреЛ рдПрдХ рдиреНрдпреВрдирддрдо рдХрд╛рдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрдлрдПрд▓ рдХреЛ рдПрдХ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рджреЗрддрд╛ рд╣реИред рдЬрдм рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрддрд╛рд░ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдФрд░, рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рд╢рд░реАрд░ рд╣реИ рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп рдирд┐рд╖реНрдкрд╛рджрди рдкрде рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХрдИ рдЗрдирдкреБрдЯ рдлрд╝рдЬрд╝рд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реАрдорд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдбрд░рд╛рд╡рдирд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд░рдо рджреБрд░реНрдШрдЯрдирд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдмрд╛рдЗрдЯрд┐рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдлрд╝реНрдпреВрдЬрд╝рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ
bini
рдиреЗ
рдХрдИ рдРрд╕реЗ рдХреНрд░реИрд╢ рджрд┐рдЦрд╛рдПред рдорд┐рдирдЯреЛрдВ рдХреЗ рднреАрддрд░, рдПрдлрдПрд▓ рдиреЗ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрдИ рд╕реВрдХреНрд╖реНрдо рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреА, рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдереАред рдлрд╝реЗрдЬрд╝рд░
рдХреЛ рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕реВрдЪрдХ рдХрд╛ рдПрдХ рдмрдЧ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЛрдбрд╝ рдерд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рд╛рдпрд╛ред
рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВ рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдорд┐рд▓реАрдВред рдореИрдВрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рднреА рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдХрд┐рд╕ рдЗрдирдкреБрдЯ рдиреЗ рдПрдХ рд╕рдлрд▓ рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛ рдФрд░ рдЬреЛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рджреЗрдЦрд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ред рдЙрд╕рдиреЗ рдХреБрдЫ рдЗрдирдкреБрдЯ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧреАред рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрд╕рдиреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЧрд▓рдд рдорд╛рдирд╛, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдХреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреАред рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдореИрдВрдиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкреНрд░рд┐рдп рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред
рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдмрдирд╛рдПрдБ
рдЬреИрд╕реЗ рд╣реА рдореИрдВрдиреЗ рдлрд╝рдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рдХреА рдЧрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рд╕рднреА рд╕реАрдорд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдлрд╝рдЬрд╝рд░ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЬ рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдпрд╛ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реАрдзреЗ рдирд╣реАрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдлрд╝рдЬрд╝рд░ рдЪрд▓рд╛рдпрд╛ - рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдлрдПрд▓ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрдирдкреБрдЯ рдорд┐рд▓рд╛ред рдЕрддрд┐рд░реЗрдХ рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдЕрд▓рдЧ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рдкрде рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, afl рдХреЗ рдкрд╛рд╕ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ:
afl-cmin
, рд╢реЗрд▓ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдгред рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрджрд╛рдиреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рдЗрди рдЗрдирдкреБрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдЕрдкрдиреЗ рдЕрджреНрд╡рд┐рддреАрдп рдирд┐рд╖реНрдкрд╛рджрди рдкрде рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреЗ рдереЗред
afl-tmin
, рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХрд╛ рдиреНрдпреВрдирддрдо,
afl-tmin
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛,
afl-tmin
рдорджрдж рдХреАред
рдореИрдВрдиреЗ рд╡реИрдз рдФрд░ рдЕрдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ - рдФрд░ рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ред рдПрдХ рд╣реА рдиреНрдпреВрдирддрдо рдЗрдирдкреБрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдлрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдЗрди рд╕рднреА рдмреЗрд╡рдХреВрдл
рдкреНрд░рд╡реЗрд╢реЛрдВ рдкрд░ рдПрдХ
рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ :
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдВ рдкрд╛рд░реНрд╕рд░ рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рдЬрдореЗ рд╣реБрдП рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг
рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЕрд╕реЗрдВрдмрд▓реА рдЙрдирдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдиреЗ рдбрд╛рдЗрдЯрд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдирд┐рдЯреБрд▓реНрд╕ рдиреЗ рдЗрд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдЧреИрд░-рддреБрдЪреНрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдерд╛, рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдирдП рдкрд╛рд░реНрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╢рд░реАрд░ рдЙрддреНрдкрдиреНрди рд╣реЛред
рдмреЗрд╢рдХ, рдлрд╝рдЬрд╝рд┐рдВрдЧ рдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдХрдиреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рдерд╛ред рддрдм рд╕реЗ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ - рди рдХреЗрд╡рд▓ рдореЗрд░рд╛ - рдФрд░ рдХрдИ рдирдП рдмрдЧ рдкрд╛рдПред рдЕрдм рдореЗрд░реЗ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ рдореЗрдВ рдЯреВрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдлрд╝реНрдпреВрдЬрд╝рд░ рдиреЗ рдПрдХ рд╕реНрдерд╛рдпреА рд╕реНрдерд╛рди рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИред