Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сСтСй». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор ΠšΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ² Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²

β€œPlease check that it is in your path and readable\n” );

exit(-1);

}

else

{

/*we loaded the dll correctly, time to scan it*/

printf(β€œScanning %s for code useable with the %s

register\n”,

dll,reg);

/*set curpos at start of DLL*/

curpos=(BYTE*)loadedDLL;

__try

{

while(1)

{

/*check for jmp match*/

if(!memcmp(curpos,jmppat[regnum],2))

{

/* we have a jmp match */

printf(β€œ0x%X\tjmp %s\n”,curpos,reg);

numaddr++;

}

/*check for call match*/

else if(!memcmp(curpos,callpat[regnum],2))

{

/* we have a call match */

printf(β€œ0x%X\tcall %s\n”,curpos,reg);

numaddr++;

}

/*check for push/ret match*/

else if(!memcmp(curpos,pushretpat[regnum],2))

{

/* we have a pushret match */

printf(β€œ0x%X\tpush %s β€“β€œ\

β€œ ret\n”,curpos,reg);

numaddr++;

}

curpos++;

}

}

__except(1)

{

printf(β€œFinished Scanning %s for code

useable with”\

β€œ the %s register\n”,dll,reg);

printf(β€œ Found %d usable addresses\n” ,numaddr);

}

}

}

DWORD GetRegNum(char *reg)

{

DWORD ret=-1;

if(!stricmp(reg,β€œEAX”))

{

ret=0;

}

else if(!stricmp(reg,β€œEBX”))

{

ret=1;

}

else if(!stricmp(reg,β€œECX”))

{

ret=2;

}

else if(!stricmp(reg,β€œEDX”))

{

ret=3;

}

else if(!stricmp(reg,β€œESI”))

{

ret=4;

}

else if(!stricmp(reg,β€œEDI”))

{

ret=5;

}

else if(!stricmp(reg,β€œESP”))

{

ret=6;

}

else if(!stricmp(reg,β€œEBP”))

{

ret=7;

}

/*return our decimal register number*/

return ret;

}

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅. Π’Π΅Ρ€ΠΌΠΈΠ½ смСщСниС (offset) Π² основном относится ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π±ΡƒΡ„Π΅Ρ€Π° Π½Π° локальной машинС. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ установлСна опСрационная систСма Unix, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ рассмотрСнии пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «смСщСниС» Π² систСмС Unix ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π—Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ UNIX всСгда располагаСт ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ записями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ стрСмится приобрСсти ΠΏΡ€Π°Π²Π° ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root. Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Unix всСгда имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°. На локальной машинС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ½ΠΎΠ³Π΄Π° вычисляСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс собствСнного стСка, прСдполагая, Ρ‡Ρ‚ΠΎ ΠΎΠ½ совпадаСт с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ адрСсом Π°Ρ‚Π°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° появляСтся удобная для Π½Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ явного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° (direct jump) смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вычислСнного Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ адрСса. Если всС сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Β«Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс+смСщСниС» (base+offset) Π² ΠΊΠΎΠ΄Π΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠ΄ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ NOP. Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° слСдуСт Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ адрСс ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. Для этого Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ практичСски Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ опрСдСлСния адрСса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² памяти. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· загруТаСтся Π² Ρ€Π°Π·Π½Ρ‹Π΅ мСста памяти. Для систСмы UNIX повторная компиляция ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… срСдах, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ компиляторами с ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ установками ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся общСпринятой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ. Π§Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ затруднСния, рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ NOP (No Operation). ИдСя проста. NOP – это ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСсто Π² памяти. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° NOP Π±Ρ‹Π»Π° создана для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π° NOP Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ памяти, Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ упорядочивания Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΈΡ… выравнивания.

Π’Ρ€ΡŽΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ NOP ΠΏΠ΅Ρ€Π΅Π΄ записью Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ адрСса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ адрСс Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ NOP. АдрСс ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Π² Π±ΡƒΡ„Π΅Ρ€Π΅, Ссли Π±ΡƒΡ„Π΅Ρ€ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ NOP. Π’ случаС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ NOP выполнится ΠΎΠ½Π° ΠΈ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π§Π΅ΠΌ большС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ NOP Π±ΡƒΡ„Π΅Ρ€, Ρ‚Π΅ΠΌ с мСньшСй Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ адрСс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ написав ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π² дальнСйшСм ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ…ΠΈΡ‚Ρ€ΠΎΡƒΠΌΠ½Ρ‹ΠΌΠΈ способами. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΈ ΡΠΎΠ·ΠΈΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°.

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ вСрится Π² Ρ†Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ услоТнСния своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ извСстных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° состоят ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ машинного ΠΊΠΎΠ΄Π°. Вряд Π»ΠΈ это ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ понравится. Π•ΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ кодирования ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° языкС C, C++ ΠΈΠ»ΠΈ встроСнном ассСмблСрС, Π° Π·Π°Ρ‚Π΅ΠΌ скопируйтС ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. МногиС компиляторы запросто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ ΠΊΠΎΠ΄ Π½Π° ассСмблСрС ΠΈ C Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ написания созданных Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ называСтся способом комплСксирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (fusion technique).

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ – ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простой способ написания ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ассСмблСрС с Π½Π΅Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ухищрСниями. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ области памяти Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. ПодобноС Windows NT обСспСчиваСт для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Но ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ любом случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ вставляСтся Π² пространство ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ процСсса.

