Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Grsecurity
ΠΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΡΡΠ²Π°Ρ Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Ρ Π°, ΡΠ΅ ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ (ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΠ»Π΅Π΄ ΠΊΠΎΠ΄Π°, ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°ΠΉΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°):
int ΠΈΠ½Π΄Π΅ΠΊΡ = n;
if (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = Π½ΠΈΡΠΊΠ°->ptrace_bps[ΠΈΠ½Π΄Π΅ΠΊΡ];
ΠΠΈΠ½ΡΡ ΠΏΡΠΈΠ΅
if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = Π½ΠΈΡΠΊΠ°->ptrace_bps[ΠΈΠ½Π΄Π΅ΠΊΡ];
ΠΡΠ΅Π· ΡΠ»ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡΡΠ° ΡΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅Π½Π° ΠΊΡΠΌ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ 4.4, 4.9, 4.14, 4.19 ΠΈ 5.2. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈΡΠ΅ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΡΡΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ
Π° Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΡ Π΄Π°Π»ΠΈ Π²Π΅ΡΠ΅ Π΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΎ Π² Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° ΠΠΈΠ½ΡΡ, ΡΠ΅ ΡΠ°ΠΌΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡ
Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ Π±Π΅Π· Π½Π°ΠΈΡΡΠΈΠ½Π° Π΄Π° ΠΌΠΈΡΠ»ΡΡ Π·Π° ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΡΠΎΡΡΠΎ
int ΠΈΠ½Π΄Π΅ΠΊΡ = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
ΠΈΠ½Π΄Π΅ΠΊΡ = array_index_nospec(ΠΈΠ½Π΄Π΅ΠΊΡ, HBP_NUM);
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru