เป‚เบ„เบ‡เบเบฒเบ™ elfshaker เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ ELF.

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ elfshaker, เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบชเบฐเบšเบฑเบšเบ„เบนเปˆเบ—เบตเปˆเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ ELF executables, เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ. เบฅเบฐเบšเบปเบšเป€เบเบฑเบšเบฎเบฑเบเบชเบฒ binary patches เบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบŸเบฅเปŒ, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบถเบ‡เป€เบญเบปเบฒเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบ„เบต, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ "git bisect" เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปเบฅเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบ”เบ—เบตเปˆเปƒเบŠเป‰. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” Apache-2.0.

เป‚เบ›เบฅเปเบเบฅเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฒเบ‡เบ–เบฒเบ™เบชเบญเบ‡เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ–เบฒเบ™เบชเบญเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ incremental เบ‚เบญเบ‡เบซเบ™เบถเปˆเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบชเบญเบ‡เบžเบฑเบ™ rebuild เบ‚เบญเบ‡ Clang compiler (เปเบ•เปˆเบฅเบฐ rebuild เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐ commit) เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบŠเบญเบ‡เบ”เบฝเบงเบ‚เบญเบ‡ 100 MB เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™ 4000 เป€เบ—เบทเปˆเบญเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเปˆเบงเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. .

เบเบฒเบ™เบชเบฐเบเบฑเบ”เบฅเบฑเบ”เปƒเบ”เบ™เบถเปˆเบ‡เบˆเบฒเบเป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบซเป‰เบ™เบฑเป‰เบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 2-4 เบงเบดเบ™เบฒเบ—เบต (เป„เบงเบเบงเปˆเบฒเบฅเบฐเบซเบฑเบ” LLVM git bisecting 60 เป€เบ—เบปเปˆเบฒ), เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ”เป€เบงเบตเบŠเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เป‚เบ›เปเบเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบขเปˆเบฒเบ‡เบงเปˆเบญเบ‡เป„เบงเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบˆเบฒเบเปเบซเบผเปˆเบ‡เบซเบผเบทเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบฎเบธเปˆเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰. เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™