РаспылСниС динамичСски распрСдСляСмой памяти (Β«ΠΊΡƒΡ‡Π°Β»). (ДинамичСски распрСдСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ (Β«ΠΊΡƒΡ‡Π°Β») – ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, выдСляСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ….) Π’ΠΎ врСмя исслСдования возмоТности использования уязвимости. IDA (Increment/Decrement Adress) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сСрвСра Internet IIS (Internet Information Server) 4/5/6 ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ со странной ситуациСй. Π‘Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ адрСсов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° рСгистр EIP, сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ. IDA Π±Ρ‹Π»Π° обусловлСна ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΡ„Π΅Ρ€Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ строки символов. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π±Ρ€Π°Π»Π°ΡΡŒ строка Β«AAAAΒ» (Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии 0x41414141) ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΊ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 0x0041004100410041. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ нСприятно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти ΠΏΠΎ адрСсу, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒΡΡ с ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ значСния 0x00, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ загруТался. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ содСрТимому рСгистра (jmp ESP ΠΈΠ»ΠΈ jmp reg) оказался Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌ нСприятным проявлСниСм Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ строки символов Π±Ρ‹Π»ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Для прСодолСния этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π½ΠΎΠ²Ρ‹ΠΉ способ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ динамичСски распрСдСляСмой памяти» (forcing the heap). Π­Ρ‚ΠΎΡ‚ способ относится ΠΊ классу Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Β«ΠΊΡƒΡ‡ΠΈΒ» (heap violation). О Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстных Π°Ρ‚Π°ΠΊΠ°Ρ… Π½Π° динамичСски Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΏΠΎΠ·Π΄Π½Π΅Π΅, Π° способ «принуТдСния динамичСски распрСдСляСмой памяти» отличаСтся ΠΎΡ‚ Π½ΠΈΡ… Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ являСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка, Π° Π½Π΅ ΠΊΡƒΡ‡ΠΈ. Π’ рядС случаСв этот способ оказался ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ·-Π·Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ строк.

ΠŸΡ€ΠΈ исслСдовании доступных адрСсов памяти Π²ΠΈΠ΄Π° 0x00aa00bb, Π³Π΄Π΅ aa ΠΈ bb – управляСмыС символы, Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ адрСсов ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ сСрвСр Internet IIS ΠΎΡ‚Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ динамичСски Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Всякий Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ запроса ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ сСрвСру Internet ΠΎΠ½ сохраняСт Π² динамичСски распрСдСляСмой памяти Π΄Π°Π½Π½Ρ‹Π΅ сСанса. Π‘Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² этом ΠΆΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ памяти ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP, Π½ΠΎ ΠΈΠΌΠΈ нСльзя Π±Ρ‹Π»ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Бпособ распылСния динамичСски распрСдСляСмой памяти Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании Π² Π½Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ NOP ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΡƒΠ΄Π° управлСния. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ стСк, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ рСгистром EIP ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ динамичСски распрСдСляСмой памяти Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π² Π½Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ способа Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² использовании Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ…ΠΈΡ‰Ρ€Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚, вставлСнных Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±Π°ΠΉΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Бпособ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π΅Ρ‰Π΅ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ задания смСщСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Достаточно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ динамичСски распрСдСляСмой памяти.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ сторона способа Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСобходимости размСщСния Π² области динамичСски распрСдСляСмой памяти Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ NOP, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΌ адрСсам памяти.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ, основанный Π½Π° спСцификации %u (ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Unicode), Π±Ρ‹Π» Ρ€Π°Π·Π²ΠΈΡ‚ японским исслСдоватСлСм бСзопасности, извСстным ΠΏΠΎΠ΄ псСвдонимом hsj. Он позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ всСми Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ рСгистра EIP, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ способы пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ способы ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ сущСствованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Unicode спСцифично для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сСрвСра Internet, поэтому способ японского исслСдоватСля ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π½Π΅ΠΌΡƒ, Π° Ρƒ способа распылСния динамичСски распрСдСляСмой памяти Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния. Им ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.