ld -z рдЕрд▓рдЧ-рдХреЛрдб


рдпрд╣ рд▓реЗрдЦ рджрд┐рд╕рдВрдмрд░ 2018 рдореЗрдВ 2.30 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП GNU ld рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдХ рдЫреЛрдЯреЗ рд╕реБрд░рдХреНрд╖рд╛ рдлреАрдЪрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред рд░реВрд╕реА рдореЗрдВ, рдЗрд╕ рд╕реБрдзрд╛рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдУрдкрдирдиреЗрдЯ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


"-z рдЕрд▓рдЧ-рдХреЛрдб" рдореЛрдб, рдЬреЛ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдореЗрдВ рдереЛрдбрд╝реА рд╡реГрджреНрдзрд┐ рдХреА рдХреАрдордд рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ

рдЪрд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ, рдЖрдЗрдП рдмрд╛рдЗрдирд░реА рднреЗрджреНрдпрддрд╛ рдХрд╛рд░рдирд╛рдореЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред


рд╢реЛрд╖рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдореБрджреНрджреЛрдВ


рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрдирд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛, рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ C рдФрд░ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХрд░рдкреНрд╢рди рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИрдВред


рд╕реНрдореГрддрд┐ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рднреЗрджреНрдпрддрд╛

CWE-20: рдЕрдиреБрдЪрд┐рдд рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди
CWE-118: рдЗрдВрдбреЗрдХреНрд╕реЗрдмрд▓ рд░рд┐рд╕реЛрд░реНрд╕ рдХреА рдЧрд▓рдд рдкрд╣реБрдВрдЪ ('рд░реЗрдВрдЬ рдПрд░рд░')
CWE-119: рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз
CWE-120: рдЗрдирдкреБрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдмрдлрд░ рдХреЙрдкреА ('рдХреНрд▓рд╛рд╕рд┐рдХ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣')
CWE-121: рд╕реНрдЯреИрдХ-рдЖрдзрд╛рд░рд┐рдд рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ
CWE-122: рд╣реАрдк рдЖрдзрд╛рд░рд┐рдд рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ
CWE-123: рд▓рд┐рдЦреЛ-рдХреНрдпрд╛-рдХрд╣рд╛рдБ рдХреА рд╣рд╛рд▓рдд
CWE-124: рдмрдлрд░ рдЕрдВрдбрд░рд░рд╛рдЗрдЯ ('рдмрдлрд░ рдЕрдВрдбрд░рдлрд╝реНрд▓реЛ')
CWE-125: рдЖрдЙрдЯ-рдСрдл-рдмрд╛рдЙрдВрдбреНрд╕ рдкрдврд╝реЗрдВ
CWE-126: рдмрдлрд░ рдУрд╡рд░-рд░реАрдб
CWE-127: рдмрдлрд░ рдЕрдВрдбрд░-рд░реАрдб
CWE-128: рд░реИрдк-рдЕрд░рд╛рдЙрдВрдб рдПрд░рд░
CWE-129: рдПрд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЕрдиреБрдЪрд┐рдд рд╕рддреНрдпрд╛рдкрди
CWE-130: рд▓рдВрдмрд╛рдИ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрд╕рдВрдЧрддрд┐ рдХреА рдЕрдиреБрдЪрд┐рдд рд╣реИрдВрдбрд▓рд┐рдВрдЧ
CWE-131: рдмрдлрд░ рдЖрдХрд╛рд░ рдХреА рдЧрд▓рдд рдЧрдгрдирд╛
CWE-134: рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ
CWE-135: рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рдХреА рдЧрд▓рдд рдЧрдгрдирд╛
CWE-170: рдЕрдиреБрдЪрд┐рдд рд╢реВрдиреНрдп рд╕рдорд╛рдкреНрддрд┐
CWE-190: рдЗрдВрдЯреЗрдЧрд░ рдУрд╡рд░рдлреНрд▓реЛ рдпрд╛ рд░реИрдкрд░рд╛рдЙрдВрдб
CWE-415: рдбрдмрд▓ рдлреНрд░реА
CWE-416: рдлреНрд░реА рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
CWE-476: NULL Pointer Dereference
CWE-787: рдЖрдЙрдЯ-рдСрдл-рдмрд╛рдЙрдВрдбреНрд╕ рд▓рд┐рдЦреЗрдВ
CWE-824: Uninitialized Pointer рдХрд╛ рдПрдХреНрд╕реЗрд╕
...


рд╕реНрдореГрддрд┐ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдЬреИрд╕реА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╢реЛрд╖рдг рддрддреНрд╡ рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рд╕реВрдЪрдХ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЪреВрдВрдХрд┐ рд╕реВрдЪрдХ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЕрд░реНрдерд╛рдд, рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрди рддрдХрдиреАрдХреЛрдВ рдХреЗ рд░реВрдкреЛрдВ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред


рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░рдирд╛рдореЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЗрд╕ рдЖрдо рдХреНрд╖рдг рдХреЛ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ:


  1. рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдБрдЪ: рд╕реНрдЯреИрдХ рдХреБрдХреАрдЬрд╝, рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧрд╛рд░реНрдб, рд╕реВрдЪрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг
  2. рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реЗрдЧрдореЗрдВрдЯ рдПрдбреНрд░реЗрд╕ рдХрд╛ рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди: рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рд▓реЗрдЖрдЙрдЯ рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди
  3. рдмрд╛рд╣рд░реА рдХреЛрдб рдЦрдВрдбреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХреЛрдб рдХреЛ рд░реЛрдХреЗрдВ: рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдерд╛рди рд╕реБрд░рдХреНрд╖рд╛

рдЕрдЧрд▓рд╛, рд╣рдо рдмрд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред


рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рд╕рдВрд░рдХреНрд╖рдг


рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдореЛрд░реА рд╡рд┐рд╖рдо рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ: рдкрдврд╝рдиреЗ, рд▓рд┐рдЦрдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдЯреЗрдмрд▓ рдХреЛ рдкреЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╕рдВрд░рдХреНрд╖рдг рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╕рдЦреНрдд рдкреГрдердХреНрдХрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЧреИрд░-рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЦрдВрдбреЛрдВ (рд╕реНрдЯреИрдХ, рд╣реАрдк) рдФрд░ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреЛрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЦрдВрдбреЛрдВ рдореЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдмрд╛рд╣рд░реА рдХреЛрдб рдХреЛ рд░рдЦрдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдбреЗрдЯрд╛ рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдирд┐рд╖реЗрдз рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдорд▓рд╛рд╡рд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕реНрдерд┐рдд рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ (рдмрд╛рдж рдореЗрдВ рдЧреИрдЬреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрдврд╝рддреЗ рдХреНрд░рдо рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рддрдХрдиреАрдХреЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдард┐рдирд╛рдИ рдХреА рд╣реИрдВ:


  • рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдирд╛ рдЬреЛ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП () рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (ret2libc)
  • рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдЧреИрдЬреЗрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ рдпрд╛ рдореЗрдореЛрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛ рджреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рд┐рдВрдЧ mprotect() ), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдордирдорд╛рдирд╛ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛрддрд╛ рд╣реИред
  • рдЧреИрдЬреЗрдЯреНрд╕ рдХреА рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рдПрдХрд▓ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЧреИрдЬреЗрдЯреНрд╕ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗрдЧрдореЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЧреИрдЬреЗрдЯреНрд╕ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдХрд░рдг рд╣реИрдВ: рд░реЙрдкрд░ , рд░реЛрд╕реНрдкреИрдбрдЧреЗрдЯ ред


рд╣реЛрд▓ READ_IMPLIES_EXEC


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрдЬреЗрдЯреНрд╕ рдпрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдвреВрдВрдврдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЦреЛрдЬ рдПрдХ рд╣реА "рдФрджреНрдпреЛрдЧрд┐рдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓" рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдЯреИрдХ рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рд╕реЗрдЧрдореЗрдВрдЯ рдерд╛ред


рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ /proc/$pid/maps :


 00008000-00009000 r-xp 00000000 08:01 10 /var/flash/dmt/nx_test/a.out 00010000-00011000 rwxp 00000000 08:01 10 /var/flash/dmt/nx_test/a.out 00011000-00032000 rwxp 00000000 00:00 0 [heap] 40000000-4001f000 r-xp 00000000 1f:02 429 /lib/ld-linux.so.2 4001f000-40022000 rwxp 00000000 00:00 0 40027000-40028000 r-xp 0001f000 1f:02 429 /lib/ld-linux.so.2 40028000-40029000 rwxp 00020000 1f:02 429 /lib/ld-linux.so.2 4002c000-40172000 r-xp 00000000 1f:02 430 /lib/libc.so.6 40172000-40179000 ---p 00146000 1f:02 430 /lib/libc.so.6 40179000-4017b000 r-xp 00145000 1f:02 430 /lib/libc.so.6 4017b000-4017c000 rwxp 00147000 1f:02 430 /lib/libc.so.6 4017c000-40b80000 rwxp 00000000 00:00 0 be8c2000-be8d7000 rwxp 00000000 00:00 0 [stack] 

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ - рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐рдпрд╛рдБред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╣реА рдХреЙрд▓рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА (рдХреЛрдб рд╕реЗрдЧрдореЗрдВрдЯ, рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдбреЗрдЯрд╛) рдпрд╛ рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ (рдвреЗрд░, рд╕реНрдЯреИрдХ) рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдмрд╛рдИрдВ рдУрд░, рдХреНрд░рдо рдореЗрдВ, рдЙрди рдкрддреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдЧреЗ, рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдЭрдВрдбреЗ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ: r (рдкрдврд╝реЗрдВ), w (рд▓рд┐рдЦрдирд╛), x (рдирд┐рд╖реНрдкрд╛рджрд┐рдд)ред рдпреЗ рдЭрдВрдбреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЗрди рдкрддреЛрдВ рдкрд░ рд╕реНрдореГрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ, рд▓рд┐рдЦрдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХреНрд╕реЗрд╕ рдореЛрдб рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рд▓рдЧрднрдЧ рд╕рднреА рдореЗрдореЛрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИрдВ: рд╕реНрдЯреИрдХ, рдвреЗрд░ рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рд╕реЗрдЧрдореЗрдВрдЯред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрдореГрддрд┐ рдХреЗ rwx рдкреГрд╖реНрдареЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ (рдкреИрдХреЗрдЯ, рдлрд╛рдЗрд▓реЗрдВ) рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрд╕рдХрд╛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред


рдПрдХ рдЖрдзреБрдирд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреНрдпреЛрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреЗрдЬреЛрдВ рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдирд┐рд╖реЗрдз рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдХреНрдпрд╛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдФрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рдзреНрд╡рдирд┐ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ?


рдпрд╣ рдЪрд┐рддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрд░реНрдиреЗрд▓ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдПрдХ рдвреЗрд░, рдвреЗрд░, рдореБрдЦреНрдп рдИрдПрд▓рдПрдл рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЖрджрд┐) рдФрд░ рдкрд░рдорд╛рдгреБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рдиред рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рдзреНрд╡рдЬ READ_IMPLIES_EXEC ред рдЗрд╕ рдзреНрд╡рдЬ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкрдардиреАрдп рдореЗрдореЛрд░реА рднреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рдПрдХ рдзреНрд╡рдЬ рдХреЛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрдкрдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


  1. рдПрд▓рдИрдПрдл рд╣реЗрдбрд░ рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдзреНрд╡рдЬ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧрдмреЛрд░реНрдб ( 1 , 2 , 3 )!
  2. рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  3. рдЗрд╕реЗ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдкрд╣рд▓рд╛, рдЕрдЧрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЧреИрд░-рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рд╛рдЪреАрди рдмреИрд╕рд╛рдЦреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХреЛрдб рдХрд░реНрдиреЗрд▓ 2.6.32 (ARM) рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдерд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдерд╛ред

ELF рдЫрд╡рд┐ рдореЗрдВ рдЧреИрдЬреЗрдЯ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди


рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдИрдПрд▓рдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВред Gcc рд╕рдВрдХрд▓рдХ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдбреЗрдЯрд╛ рдЬреЛ рдЕрдиреНрдп рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрдИ рдЦрдВрдб рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ ld рд▓рд┐рдВрдХрд░ рджреНрд╡рд╛рд░рд╛ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдИрдПрд▓рдПрдл рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЫрд╡рд┐ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ: рд╡рд░реНрдЧреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдЦрдВрдбреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред


 $ readelf -l /bin/ls Elf file type is EXEC (Executable file) Entry point 0x804bee9 There are 9 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x08048034 0x08048034 0x00120 0x00120 RE 0x4 INTERP 0x000154 0x08048154 0x08048154 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] LOAD 0x000000 0x08048000 0x08048000 0x1e40c 0x1e40c RE 0x1000 LOAD 0x01ef00 0x08067f00 0x08067f00 0x00444 0x01078 RW 0x1000 DYNAMIC 0x01ef0c 0x08067f0c 0x08067f0c 0x000f0 0x000f0 RW 0x4 NOTE 0x000168 0x08048168 0x08048168 0x00044 0x00044 R 0x4 GNU_EH_FRAME 0x018b74 0x08060b74 0x08060b74 0x00814 0x00814 R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 GNU_RELRO 0x01ef00 0x08067f00 0x08067f00 0x00100 0x00100 R 0x1 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame 03 .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss 04 .dynamic 05 .note.ABI-tag .note.gnu.build-id 06 .eh_frame_hdr 07 08 .init_array .fini_array .jcr .dynamic .got 

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдИрдПрд▓рдПрдл рдЫрд╡рд┐ рдореЗрдВ рдЦрдВрдбреЛрдВ рдХреА рдореИрдкрд┐рдВрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред


рдЦрдВрдб рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЛрдбрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдИрдПрд▓рдПрдл рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦрдВрдб рддрд╛рд▓рд┐рдХрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ ELF рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдИ рдЦрдВрдб рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


рдЦрдВрдб- рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ELF рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЗрди-рдореЗрдореЛрд░реА ELF рдЫрд╡рд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм ELF рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдЕрдкрд╡рд╛рдж рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреГрддрд┐ рдореЗрдВ, ARM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП ELF ld.so рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдмрд┐рдпрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреИрдЪ рд╣реИ, рдЬреЛ SHT_ARM_ATTRIBUTES рдЬреИрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ ".ARM.attributes" рдЕрдиреБрднрд╛рдЧ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЖрд╣рд░рд┐рдд рд╕реЗрдХреНрд╢рди рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рджреНрд╡рд┐рдкрдж рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ ...


рдПрдХ рдИрдПрд▓рдПрдл рдЦрдВрдб рдореЗрдВ рдЭрдВрдбреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЦрдВрдб рдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, GNU / Linux рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдереЗ рдХрд┐ рджреЛ PT_LOAD (рдореЗрдореЛрд░реА рд▓реЛрдбреЗрдб) рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдЯреЗрдмрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рд╣реИ:


  1. RE рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдЦрдВрдб


    1.1ред ELF рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб: рд╕реЗрдХреНрд╢рди .init , .fini , .fini


    1.2ред ELF рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛: .symtab , .rodata


  2. RW рдлреНрд▓реИрдЧ рд╕реЗрдЧрдореЗрдВрдЯ


    2.1ред ELF рдореЗрдВ рдЪрд░ рдбреЗрдЯрд╛: рдЕрдиреБрднрд╛рдЧ .got , .bss , .bss , .bss



рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЦрдВрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЭрдВрдбреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреИрдЬреЗрдЯреНрд╕ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ ELF рдореЗрдВ рдЬреИрд╕реЗ рдХрд┐ libcrypto, рд╕рд░реНрд╡рд┐рд╕ рдЯреЗрдмрд▓ рдФрд░ рдЕрдиреНрдп рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ 40% рддрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЦрдВрдб рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдРрд╕реА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдПрдХрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЦрдВрдб рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рдо рдХреЛ рдорд╢реАрди рдХреЛрдб рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧрдмреЛрд░реНрдб рдХреЗ рд╣рдорд▓рд╛рд╡рд░ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдХреА рд▓рд╛рдЗрди рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдЯреБрдХрдбрд╝рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдпрд╣ рдХреНрд░рдо рд╣реЛ, рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдирд┐рд░рдВрддрд░ рд╕рдВрдЦреНрдпрд╛ ...


рдкреАрдИ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЗрдбрд░

рдИрдПрд▓рдПрдл рдЫрд╡рд┐ рдХреЗ рдкрд╣рд▓реЗ рдЦрдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЗрдбрд░ рдФрд░ рдЯреЗрдмрд▓ рд▓рдЧрднрдЧ 15 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рд╕реЗ рдорд┐рд▓рддреЗ рдЬреБрд▓рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╡рд╛рдпрд░рд╕ рдереЗ, рдЬреЛ рдЕрдкрдиреЗ рдкреАрдИ рд╣реЗрдбрд░ рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рдереЗ, рдЬреЛ рд╡рд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рднреА рдерд╛ред рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирдореВрдиреЗ рдХреЛ рдЦреЛрджрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:


Virus.Win32.Haless.1127


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреАрдИ рд╣реЗрдбрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдареАрдХ рдмрд╛рдж рд╡рд╛рдпрд░рд╕ рдмреЙрдбреА рдХреЛ рдирд┐рдЪреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдпрд╣рд╛рдВ рд▓рдЧрднрдЧ 3KB рдореБрдХреНрдд рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИред рд╡рд╛рдпрд░рд╕ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдмрд╛рдж рдПрдХ рдЦрд╛рд▓реА рдЬрдЧрд╣ рд╣реЛрддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдПрдХреНрд╕ рджреГрд╢реНрдп рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдереЗ: рдкреНрд░рддрд┐рд╢реЛрдз ред


рдирд┐рд░реНрдгрдп


  • рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИред
  • рдлрд┐рдХреНрд╕реНрдб 12 рдЬрдирд╡рд░реА, 2018 : рдХреБрдВрдЬреА `ld -z рдЕрд▓рдЧ-рдХреЛрдб:" рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрд▓рдЧ рдХреЛрдб "PT_LOAD" рд╕реЗрдЧрдореЗрдВрдЯ рд╣реЗрдбрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдореНрдмрджреНрдз рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдб "PT_LOAD" рдЦрдВрдб рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдирд╛рдХрдкрд░-рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред))ред рдлреАрдЪрд░ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ 2.30 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ 2.31 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЧрдИ рдереАред
  • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдмрдВрдЯреВ 18.10 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ, рддрд╛рдЬрд╛ binutils рдкреИрдХреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдХрдИ рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕реЗ рдПрд▓реНрдлрдорд╛рд╕реНрдЯрд░ рд╢реЛрдзрдХрд░реНрддрд╛ рдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛

рд▓реЗрдЖрдЙрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдирдпрд╛ рдИрдПрд▓рдПрдл рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:


 $ readelf -l ls Elf file type is DYN (Shared object file) Entry point 0x41aa There are 11 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x00000034 0x00000034 0x00160 0x00160 R 0x4 INTERP 0x000194 0x00000194 0x00000194 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] LOAD 0x000000 0x00000000 0x00000000 0x01e6c 0x01e6c R 0x1000 LOAD 0x002000 0x00002000 0x00002000 0x14bd8 0x14bd8 RE 0x1000 LOAD 0x017000 0x00017000 0x00017000 0x0bf80 0x0bf80 R 0x1000 LOAD 0x0237f8 0x000247f8 0x000247f8 0x0096c 0x01afc RW 0x1000 DYNAMIC 0x023cec 0x00024cec 0x00024cec 0x00100 0x00100 RW 0x4 NOTE 0x0001a8 0x000001a8 0x000001a8 0x00044 0x00044 R 0x4 GNU_EH_FRAME 0x01c3f8 0x0001c3f8 0x0001c3f8 0x0092c 0x0092c R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 GNU_RELRO 0x0237f8 0x000247f8 0x000247f8 0x00808 0x00808 R 0x1 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt 03 .init .plt .plt.got .text .fini 04 .rodata .eh_frame_hdr .eh_frame 05 .init_array .fini_array .data.rel.ro .dynamic .got .data .bss 06 .dynamic 07 .note.ABI-tag .note.gnu.build-id 08 .eh_frame_hdr 09 10 .init_array .fini_array .data.rel.ro .dynamic .got 

рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛ рдЕрдм рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЦрдВрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: .init, .plt, .plt.got, .text, .fini


рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ld рдХреЗ рдЕрдВрджрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдИрдПрд▓рдПрдл рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


 $ ld --verbose GNU ld (GNU Binutils for Ubuntu) 2.26.1 * * * using internal linker script: ================================================== /* Script for -z combreloc: combine and sort reloc sections */ /* Copyright (C) 2014-2015 Free Software Foundation, Inc. * * * 

рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ ldscripts рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред separate-code рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред


 $ diff elf_x86_64.x elf_x86_64.xe 1c1 < /* Default linker script, for normal executables */ --- > /* Script for -z separate-code: generate normal executables with separate code segment */ 46a47 > . = ALIGN(CONSTANT (MAXPAGESIZE)); 70a72,75 > . = ALIGN(CONSTANT (MAXPAGESIZE)); > /* Adjust the address for the rodata segment. We want to adjust up to > the same address within the page on the next page up. */ > . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); 

рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдЦрдВрдб рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдП рдЦрдВрдб рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред


рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдВрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рдереЗред рдЕрд░реНрдерд╛рддреН, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ _bfd_elf_map_sections_to_segments - рдкреНрд░рддрд┐рдмрджреНрдз рджреЗрдЦреЗрдВред рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрдВрдбреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп, рдЬрдм рдЕрдиреБрднрд╛рдЧ рдкрд┐рдЫрд▓реЗ рдЦрдВрдб рд╕реЗ SEC_CODE рдзреНрд╡рдЬ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдЦрдВрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред


рдирд┐рд╖реНрдХрд░реНрд╖


рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ , рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдЭрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╢рд╛рдВрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi433108/


All Articles