β‘ ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π·Π°ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π°Π³ΠΎΠΌ /GS ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ProPolice.
β‘ ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ DEP ΠΈ Π Π°Π₯.
β‘ Π£ΡΡΠ½ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ, ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΠΉΡΠ΅ ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ
β‘ ΠΠ΅ Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ ΠΠ‘ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π° Π²Π°Ρ, ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π°ΡΠΈΡΡ.
β‘ ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
Π‘ΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ
β‘ ΠΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° C/C++, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π·Π°ΡΠΈΡΡ.
β‘ Π ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
β‘ ΠΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠΎΠΊ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘++ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π‘ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ.
ΠΡΠ΅Ρ 2. ΠΡΠΈΠ±ΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ
Π ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΠΈΡ Π³ΡΠ΅Ρ
Π‘ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΡΠ²ΡΠ·Π°Π½ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π°ΡΠ°ΠΊ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΡ ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ. ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ ΠΏΡΠΈΡΠ»Π°Π» ΠΠ°ΠΌΠ°Π³ΡΠ° ΠΠ³ΡΠ°ΠΌΠ°Π» (Lamagra Argaβmal) 23 ΠΈΡΠ½Ρ 2000 Π³ΠΎΠ΄Π° (www.securityfocus.com/archive/1/66842). ΠΠ΅ΡΡΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ ΠΡΡΠ°ΡΠ΅Π½ (Pascal Bouchareine) Π΄Π°Π» Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ (www.securityfocus.eom/archive/l/70552). Π Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΠ°ΡΠΊΠ° Π‘Π»Π΅ΠΌΠΊΠΎ (Mark Slemko) (www.securityfocus.com/archive/1 /10383) Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ΅ΡΠΈ Π½Π΅ Π±ΡΠ»ΠΎ.
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΡΠ½ΠΎΡΡΡΠΈΡ ΡΡ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° C/C++ ΡΠ°ΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π° ΠΎΠΏΠ°ΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈ Π·Π°ΡΠΈΡΡ ΡΡΠ΅ΠΊΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠΌΠ°ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ· Π½Π΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΠ²Π΅ΡΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΎΠΌ, Π½ΠΎ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ UNIX ΠΈ Linux. Π Windows ΡΠ°Π±Π»ΠΈΡΡ ΡΡΡΠΎΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ΅ΡΡΡΡΠΎΠ² (ΡΠ΅ΡΡΡΡΠ½ΡΡ DLL). ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡΠ½ΡΡ DLL, ΡΠΎ ΠΎΠ½ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΡ Π°ΡΠ°ΠΊΡ, ΠΈ Π½Π΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
ΠΠΎ ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ Π°ΡΠ°ΠΊΠΈ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠ΅ΠΉ. Π‘Π°ΠΌΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠ°ΠΊΡ Ρ ΠΊΡΠΎΡΡβΡΠ°ΠΉΡΠΎΠ²ΡΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ SQLβΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π·Π°ΠΏΠΎΡΡΠΈΠ² ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π² Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΡΠ΅ Π³ΡΠ΅Ρ Ρ ΡΠ·ΡΠΊΠΈ
Π‘Π°ΠΌΡΠΌΠΈ ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ·ΡΠΊΠΈ Π‘ ΠΈ Π‘++. Π£ΡΠΏΠ΅ΡΠ½Π°Ρ Π°ΡΠ°ΠΊΠ° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ Π²ΡΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ Π°ΡΠ°ΠΊ. Π‘ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π½Π° Perl Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ»ΡΡΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΡΠ½Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΎΡΠΌΠ°ΡΠ°, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈΠ· Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π³ΡΠ΅Ρ ΠΎΠΏΠ°Π΄Π΅Π½ΠΈΠ΅
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ β ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΎΡΠΌΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΡΡΠΎ ΠΌΠΈΠ½ΠΈβΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, Π½Π΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ Π΄ΠΎΠ²Π΅ΡΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΡΠ½ΡΡΡ ΡΠ°ΠΊΡΡ ΡΡΡΠΎΠΊΡ, ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ C/C++ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΈΡΠΊΠΎΠ²Π°Π½Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π° ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΡΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΡΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ (ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ %ΠΏ), ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
Π C/C++ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊΠ°Π·Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΠ΅ (β¦). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ. Π ΡΠΈΡΠ»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° printf: printf, sprintf, snprintf, fprintf, vprintf ΠΈ Ρ. Π΄. Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
...#include <stdio.h>
int main(int argc, char* argv[])
{
if(argc > 1)
printf(argv[1]);
return 0;
}
ΠΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π΄Π΅Ρ ΡΡΠΎβΡΠΎ Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½ΠΎΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Hello World. Π ΠΎΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅: Hello World. ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΡ %Ρ %Ρ . ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ (cmd.exe) ΠΏΠΎΠ΄ Windows Π₯Π , ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
...E:\projects\19_sins\format_bug>format_bug.exe Β«%x %xΒ»
12ffc0 4011e5
Π Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΎΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² shellβΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ».
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎβ‘ Π€ΡΠ½ΠΊΡΠΈΠΈ printf ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΡΠΎΡΠΌΠ°ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΡΠ΅ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΡ Π² ΡΡΠ΅ΠΊ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΡΠ΅ΡΠΈΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ %Ρ , printf ΠΏΡΠΎΡΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΈΠ· ΡΡΠ΅ΠΊΠ°. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅, ΡΡΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡ Π² ΡΡΠ΅ΠΊΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΡΠΌΠΎΠ³ Π±Ρ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΆΠ΅ ΡΠ»ΡΡΠ°Π΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π°Π΄ΡΠ΅Ρ ΠΊΠ°Π΄ΡΠ° ΡΡΠ΅ΠΊΠ° (0xl2ffc0), Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π°Π΄ΡΠ΅Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΡ main(). Π’ΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ β Π²Π°ΠΆΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΡΡΠΌΠ΅Π» Π½Π΅ΡΠ°Π½ΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΠ°ΠΊ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠ°ΠΌΡΡΡβ‘Β» Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ %ΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΠ»ΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΠΊ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π±Π°ΠΉΡΠΎΠ² Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
...unsigned int bytes;
printf("%s%n\n", argv[1], &bytes);
printf("ΠΠ»ΠΈΠ½Π° Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ»Π° %d ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²\n, bytes");
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ:
...E:\projects\19_sins\format_bug>format_bug2.exe Β«Some random inputΒ»
Some random input
ΠΠ»ΠΈΠ½Π° Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ»Π° 17 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Π³Π΄Π΅ Π΄Π»ΠΈΠ½Π° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ°, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ %ΠΏ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ°, Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ %hn β Π΄Π²Π° Π±Π°ΠΉΡΠ°. ΠΡΠΎΡΠΈΠ²Π½ΠΈΠΊΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π°Π΄ΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² Π½ΡΠΆΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΠ΅ΠΊΠ°, Π° ΠΏΠΎΡΠΎΠΌ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠΈΡΠΈΠ½Ρ, Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ»ΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ² ΡΠ°Π²Π½ΡΠ»ΠΎΡΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΠ°, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Π³Π»Π°Π²Π΅ 5 ΠΊΠ½ΠΈΠ³ΠΈ Michael Howard ΠΈ David Π‘. LeBlanc Β«Writing Secure Code, Second EditionΒ» (Microsoft Press, 2002) ΠΈΠ»ΠΈ Π² ΠΊΠ½ΠΈΠ³Π΅ Holesby Jack Koziol, David Litchfield, Dave Artel, Chris Anley, Sinan Β«noirΒ» Eren, Neel Mehta and Riley Hassell Β«The Shellcoder\'s HandbookΒ» (Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ no shellβΠΊΠΎΠ΄Π°ΠΌ) (Wiley, 2004).
ΠΠΎΠΊΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π·Π° Π°ΠΊΡΠΈΠΎΠΌΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° C/C++, ΡΠΎ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΎΠ½ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π΅Ρ, ΠΊΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½ΡΠΆΠ½ΡΠΉ Π΅ΠΌΡ ΠΊΠΎΠ΄. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ Π°ΡΠ°ΠΊΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠ΅ΠΊΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°ΡΠ°ΠΊΠΈ Π½Π° Π»Π΅ΡΡ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π°Π²ΡΠΎΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π» ΡΡΡ Π°ΡΠ°ΠΊΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ, Π΅ΠΌΡ ΠΏΠΎΠΏΠ°Π»ΡΡ Π½Π΅ ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΡΠΏΠ»ΠΎΠΉΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π°ΡΠ°ΠΊΠ° Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»Π°. ΠΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΡΡΠΎΠΉ Π°ΡΠ°ΠΊΠΈ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π²Π·Π»ΠΎΠΌΠ°ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π³Π»Π°Π·Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΡΠΌΠ°ΡΠ° %ΠΏ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΡΠ°ΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠΎΠΉ Π°ΡΠ°ΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠ·Π²ΠΈΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈΠ»ΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΡΡΠΌΠ΅Π΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΡΠ±ΠΈΠ²Π°ΡΡΠΈΠΉ Ρ ΡΠΎΠ»ΠΊΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΈΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡ ΠΈΡ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΡ, Π° Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ, ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π‘ ΡΡΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π° ΠΈ Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π’Π°ΠΊ, ΡΠΈΠΌΠ²ΠΎΠ» Π·Π°Π±ΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , Π° ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ ΡΠ»Π΅Π΄Ρ Π°ΡΠ°ΠΊΠΈ.