Libc Protections
Last updated
Last updated
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг AWS рд░реЗрдб рдЯреАрдо рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ (ARTE) GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг GCP рд░реЗрдб рдЯреАрдо рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ (GRTE)
Malloc рдореЗрдореЛрд░реА рдХреЛ 8-рдмрд╛рдЗрдЯ (32-рдмрд┐рдЯ) рдпрд╛ 16-рдмрд╛рдЗрдЯ (64-рдмрд┐рдЯ) рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ 32-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрдВрдХ рдХрд╛ рдЕрдВрдд 0x8 рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 0x0 рдХреЗ рд╕рд╛рдеред рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдпрд╣ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕рд╣реА рд░реВрдк рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИ рдкрд╣рд▓реЗ рдмрд┐рди рд╕реЗ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред
64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрдВрдХ рд╕рдВрд░реЗрдЦрдг рдХрд╛ рдкреНрд░рд╡рд░реНрддрди Malloc рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдбрд╝рд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдирдХрд▓реА рдЪрдВрдХ рдХреЛ рдХреЗрд╡рд▓ 16 рдкрддреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 1 рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд┐рдд рдХрд░рдиреЗ рдХреА рд╕реАрдорд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрддреНрдкреАрдбрд╝рди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдБ рдЙрдкрдпреЛрдХреНрддрд╛ рдХреЛ рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ, рд╣рдорд▓реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИред
__malloc_hook рдкрд░ Fastbin рд╣рдорд▓рд╛
Malloc рдореЗрдВ рдирдП рд╕рдВрд░реЗрдЦрдг рдирд┐рдпрдо рднреА __malloc_hook
рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣рдорд▓реЗ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╣рдорд▓рд╡рд╛рд░ рдЪрдВрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд▓рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗред рдЕрдм, рд╕рдЦреНрдд рд╕рдВрд░реЗрдЦрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдРрд╕реЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдЕрдм рдФрд░ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрддреНрдкреАрдбрд╝рди рдорд╛рд░реНрдЧ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЧреНрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╡реГрджреНрдзрд┐ рд╣реИ рдЬреЛ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ fastbin рдФрд░ tcache Fd рдкреЙрдЗрдВрдЯрд░реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рдЙрддреНрдкреАрдбрд╝рди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛ рд▓реАрдХ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рд╕реВрдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЬреЛ рд╕реАрдзреЗ рдЬреНрдЮрд╛рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИрдВ (рд╕рд╛рдкреЗрдХреНрд╖рд┐рдХ рдЕрдзрд┐рд▓реЗрдЦ).
рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдореВрд▓ рд╣реИ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реВрддреНрд░:
рдиреНрдпреВ_рдкреАрдЯреАрдЖрд░ = (рдПрд▓ >> 12) XOR рдкреА
рдПрд▓ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдерд╛рди рд╣реИред
рдкреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ fastbin/tcache Fd рдкреЙрдЗрдВрдЯрд░ рд╣реИред
рдпрд╣рд╛рдБ рдмрд┐рдЯрд╡рд╛рдЗрдЬ рдбрд╛рдпрд╛рдирд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдерд╛рди (рдПрд▓) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдЯреЛрдВ рдХреА рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреГрддрд┐ рдореЗрдореЛрд░реА рдкрддреЛрдВ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред рдмрд┐рдЯреЛрдВ рдХреЛ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рд╕рдореАрдХрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирдП, рдореИрдВрдЧрд▓ рдкреЙрдЗрдВрдЯрд░ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ рдкрд░ рд╣рдорд▓реЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдореИрдВрдЧрд▓ рдкреЙрдЗрдВрдЯрд░ рдкрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рд▓реЗрдЖрдЙрдЯ рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди (ASLR) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдореМрдЬреВрджрд╛ рдЕрдирд┐рдпрдорд┐рддрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрддреЛрдВ рдХреЛ рдЕрдирд┐рдпрдорд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд▓рд╡рд╛рд░реЛрдВ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдореЗрдореЛрд░реА рдЦрд╛рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛред
рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ рд╣реАрдк рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдФрд░ рдкреВрд░реНрдг рдкреЙрдЗрдВрдЯрд░ рдУрд╡рд░рд░рд╛рдЗрдЯреНрд╕ рдХреЛ рд░реЛрдХрдирд╛, рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрдИ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╣рдорд▓рд╛ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ:
рдмрд╛рдпрдЯ рдмрд╛рдЗрдЯ рд╕рд╛рдкреЗрдХреНрд╖рд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдЯреНрд╕ рдХреА рд░реЛрдХрдерд╛рдо: рдкрд╣рд▓реЗ рд╣рдорд▓рд╡рд╛рд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдирд┐рд╢реНрдЪрд┐рдд рдкрддреЗ рдХреЛ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рд╣реАрдк рдЪрдВрдХ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЕрдиреБрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓ рд╕рдХрддреЗ рдереЗ, рдЬреИрд╕рд╛ рдХрд┐ рд▓реАрдХрд▓реЗрд╕ рд╣рд╛рдЙрд╕ рдСрдл рд░реЛрдорди рд╣рдорд▓реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдРрд╕реЗ рд╕рд╛рдкреЗрдХреНрд╖рд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдЯреНрд╕ рдмрд┐рдирд╛ рд╣реАрдк рд▓реАрдХ рдХреЗ рдЕрдм рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдирдХреА рд╕рдлрд▓рддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВред
Tcache рдмрд┐рди/Fastbin рд╣рдорд▓реЛрдВ рдХреА рдХрдард┐рдирд╛рдИ рдореЗрдВ рд╡реГрджреНрдзрд┐: рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ (рдЬреИрд╕реЗ __malloc_hook
) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╣рдорд▓реЗ рдЕрдм рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛ рдПрдХ LibC рдкрддрд╛ рд▓реАрдХ рдХрд░рдиреЗ, рдПрдХ рдЪрдВрдХ рдХреЛ tcache рдмрд┐рди рдореЗрдВ рдореБрдХреНрдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ Fd рдкреЙрдЗрдВрдЯрд░ рдХреЛ __malloc_hook
рдХреА рдУрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЗрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕рд╣реА рд░реВрдк рд╕реЗ рдореИрдВрдЧрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдЯреАрдХ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рд╣реАрдк рд▓реАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд▓рд╡рд╛рд░реА рдХреА рдмрд╛рдзрд╛ рдХреЛ рдЙрдЪреНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдЧреИрд░-рд╣реАрдк рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдлреЗрдХ рдЪрдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реАрдк рд▓реАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛: рдЕрдм рдЧреИрд░-рд╣реАрдк рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ (рдЬреИрд╕реЗ рд╕реНрдЯреИрдХ, .bss рдЦрдВрдб, рдпрд╛ PLT/GOT) рдореЗрдВ рдПрдХ рдирдХрд▓реА рдЪрдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЕрдм рд╣реАрдк рд▓реАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рд▓рд┐рдмрд╕реА рдкрддреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рдорд╛рдиред
рд╣реАрдк рдкрддреЛрдВ рдХрд╛ рд▓реАрдХ рдХрд░рдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдмрдирд╛рдирд╛: рдкреЙрдЗрдВрдЯрд░ рдореИрдВрдЧрд▓рд┐рдВрдЧ
рдкреЙрдЗрдВрдЯрд░ рдЧрд╛рд░реНрдб рдПрдХ рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдорд┐рдЯрд┐рдЧреЗрд╢рди рддрдХрдиреАрдХ рд╣реИ рдЬреЛ glibc рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рд╕реНрдЯреЛрд░реНрдб рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рдЦрд╛рд╕рдХрд░ рдЙрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЬреЛ atexit()
рдЬреИрд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЙрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдП рдЧрдП рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдПрдХ рдЧреБрдкреНрдд рд╕реНрдЯреЛрд░реНрдб рд╕реЗ XOR рдХрд░рдХреЗ рдФрд░ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рд░реЛрдЯреЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЙрд▓рдЭрд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬреЛ рдзрд╛рд░рд┐рддрд╛ рдбреЗрдЯрд╛ рдореЗрдВ (fs:0x30
) рд╕реНрдЯреЛрд░реНрдб рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рддрдВрддреНрд░ рд╣рдорд▓рд╛рд╡рд╛рджрд┐рдпреЛрдВ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╣рд╛рдЗрдЬреИрдХ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд░рдЦрддрд╛ рд╣реИред
рдкреЙрдЗрдВрдЯрд░ рдЧрд╛рд░реНрдб рдСрдкрд░реЗрд╢рди рдХреА рд╕рдордЭ: рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрд▓рдЭрд╛рдирд╛ (mangling
) PTR_MANGLE
рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ 64-рдмрд┐рдЯ рдЧреБрдкреНрдд рд╕реЗ XOR рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ 0x11 рдмрд┐рдЯ рдХрд╛ рдмрд╛рдПрдВ рд░реЛрдЯреЗрд╢рди рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдкрд░реЗрд╢рди PTR_DEMANGLE
рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд▓рд╛ рд░рдгрдиреАрддрд┐: рд╣рдорд▓рд╛ рдПрдХ рдЬрд╛рдирд╛-рдкрд╣рдЪрд╛рдирд╛ рдЯреЗрдХреНрдирд┐рдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд▓рд╛рд╡рд╛рджреА рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдореВрд▓ рдФрд░ рдЙрд▓рдЭрд╛рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЙрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЧреБрдкреНрдд рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЬреНрдЮрд╛рдд рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рд╢реЛрдзрди:
рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдкрд╣рдЪрд╛рди: glibc рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдЬреИрд╕реЗ __libc_pthread_functions
) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ, рдПрдХ рд╣рдорд▓рд╛рд╡рд╛рджреА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИред
рдЧреБрдкреНрдд рдХреА рдЧрдгрдирд╛: рдПрдХ рдЬреНрдЮрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдЬреИрд╕реЗ __pthread_attr_destroy
рдФрд░ рдЙрд╕рдХреЗ рдореИрдВрдЧрд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЧреБрдкреНрдд рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдЧрд▓реНрдб рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓рдЯреА рд░реЛрдЯреЗрд╢рди (рджрд╛рдПрдВ рд░реЛрдЯреЗрд╢рди) рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрддреЗ рдХреЗ рд╕рд╛рде XOR рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯреНрд╕: рд╣рдорд▓рд╛рд╡рд╛рджреА рдпрд╣ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдЮрд╛рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЙрд▓рдЭрд╛рдП рдЧрдП рд░реВрдкреЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП 0 рдпрд╛ -1 рдЬреИрд╕реЗ рдЬреНрдЮрд╛рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд▓рдЭрд╛рдП рдЧрдП рд░реВрдкреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдкрд░ рдЧреБрдкреНрдд рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рдЧреБрдкреНрдд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╣рдорд▓рд╛рд╡рд╛рджреА рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдЧрд╛рд░реНрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЫрд▓рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде libc рдмреЗрд╕ рдкрддреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдореЗрдореЛрд░реА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред