α’αααα’αα·ααααααααααΆααααααΈ Google
ααΆαα’αα·αααααα LLVM ααααΈααααααααΌαααΆαααααΎααΆααΌαααααΆααααααΆαααααααΎαα§αααααααα‘αΎααααα Google α αααα·αααααΆααααΊααΆααααα·αααΎ Google ααΆαα αΆααααααΎαα’αα·αααα libc αααααααα½ααα½α α αΎα α ααα»α’αααΈααΆαααΆαα·αα’αα·ααααααααααααααααααΆααααΆααααΆααααααα½ααα LLVM αααααααααααααΆααααααααααΆαααααΆαααααα½αααααααΆαα½α α αΎααααααΆαα C ++ (Libc ++) ααα»αααααα·αααΆααααααΆααααααααααΆαααααααααααΆαααααΆαα C ( libc) α
ααΆαβα’αα·ααααβααααΌαβααΆαβααβαααααβααΉαβα’αα»ααααβααΆβααααΆααβααΆα αααβαααααΎαβαα»αααΆαβααΆβαααααΎααα αααααΎαααααΌαααααΌαααΆαααααΎα±ααααααΌαααΆααα ααΆα‘αΎαααΆαααααΆαααααΆααααααα·ααΈ αα·ααααααααα Libc ααααααααααα·αααααααα·αααΆααααααΌαααΆαα’αα»ααααααΉαααααΌαααΆαααα αΈα αααααΆααααΈααΆααααααααα·αααΆααααΆαααααα»αααΆα Libc ααααΈα’αΆα ααααΌαααΆαααααΎααΆααΆααααα½ααααααααααααΆαααααααααα Libc α ααΎαααΆαααααααα αΆααααααΎαααΆαα½αααΉαααΆαααΆαααααααααΆααααααΆαααααααα x86-64 ααΈαα»α αα·αααΆαααααΆαααα·αα·αααα (ααΆααααα»αααΆααααα ααΆαααααΆαα αα·αααααΆααααααααααααααααΉαααααΌαααΆαα’αα»ααααααΆαααααΆααααααα)α
ααααααααααα αααααα·ααααα»αααααΆααααΆαααααΌαααααΆαα’αα·αααααα ααα»ααααααααα ααΆααΌαααααΆαααααΌαααΆαααααααα½α α αΎαα
- αααΌαα»ααα·αααΆαα’αα·ααααααααααααΆαααααααα·ααααΆααααΆαααααααααααΆαααααΆαααα‘αΆααΆααΆααααα»α monolithic;
- ααΆαααΆαααααααααΆααααΆαααααΆαααα·αα·αααααα
αααα»ααααα
PIE (Position-independent executables) αα·ααααααααΆα PIE α ααΆαααααα CRT (C runtime) αα·α PIE loader αααααΆααααΆαααααα·ααααα·αααααααΆααααααΆααααα·αα·ααααα - ααΆαααΆαααααααααΆαααα»αααΆααααααΆααα C αααααααΆαααΆαα αααΎα ααΆαα½αααΉαααΆααααααα POSIX αα·ααααααααααααααΆααααΆαααααααααααααα½αα ααα½ααααααααΌαααΆαααααααααα·ααΈαααααΆαααααΆααα
- ααΌαααααααααααΆαα½ααααααααααααααΆααααΆααααααα’αααααα α αΎαααααααααΆαα αααα αΆαααΆα αααα»αααααα ααΆααααααΉαααΆαααΆαααααααααΆαααααααααααααααΆααΈααΈααΈ ααΆααααΌαααΆαααααΎα±ααααααΎαα·ααΈααΆααααααααααααα Clang αα·α libc++ α
- ααΆαααααΎααααΆααααΆαα’αα»ααααααα’αααα»ααααα»αααΆαα’αα·αααααααααααααΎαααα’ααα§ααααα LLVM ααΌα ααΆααΆαααααΎααΉαα’ααΆααα αα·αααΆαααααΎααααα fuzz ααΆααααΈααααΌαα
αα½ααααα»αα
ααααα’αααα’αα·αααααα LLVM ααααα
αααααααααα’ααααααααα
- ααΆαα’αα·αααααα αα·ααααααααΆ Libc ααααΉαααααΌα ααααααΆ αα·ααα»αααΆαααααα ααΊααΆαα·α αα ααΆαααααααΆααα½αα αααα αΆαα·ααααα·ααα ααΎα ααα½αααΌαααααα ααα»αααααααα»αααΆαααΆααΆααΌαα₯αα·ααΆααααααΉαααααΌα αα·αααΆαααααΆααααα»αααΆαα’αα»ααααα ααα»α αααααΆαα ααααα·αααΌαααΈαααααΆαααααααααααααα·ααΈαααααααΆααααααααααα»α C/C++ ααααΌα ααΆαααααα·ααΈααΆααΆααΆαααααααα αααααααΆααααΎαααΆααααααααΌαααΆαααααΎα ααα Libc α αα·ααΈααΆαααααααΆααα»αααααα·ααα·αααΈααΆα nuances ααΉαααΆαα±ααααΆααα·ααααααΆαααααα·ααΈαααααΆαααααΆααααΆα αααΎαααΉααα·αα’αΆα ααααΎααΆαααΆαα½α Libc ααΆααα ααα»αααααααααΆααααααααααααααααααΉααα·αααΆαααΆαα αΆααα’αΆααααααα ααααα’αααααααΎααααΆαααααααα
- ααΆαα’αα·ααααααααΆααΈαααααα’αΆα ααααααΆα Libc ααα»αααααααα»αα±ααααΆααααΎααααΆαααααΆαααΌααααΌααΆα ααααααααΆαα±ααααΆααααααΌαααΆαααααααααΆααα½α α αΌα ααΎααααΈααΆααΆααΆαααααααΆαα αααα»ααααααα·ααΈα ααΆαα’αα·αααααααααααααΆαα§ααααααααααααααααααααααΎαα αα ααααααΆααΈαααααααΉαααΆααα½αααααααα αααααααΌαααΆα αα·ααααααααααΆααααααααα»αα αα»α αααααΆαααααααΆααααααααααααααααα ααααα α§ααΆα ααα ααααα·αααΎα’αααααααααααα αΆααααααααΆαααααΈααα α»ααα αααα»ααααααα·ααΈαααααααα αααα»αααΆαα’αα·αααααααααααΆαααααααααα ααΆααΆααααααΆααααα½ααααα»αααΆαααΆααΆααΆ Libc α’αΆα ααααΌαααααΆααΆαα½αααΉαααα α»αααα ααΆααΆααα½ααα»αααα α»ααααα½αα―αα Apple ααααΎ BSD libc fork αααααΆαααααααααααΆααααα α αΎα Google ααααΎ musl fork αα αααα»α Fuchsia α αααα·αααααααααα’αααα’αα·αααααα musl ααΊααΆααΆααααααΌαααΆαααΆααααααΆα αααααααααααΆααΈααΎααααΈαααααΆααααΈαααα αΆα’αΆααααΆααααα ααα»αααααα·αααααΌαααΆαααΆααααααΎααααΈαααααΆααααΈααααααΆααααα’α·ααα αα ααααααα»ααααααααΎααΆαααααΆααααααΌααααααααΆααααααααα αα·αααααΆααααααΆααΆααααααΆααα
- α’ααααααΆααααααααααα―αααααααααα»αααΆαα’αα·αααααα libc αα·αααΆααααααααΎαααααααΆαααααααα»ααααααα·ααΆααΆαααΆαααααααααααα»αααα ααααααα»αα±ααα’ααααααααΎααααααα·ααΈααααΎααααΆαααααααααΆαααΆααΆαααααΌαααΆαα αααααΆαααα ααΉαααΆαα’αα»ααααααΆααααΆααα αααα αΎαααΆααΌαα ααα»αααα’ααααα·αααααα musl αααααΆααααΉαααΆαααΆαααααα αΌααααααΆαααααααααΆαααα αααα»α LLVM ααααΌα ααΆαααααΆααααΉαααΆαα’αα·αααααα libc αα αααα»α LLVM α αΆααααΆααααΈαααα»αααααΈααα ααααααα―αααΆααααα libc ααααΌαααΆαααΆααααα α αΎαααΆαα’αα»ααααααΆααααΆαααα½αααααΆαααΆαααααααααΆαααααΆααααααΌααααααΆαα LLVM αα·αα’αααααααααααααΆααα’ααααααΆαααΆαααααααααΆαααααΆααααΈααΈαα
ααααα: opennet.ru