Google ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° GWPSan, инструмСнт Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° прилоТСния

Компания Google ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° инструмСнтитС GWPSan, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² прилоТСния, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ x86-64 ΠΈ ARM64. GWPSan сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ сподСлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, която сС ΡΠ²ΡŠΡ€Π·Π²Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° стартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° LD_PRELOAD ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² ядрото Π½Π° Linux, ΠΊΠ°Ρ‚ΠΎ спиранС (PERF_TYPE_BREAKPOINT) ΠΈ сэмплиранС Π½Π° процСси. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° C++ ΠΈ Π΅ разпространСн ΠΏΠΎΠ΄ лицСнзия Apache 2.0.

GWPSan Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅Π½ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ класовС Π³Ρ€Π΅ΡˆΠΊΠΈ. GWPSan ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ·, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ Ρ‡Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° сигнали, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС ΠΌΠΈΠ½Π΅ Π±Π΅Π· промяна Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π—Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° компилация Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, добавящи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ. НСобходими са ΠΏΠΎΠ½Π΅ Clang 18 ΠΈ ядро Π½Π° Linux 6.4.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Ρ‚Ρ€ΠΈ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π°:

  • UAR (ИзползванС слСд Π²Ρ€ΡŠΡ‰Π°Π½Π΅) β€” ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ Π² стСка слСд ΠΈΠ·Ρ…ΠΎΠ΄ ΠΎΡ‚ функцията, Π² която Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ Π΅ Π±ΠΈΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. Π—Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅ Π½Π° входящи ΠΈ изходящи Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° функцията β€” ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄ стСка сС замСня с ΠΊΠΎΠΏΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° функцията, Π° ΠΏΡ€ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄ старото ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° стСка сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°.
  • TSan (Thread Sanitizer) β€” опрСдСля ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π° Π³ΠΎΠ½ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ нишки (Data-race), ΠΊΠΎΠΈΡ‚ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ изпълнявани нишки ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΈΠ»ΠΈ промСнят ΠΎΠ±Ρ‰ΠΈ области Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ Π·Π° синхронизиранС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°. Π—Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° спиранС, ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‰ΠΈ сС с ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ области Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ сработва, спира ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½ΠΈΡˆΠΊΠ°Ρ‚Π° Π·Π° ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΠ°ΡƒΠ·Π° провСрява Π΄Π°Π»ΠΈ Π½Π΅ Π΅ сработила Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° спиранС Π·Π° Π΄Ρ€ΡƒΠ³Π° нишка.
  • LMSan (Lightweight Memory Sanitizer) β€” ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π”Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°Ρ‚ΠΎ СкспСримСнталСн ΠΈ Π½Π΅ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.

GWPSan Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° изпълняСмия ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° DynamoRIO Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° машинния ΠΊΠΎΠ΄ Π² абстрактни инструкции ISA, ΠΊΠΎΠΈΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Сймуляция. Π§Ρ€Π΅Π· ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ сигнали ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈ всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ изпълнява ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° част ΠΎΡ‚ инструкциитС Π·Π° анализирания ΠΏΠΎΡ‚ΠΎΠΊ. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ инструкции ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° спСцифичСн Π·Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ инструкции Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° инструкции, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‚ ΠΏΠ°ΠΌΠ΅Ρ‚, сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Ρ‚Π΅Π»Π½ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster