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

рдЗрд╕ рдкрд╛рда рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреНрдпрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдЖрдкрдХреЛ
рдПрдЖрд░рдПрдо (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ)
рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рда рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рдХрд╛ рд╕реНрддрд░ рд░рд╛рд╕реНрддреЗ рдореЗрдВ Google рдкрд░ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХрд╛ рд╣реИред рдЦреИрд░, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдХреЗ рдкрд╛рд╕, рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред :)
- рд▓рдЧрднрдЧред рдкреНрд░рддрд┐редрдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдЯреЗрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдореЗ рдХрд▓реЗрдХреНрдЯрд░ ред
- рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ-рдбрдВрдк-рдЬреЗрдб ред
- рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдУрдкрди рд╕реЛрд░реНрд╕ рдПрдЪрдИрдПрдХреНрд╕ рдПрдбрд┐рдЯрд░: рд╣реЗрдХреНрд╕ рдлрд╛рдИрдиреНрдб ред
- рдЖрдИрдбреАрдП рдбреЗрдореЛ рдПрдХ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдФрд░ рдбрд┐рдмрдЧрд░ рд╣реИред рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкрд╛рда рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦреЗрдВрдЧреЗ!
рд░рдирдЯрд╛рдЗрдо рдореИрдирд┐рдкреБрд▓реЗрд╢рди
рдкрд┐рдЫрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рд╣рдордиреЗ рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП .plist рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рдордп рдЪрд░ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LLDB рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдореБрдЦреНрдп рдмрдВрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ (
Meme Collector.app
) рдЦреЛрд▓реЗрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреБрдХрд╕рд╛рди рдореЗрдВ рд╣реИрдВ, рддреЛ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рд╣рдо рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ: рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
lldb
рдбреАрдмрдЧрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдмрдврд╝рд┐рдпрд╛ред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рдЙрд╕рд╕реЗ рдПрдХ рдирд┐рдордВрддреНрд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ:
(lldb)
рд╣рдо рдбрд┐рдмрдЧрд░ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ:
рдореИрдВ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдХреНрд╖рд░ (lldb)
рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЖрдк рдХреЙрдкреА рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рднреА рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ attach --name "Meme Collector" --waitfor
attach
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдПрд▓рдПрд▓рдбреАрдмреА рдХреЛ "
Meme Collector
" рдирд╛рдордХ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ (рдкрд╛рда рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ) рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдЖрдИрдбреАрдИ рд╕реЗ рдирд╣реАрдВ) - рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ "рдкреБрдирд░рд╛рд░рдВрдн" рдХрд╣реЗрдВрдЧреЗред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрд▓рдПрд▓рдбреАрдмреА рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде
рдПрдХ рд╕рд╛рде
рдордЬрд╝рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдбреАрдмрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рдХрд╣реЗрдВ:
Process 1427 stopped Executable module set to "/Users/dmitriy/Library/Application Support/iPhone Simulator/7.0.3/Applications/9A72F266-8851-4A25-84E4-9CF8EFF95CD4/Meme Collector.app/Meme Collector". Architecture set to: i486-apple-macosx.
рдФрд░ рдПрдХ рдирдИ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд:
(lldb)
рдкреНрд░рддреНрдпреЗрдХ ViewController рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдареАрдХ рд╡рд╣реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВред рдЕрдХреНрд╕рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╡рд╣рд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП
viewDidLoad
рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ iOS рдореЗрдВ,
UIViewController
рдЙрдкрдХреНрд▓рд╛рд╕реЗрд╕ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛
viewDidLoad
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ
viewDidLoad
ред
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
b viewDidLoad
рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдХреЗрд╕ рд╕рдВрд╡реЗрджреА рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
viewdidload
рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдлрд▓ рд╣реЛ
viewdidload
ред
рдпрд╣
viewDidLoad
(C ++ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рддрд░реАрдХреЛрдВ рд╕рд╣рд┐рдд) рдирд╛рдордХ рд╕рднреА рддрд░реАрдХреЛрдВ рдкрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ ObjC рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдирдХреЗ рдирд╛рдо рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
-[UIViewController viewDidLoad]
, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк
UIViewController
рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдПрд▓рдПрд▓рдбреАрдмреА рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП 15 рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдорд┐рд▓реЗ:
Breakpoint 1: 15 locations.
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЙрд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рд░рдЦрд╛ рд╣реИред рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
br l
(рдпрд╣
breakpoint list
рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдХрдорд╛рдВрдб рдХрд╛ рдкреВрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред)
рдЦреИрд░, рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ:
Current breakpoints: 1: name = 'viewDidLoad', locations = 15, resolved = 15 1.1: where = Meme Collector`-[ViewController viewDidLoad] + 18 at ViewController.m:27, address = 0x0001f482, resolved, hit count = 0 1.2: where = UIKit`-[UIViewController viewDidLoad], address = 0x005d3db5, resolved, hit count = 0 1.3: where = UIKit`-[_UIModalItemsPresentingViewController viewDidLoad], address = 0x0065ab4b, resolved, hit count = 0 1.4: where = UIKit`-[UIKeyboardCandidateGridCollectionViewController viewDidLoad], address = 0x00680729, resolved, hit count = 0 1.5: where = UIKit`-[UIActivityGroupViewController viewDidLoad], address = 0x008d2b6b, resolved, hit count = 0 1.6: where = UIKit`-[UIPrintPanelTableViewController viewDidLoad], address = 0x009be80f, resolved, hit count = 0 1.7: where = UIKit`-[UIPrintStatusViewController viewDidLoad], address = 0x009c8828, resolved, hit count = 0 1.8: where = UIKit`-[UIPrintRangeViewController viewDidLoad], address = 0x009d29ae, resolved, hit count = 0 1.9: where = UIKit`-[_UILongDefinitionViewController viewDidLoad], address = 0x00a10cf4, resolved, hit count = 0 1.10: where = UIKit`-[_UINoDefinitionViewController viewDidLoad], address = 0x00a1249d, resolved, hit count = 0 1.11: where = UIKit`-[UIReferenceLibraryViewController viewDidLoad], address = 0x00a13bd4, resolved, hit count = 0 1.12: where = UIKit`-[_UIFallbackPresentationViewController viewDidLoad], address = 0x00a77877, resolved, hit count = 0 1.13: where = UIKit`-[_UIViewServiceViewControllerOperator viewDidLoad], address = 0x00aba23b, resolved, hit count = 0 1.14: where = UIKit`-[UIActivityViewController viewDidLoad], address = 0x00b4f296, resolved, hit count = 0 1.15: where = UIKit`-[_UITextEditingController viewDidLoad], address = 0x00b9a6ec, resolved, hit count = 0
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
-[ViewController viewDidLoad]
, рдЪреВрдВрдХрд┐ рдмрд╛рдХреА Apple рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджреЗрдВред
рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдУ! рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
c
рдЬреЛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ
continue
рд╣реИ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЬрдм рддрдХ
viewDidLoad
рдкрд╣рд▓реА рдХреЙрд▓ рдирд╣реАрдВ рд╣реЛрддреА рддрдм рддрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛:
Process 1427 resuming Process 1427 stopped * thread
"рдФрд░ рдЕрдм ... рдИ-рдпрд╛рд░ ... рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдордЬрд╝реЗрджрд╛рд░ рд╕рдордп рд╣реИ: рдЕрдиреНрдпрдерд╛ рдореИрдВ рдирд╣реАрдВ рдЦреЗрд▓рддрд╛!"

рд╣рдордиреЗ
ViewController
рд╡рд░реНрдЧ (ViewController.m рдлрд╝рд╛рдЗрд▓) рдХреЗ рдлреНрд░реЗрдо рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдФрд░ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдХреВрд▓? рдФрд░ рдЕрдзрд┐рдХ! рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╕рднреА рд╡рд░реНрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдзреНрдпрд╛рди! - рдПрдХрд▓ред
рд╣рд╛рдБ, рдПрдХрд▓ред рдпрджрд┐ рдЖрдкрдиреЗ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рдзреНрдпрд╛рдирдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ "рджрд┐рд▓рдЪрд╕реНрдк" рд╡рд░реНрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ
MoneyManager
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ
purchaseCurrency
рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдПрд╣? :)
рд╣рдорд╛рд░реЗ
(lldb)
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
call [[MoneyManager sharedManager] purchaseCurrency]
рд╣рдордиреЗ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛! рдбрд┐рдмрдЧрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:
(BOOL) $0 = YES
рдпрджрд┐ рд╣рдордиреЗ рдЙрддреНрддрд░
YES
рджреЗрдЦрд╛, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЖрднрд╛рд╕реА рдореБрджреНрд░рд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ "рдЕрдзрд┐рдЧреНрд░рд╣реАрдд" рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред (рдпрд╣рд╛рдБ рд▓реЗрдЦрдХ рдиреЗ рдлрдВрджрд╛ рд▓рдЧрд╛рдпрд╛, рдпрд╣ рдЕрдВрджрд░реВрдиреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рд╣рдо, рдкрдЯрд╛рдЦреЗ, рдЗрд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдПред -
рдкреНрд░рддрд┐ рд╡реНрдпрдХреНрддрд┐ред )
LLDB Enter рджрдмрд╛рдХрд░ рдкрд┐рдЫрд▓реА рдХрдорд╛рдВрдб рдХреЛ рднреА рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдорд┐рдЦрд╛рдЗрд▓
рдорд┐рдЦрд╛рд▓рдХреЛрд╡ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд▓реВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рджрдмрд╛рдПрдВ:
(lldb) call [[MoneyManager sharedManager] purchaseCurrency] (BOOL) $0 = YES (lldb) (BOOL) $1 = YES (lldb) (BOOL) $2 = YES (lldb) (BOOL) $3 = YES (lldb) (BOOL) $4 = YES (lldb) (BOOL) $5 = YES (lldb) (BOOL) $6 = YES (lldb) (BOOL) $7 = YES (lldb)
рдореБрдлреНрдд рд╕рд╛рдордЧреНрд░реА рдЦрд░реАрджрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдХрднреА рдирд╣реАрдВ рд░рд╣рд╛! рдЕрдм рдПрдХ-рджреЛ рдмрд╛рд░ рдХрдорд╛рдВрдб рдбрд╛рд▓реЗрдВ
c
... рддрд╛рдХрд┐ рд╕рднреА рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдЬреЛ рд╣рдо рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ:

рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдЦреИрд░, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ Ctrl + C рджрдмрд╛рдПрдВред LLDB рдбрд┐рдмрдЧрд░ рд╣рдорд╛рд░реЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдЪрд▓реЛ рдЕрдм рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
q
рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░
y
рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ:
(lldb) q Quitting LLDB will detach from one or more processes. Do you really want to proceed: [Y/n] y
рд╣рдо рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдкрдЫрд╛рдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдбреАрдмрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд░рдирдЯрд╛рдЗрдо рд╣реЗрд░рдлреЗрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрд░рдХреНрд╖рдг
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбрд┐рдмрдЧрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдБрдЪ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбрд┐рдмрдЧрд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдордп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдПрдХ рд╣реИрдХрд░ (рдХреНрд░реИрдХрд░, рдЪреАрдЯрд░, ...) рдЗрд╕ рдЪреЗрдХ рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдм рдЦрддрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рд░рди рд▓реВрдк рдореЗрдВ рдЪреЗрдХ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЪреЗрдХ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдПрдХ рдЬрд╛рдВрдЪ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВред
рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдорддреМрд░ рдкрд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдЗрд╕рдХреА рдХреАрдордд
рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрдорддреА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА
рд╣реИ ред рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред
MoneyManager
рд╕рд┐рдВрдЧрд▓рдЯрди рдореЗрдВ рдбрд┐рдмрдЧрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдпрджрд┐ рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрдЬрд╛рдп
nil
рд▓реМрдЯреЗрдВред
рдЙрдиреНрдирдд рдореЛрдбрдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐
рд╕рдВрджреЗрд╢ рд╣реИрдВ ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ - рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдХреЛрдб рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЦреИрд░, рдЕрдВрдд рдореЗрдВ, рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ! рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ (рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдпрд╛ Xcode рдореЗрдВ) рдФрд░ MoneyManager.m рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдВред рдпрд╣рд╛рдВ рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ: рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореИрдХреНрд░реЛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдбрд┐рдмрдЧрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ
nil
рд▓реМрдЯреЗрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
sharedManager
рд╡рд░реНрдЧ рдХреЗ
sharedManager
рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 3 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
#ifndef DEBUG SEC_IS_BEING_DEBUGGED_RETURN_NIL(); #endif
рдЕрдм рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

SEC_IS_BEING_DEBUGGED_RETURN_NIL()
рдПрдХ рдорд╛рдирдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореИрдХреНрд░реЛ рдХреЛ рдПрдХ рдХреЙрд▓ рд╣реИ рдЬреЛ рдПрдХ рдбрд┐рдмрдЧрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдиреЗ рдкрд░
nil
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдореИрдХреНрд░реЛ рдХреЗрд╡рд▓ рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
(рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП)Xcode: рдЙрддреНрдкрд╛рдж> рдпреЛрдЬрдирд╛> рдпреЛрдЬрдирд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ... (- < ) - рдмрд╛рдИрдВ рдУрд░ рдЪрд▓рд╛рдПрдБ ... рдЬрд╛рдирдХрд╛рд░реА> рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди: рджрд╛рдИрдВ рдУрд░ рд░рд┐рд▓реАрдЬрд╝ рдЯреИрдмред
AppCode: рднрд╛рдЧреЛ> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ... > рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди: рд░рд┐рд▓реАрдЬрд╝ред
рдЙрдиреНрдирдд рдореЛрдбрдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореИрдХреНрд░реЛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдУрдмреНрдЬреЗрдХ рд╡рд┐рдзрд┐ рдпрд╛ рд╕реА рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд▓реЗрдХрд┐рди! рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдЬрд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ (рдЖрдЧреЗ рджреЗрдЦрдирд╛: рдпрд╣ рд╣рдо рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ) - рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдирд╛ рдЪреЗрдХ рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ, рд╕рд┐рдВрдЧрд▓рдЯрди рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрдЯрд╛рдЦреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ рдкреИрдЪ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛, рдореИрдХреНрд░реЛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рдЯрд┐рдВрдХрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдм IDE рд╕реЗ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВ (рдХреНрдпрд╛ рдЖрдк рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЪреБрдирдирд╛ рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗ?)
Xcode:
рд░рди (тМШR)
AppCode:
рдбреАрдмрдЧ (Ctrl + D)
рдЬрдм рдЖрдк рд░рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ Xcode рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ LLDB рдбрд┐рдмрдЧрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо: рдЦрд╛рддрд╛ рд╢реЗрд╖ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╣рд╛рдБ рдХрд╣реАрдВ
nil
рд╣реИ:

рдФрд░ AppCode рдореЗрдВ, рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд╛рдВрдб рд╣реИрдВ:
рд░рди рдХрдорд╛рдВрдб рдбреАрдмрдЧрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░
рдбреАрдмрдЧ рдХрдорд╛рдВрдб рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХред
рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд╛рдВрдЪреЗрдВ: рдХреНрдпрд╛ рдЖрдк рдЕрдм рдХреБрдЫ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ?
MoneyManager
рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
IDE рдореЗрдВ
рд╕реНрдЯреЙрдк рдмрдЯрди (рдЪреБрдХрддрд╛) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ
рд░реЛрдХреЗрдВ ред LLDB рдбрд┐рдмрдЧрд░ рдХреЛ рднреА рд░реЛрдХреЗрдВред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдВред рдЖрд╡реЗрджрди рдореБрджреНрд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдмрдЧрд░ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдЖрдк рдбрд┐рдмрдЧрд░ рдХреЛ рди рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдмрд▓реНрдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рд╕рдордп рдкрд░ рдПрдХ рдордирдорд╛рдирд╛ рдмрд┐рдВрджреБ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
ps aux | grep "Meme Collector"
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ "рдореЗрдореЗ рдХрд▓реЗрдХреНрдЯрд░" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
dmitriy 2008 0,0 0,0 2432784 636 s001 S+ 1:05 0:00.00 grep Meme Collector dmitriy 2001 0,0 0,4 857416 32240 ?? S 1:04 0:00.65 /Users/dmitriy/Library/Application Support/iPhone Simulator/7.0.3/Applications/9A72F266-8851-4A25-84E4-9CF8EFF95CD4/Meme Collector.app/Meme Collector
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ (рджреВрд╕рд░рд╛ рдХреЙрд▓рдо) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 2001 рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ, LLDB рдХреЛ
-p
рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдП:
lldb -p { }
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ "lldb -p 2001" рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдПрд▓рдПрд▓рдбреАрдмреА рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛:
Attaching to process with: process attach -p 2001 Process 2001 stopped Executable module set to "/Users/dmitriy/Library/Application Support/iPhone Simulator/7.0.3/Applications/9A72F266-8851-4A25-84E4-9CF8EFF95CD4/Meme Collector.app/Meme Collector". Architecture set to: i486-apple-macosx.
рдЬрдм LLDB рдЪрд▓ рд░рд╣рд╛ рд╣реЛ,
MoneyManager
рд╕рд┐рдВрдЧрд▓рдЯрди
MoneyManager
рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
call [[MoneyManager sharedManager] purchaseCurrency]
рдореБрджреНрд░рд╛ рдХреЛ "рдЦрд░реАрджрдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрдм
NO
рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдФрд░
sharedManager
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
po [MoneyManager sharedManager]
рдФрд░ рдЗрд╕ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
nil
рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдерд╛! рд╣рдорд╛рд░рд╛ рд╕рд┐рдВрдЧрд▓рдЯрди рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рднреА рд╕рдордЭрджрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рди рд╣реА рдпрд╣ рдЦрд░реАрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдкрдЯрд╛рдЦрд╛
nil
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ред
рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ:
c
"рдЦрд░реАрдж рдореБрджреНрд░рд╛" рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдХреЛ рдХрд╛рдиреВрдиреА рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рдХреБрдЫ рдирд╣реАрдВ рдЖрдПрдЧрд╛! рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрд▓рдПрд▓рдбреАрдмреА рдЕрднреА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдбрд┐рдмрдЧрд░ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
Ctrl + C рджрдмрд╛рдПрдВ рдФрд░ рдлрд┐рд░
q рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВред рдЦрд░реАрдж рдореБрджреНрд░рд╛ рдмрдЯрди рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдмрдЧрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдзрд┐рдХ рдХрдареЛрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред Ptrace рдлрдВрдХреНрд╢рди
ptrace
рд╕рдВрднрд╡ рд╣реЛ, GDB / LLDB рдХреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ
рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛
рд╣реИ ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IDE рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░
main.m рдЦреЛрд▓реЗрдВ
ред рдПрдХ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
#include <sys/ptrace.h>
рдФрд░
main
рд╕рдорд╛рд░реЛрд╣ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рддреАрди рд▓рд╛рдЗрдиреЗрдВ:
#ifndef DEBUG ptrace(PT_DENY_ATTACH, 0, 0, 0); #endif
ptrace
рдлрд╝рдВрдХреНрд╢рди рдЖрдорддреМрд░ рдкрд░ рдбрд┐рдмрдЧрд░реНрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ GDB рдФрд░ LLDB рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рджреЗрдЦрд╛ред рд╣рдордиреЗ
ptrace
рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде
PT_DENY_ATTACH
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рдпрд╛рдиреА,
PT_DENY_ATTACH
) рдХреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред
рдЕрдм IDE рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рди рдХрд░реЗрдВред
Xcode : рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рд╣рдо рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рддреБрд░рдВрдд рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╡рд╣реАрдВ, Xcode LLDB рдХреЛ рдЗрд╕рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди iOS рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдбреАрдмрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред "рдПрдХ рдмрд╛рд░ рдбрд┐рдмрдЧрд░ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ," Xcode рд╕реЛрдЪрддрд╛ рд╣реИ, "рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░реЛрдХреЗрдВред" рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЬрдВрдЧрд▓реА рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- рдиреЛрдЯ рдкреНрд░рддрд┐редAppCode :
рд░рди (тМШR) рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░
рдбреАрдмрдЧ рдХрдорд╛рдВрдб (Ctrl + D) рдХреЗ рд╕рд╛рде рдпрд╣ Xcode рдХреА рддрд░рд╣ рдХреНрд░реИрд╢ рд╣реЛрддрд╛ рд╣реИред
рдФрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реЗ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЙрд╕ рдкрд░ рдЕрдм рдбрд┐рдмрдЧрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
lldb -p { Meme Collector}
рдкрд░рд┐рдгрд╛рдо рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ:
Attaching to process with: process attach -p 3435 error: attach failed: process did not stop (no such process or permission problem?)
рдпрд╣ рдЫреЛрдЯреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рд╕реЗ рд╣рдмреНрд░ рдкрдврд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рд╣реИрдХрд░ рдирд╣реАрдВ рд░реБрдХреЗрдВрдЧреЗред рдЬрдм рдЖрдк
ptrace
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдЖрдкрдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХ рджреЗрдВрдЧреЗред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрд╣реБрдд рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣реИрдХрд░реНрд╕
рд╕рд╛рдЗрд╕реНрдХреНрд░рд┐рдкреНрдЯ - рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдпрд╛рдж рддрд╛рдЬрд╛ рдХрд░рдирд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рди рд╕рдордп рдореЗрдВ рдУрдмрдЬреЗрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдбреАрдмрдЧрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рд╣реИ рд╡рд╣ рдЖрдкрдХреЛ рд╕рд╛рдЗрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреИрд╕реЗ рд╢реБрд░реВ рдХреА рдереА:
рдХреЛрдИ рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ!
рд╣рдо рдПрдХ рдмрд╛рдЗрдирд░реА рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП, рдФрд░ рдХреНрдпрд╛ рд╣реИред
рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдХреБрдЫ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЗрд░реЗ рдЬреИрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛ рдирдП Xcode рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ), рдпрд╛ рддреЛ рдЖрдк рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рдбреАрдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ - рдкрддреЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
OS X рдФрд░ iOS рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЛ
Mach-O рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдмрд╛рдЗрдирд░реА рдПрдХ
рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓реЛрдб рдЖрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рдж рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЦрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рдХрдорд╛рдВрдб рд╡рд┐рд╢реЗрд╖ рдЭрдВрдбреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ
рдЦрдВрдб (рдЦрдВрдб) рдореЗрдВ рдПрдХ рдпрд╛ рдХрдИ
рдЦрдВрдб (рдЦрдВрдб) рд╣реЛрддреЗ рд╣реИрдВред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрднрд╛рдЧ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:
- рдкрд╛рда рдЕрдиреБрднрд╛рдЧ ред рдЬреНрдпрд╛рджрд╛рддрд░ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдХреЛрдб, рд╕реА рд▓рд╛рдЗрдиреНрд╕, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЖрджрд┐ред рд░реАрдб-рдУрдирд▓реА рдбреЗрдЯрд╛ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рд░реИрдо рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрди рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдореБрдХреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ ред рдЬреНрдпрд╛рджрд╛рддрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдХреЛрдб рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реНрдерд┐рд░ рдЪрд░ рдХреЗ рд▓рд┐рдП BSS рдЦрдВрдб, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЦрдВрдб рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
Apple рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ
рдЙрддреНрдХреГрд╖реНрдЯ рдордЪ-рдУ рдкреНрд░рд╛рд░реВрдк рд╕рдВрджрд░реНрдн рднреА рд╣реИред
- рдиреЛрдЯ рдкреНрд░рддрд┐редрдЕрдм рд╣рдо рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
Meme Collector
рдмрд╛рдЗрдирд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рд╣реЗрдбрд▓рд╛рдЗрди рд╕реЗред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рдЕрднреА рднреА рдореБрдЦреНрдп рдмрдВрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ "рдореЗрдореЗ рдХрд▓реЗрдХреНрдЯрд░ .app" рдореЗрдВ, рджрд░реНрдЬ рдХрд░реЗрдВ:
otool -h "Meme Collector"
рдпрд╣ рдЖрджреЗрд╢ рдореЗрдореЗ рдХрд▓реЗрдХреНрдЯрд░ рдмрд╛рдЗрдирд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
Meme Collector: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 0xfeedface 7 3 0x00 2 25 3372 0x01000085
рдЙрдиреНрдирдд рдореЛрдб0xfeedface (0xFEEDFACE) рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкрддрд╛ рд╣реИ рдпрд╛ ... рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХреБрдЫ рд╡рд╛рдХреНрдпрд╛рдВрд╢, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛?
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдЙрддреНрддрд░ред
- рдиреЛрдЯ рдкреНрд░рддрд┐ред рдиреЛрдЯ: рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 25 рд▓реЛрдб рдХрдорд╛рдВрдбреНрд╕ (
cmds
) рд╣реИрдВ, рдФрд░ рд╡реЗ 3372 рдмрд╛рдЗрдЯреНрд╕ (
sizeofcmds
) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрди рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:
otool -l "Meme Collector"
(рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЛ ItK рджрдмрд╛рдХрд░ рд╕рд╛рдлрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред -
рдиреЛрдЯ рдкреНрд░рддрд┐ )
редрдЖрдкрдХреЛ рдХрдИ, рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рдорд┐рд▓реЗрдВрдЧреАред рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдпрд╛рд░реА рдХреЗ рдмрд┐рдирд╛) рдЖрдк рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд╕реЗрдЧрдореЗрдВрдЯ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзреНрдпрдпрди рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ, рдЖрдЗрдП рд╣рдо рдЗрд╕реЗ
рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрддреНрд╕реБрдХ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВред
рдФрд░ рд╣рдо рдЕрдкрдирд╛ рдкрд╛рда рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
Obobjc_classname рдирд╛рдордХ )
F ) рдЕрдиреБрднрд╛рдЧ
__objc_classname
,
offset
рдзреНрдпрд╛рди рджреЗрдВ - рдпрд╣ рдЗрд╕ рдЦрдВрдб рдХреА "рд╕реНрдерд┐рддрд┐" рдпрд╛ "рд╢рд┐рдлреНрдЯ" рд╣реИ рдЬреЛ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдЖрднрд╛рд╕реА рдореЗрдореЛрд░реА рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред
рдЙрдиреНрдирдд рдореЛрдбoffset
рдмрд╛рд░реЗ рдореЗрдВред рд╕рдмрд╕реЗ рдЙрддреНрд╕реБрдХ, рд╢рд╛рдпрдж, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Addr рдФрд░
offset
рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрд╛, рдХреНрдпреЛрдВ рдпрд╣ рдЕрдВрддрд░ рд╣рд░ рдЬрдЧрд╣ 0x1000 = 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ? рдпрджрд┐ рдЕрднреА рддрдХ рдирд╣реАрдВ, рддреЛ
__PAGEZERO
рдмрд╛рд░реЗ рдореЗрдВ
рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ, рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдкреГрд╖реНрдаред
рдпрд╣рд╛рдВ
__objc_classname
рд╕реЗрдХреНрд╢рди рдХреА рд╢рд┐рдлреНрдЯ 159942 рдмрд╛рдЗрдЯреНрд╕ (рджрд╢рдорд▓рд╡ рдореЗрдВ) рд╣реИред рдиреАрдЪреЗ рдХреА рдЫрд╡рд┐ рдореЗрдВ, рдмрд╛рдИрдВ рдУрд░ - рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рддред
рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдЬрд╛рдПрдВред рдПрдХ рдирдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ ()
N ) рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ "Meme
рдХрд▓реЗрдХреНрдЯрд░.рдПрдкреНрдк " рдХрд░реЗрдВ:
strings -o "Meme Collector"
strings
рдХрдорд╛рдВрдб рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░
-o
рдзреНрд╡рдЬ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд┐рдЦреЗрдЧрд╛ред
рдЦреИрд░, 159942 рдореЗрдВ рдХреНрдпрд╛ рд╕реНрдерд┐рдд рд╣реИ? рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо! (рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред) рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо
__objc_classname
рдЕрдиреБрднрд╛рдЧ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗ:

рд╕реАрдзреЗ рдЗрд╕ рдЦрдВрдб рдХреЗ рдКрдкрд░, рд╣рдо
__objc_methname
рдЕрдиреБрднрд╛рдЧ рджреЗрдЦрддреЗ рд╣реИрдВ, рдпрд╣ 140887 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рд╣реИрдВ (рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП), рдЬреЛ рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдЙрдиреНрдирдд рдореЛрдбрдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ init
рдкрджреНрдзрддрд┐ рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдЖрддреА рд╣реИ?
рдЬрд╣рд╛рдБ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
__objc_classname
рд╕реЗрдХреНрд╢рди
__objc_classname
рд╕реЗрдХреНрд╢рди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреВрдЯ рдХрдорд╛рдВрдб рдореЗрдВ, рд╡реЗ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЪрд▓реЗ рдЧрдП - рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВред
рддреЛ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдХ-рдУ рдмрд╛рдЗрдирд░реА рд╣реИ рдЕрд░рд╛рдЬрдХрддрд╛ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВ ... рддрджрдо! рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╕рдВрд╢реЛрдзрдиред
рднрд╛рд░реА рддреЛрдкрдЦрд╛рдиреЗ: disassembler рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ
рдХреНрдпрд╛ рдЖрдк рдЧрдВрднреАрд░ рдмрдВрджреВрдХреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ? рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП!
рдЖрдк рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реБрдирддреЗ рд╣реИрдВ: рдЖрд╡реЗрджрди "рд╣реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛" рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗ ... рдПрдордПрдордПрдо ... рдЕрд▓рдЧ рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдЗрд░рд╛рджрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо (рд▓реЗрдЦрдХ рдФрд░ рдЕрдиреБрд╡рд╛рджрдХ) рдкреВрд░реА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдЖрдкрдХреА рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХрд░реЗрдЧрд╛ред
рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЖрдИрдбреАрдП рдбреЗрдореЛ рдФрд░ рдХреБрдЫ рд╣реЗрдХреНрд╕ рдПрдбрд┐рдЯрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ,
рд╣реЗрдХреНрд╕ рдлреЗрдиреЗрдВрдб ред рдЖрдИрдбреАрдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдмрд╛рдЗрдирд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рд╣реИрдХрд░реНрд╕ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░, рдбрд┐рдмрдЧрд░ рдФрд░ рдбрд┐рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИред рдФрд░ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдЗрддрдирд╛ рдорд╣рдВрдЧрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдиреЗ рд▓рдЧрднрдЧ 15 рд╕реЗрдХрдВрдб рдкрд╣рд▓реЗ рд╕реБрдирд╛ рдерд╛, рддреЛ рдЖрдИрдбреАрдП рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реАрдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдбрд╛рдВрддрд░рдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЕрдзреНрдпрдпрди рдЗрд╕рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдХреНрд╖рдо рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ x86 рдЕрд╕реЗрдВрдмрд▓рд░ рдЯрд╛рдЗрдк рд╣реИред рдФрд░ рд╣рдо рд╕рднреА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд░реЗрдВрдЧреЗ - рд╣реЗрдХреНрд╕ рдлрд╝реЗрдВрдбред
рдЙрдиреНрдирдд рдореЛрдб"рдЕрд╕реЗрдВрдмрд▓рд░ рдЯрд╛рдЗрдк ... x86 рдХреИрд╕рд╛ рд╣реИ? ARM?┬╗ тАФ . , iOS- ARM-. x86. , , .
рдЖрдИрдбреАрдП рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ Ada Lovelace рдиреЗ рд╣рдорд╛рд░рд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рд╣реИ: Go
рдмрдЯрди рджрдмрд╛рдПрдВ ред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рд╣рдо (рд╣рд╛рдВ, рд╣рд╛рдВ) рдЕрднреА рднреА рдмрдВрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ ( ) рдореЗрдВ рд╣реИрдВред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдлрд╝рд╛рдЗрдВрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:Meme Collector.app
open -R .
рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдпрд╣рд╛рдВ рдбреЙрдЯ рдкреНрд░рддреАрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ "рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░"редрдЕрдЧрд▓рд╛, рдЦреЛрдЬрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬреЛ рдЦреБрд▓рддрд╛ рд╣реИ, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ> рдкреИрдХреЗрдЬ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдПрдВ :
(OS Mavericks рдмрдВрдбрд▓ рдХреЛ "рдкреИрдХреЗрдЬ" рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реВрд╕реА рдореЗрдВ рдпрд╣ рдирд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред - рдзреНрдпрд╛рди рджреЗрдВред )рдмрдВрдбрд▓ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓реЗрдЧреАред Meme Collector
, рдЗрд╕реЗ рдЖрдИрдбреАрдП рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдИрдбреАрдП рдиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рдЗрдирд░реА рдПрдХ i386 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИредрдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛) - рдФрд░ "рдЪрд▓реЛ рдЪрд▓реЗрдВ!" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ редрдареАрдХ рд╣реИред Disassembler рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреА рдпреЛрдЬрдирд╛ (рдореИрдкрд┐рдВрдЧ) рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ - рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди ... рдХреИрд╕реЗ рдХрд╣реЗрдВ ... рдЕрдзрд┐рдХ рдкреЗрд╢реЗрд╡рд░ред :)
рдпрджрд┐ рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ "рдЙрджреНрджреЗрд╢реНрдп-рд╕реА 2.0 рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? тАЭ- рдЙрддреНрддрд░ рд╣рд╛рдБред рдпрджрд┐ рдЖрдк "рдирд┐рдХрдЯрддрд╛ рджреГрд╢реНрдп" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рдЙрддреНрддрд░ рдирдВредрдЬрдм рдЖрдИрдбреАрдП рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрдореЗ рдореЗрдВ рдЖрдПрдВрдЧреЗ ред рдпрджрд┐ рдЖрдИрдбреАрдП рд╡рд┐рдВрдбреЛ рдмрд╣реБрдд рдиреАрдЪреЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдвреВрдВрдвреЗрдВ start
, рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рд╕реНрдкреЗрд╕рдмрд╛рд░ рджрдмрд╛рдПрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реБрдВрджрд░ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдХреЛ рди рджреЗрдЦреЗрдВ:
(рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕реНрдерд╛рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рдореБрдЭреЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдпрд╛ рдПрдХ рдмрд╛рд░ рдкреНрд░реЗрд╕ рдХрд░рдирд╛ рдерд╛ред рдареАрдХ рд╣реИ, рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИред - рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ )рдФрд░ Xcode рдпрд╛ AppCode рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЛрдб рдореЗрдВ рдереЛрдбрд╝рд╛ рджреЗрдЦреЗрдВрдЧреЗредрдУрдкрдиMoneyManager.m рдФрд░ рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВbuyObject:
- (BOOL)buyObject:(id<PurchasableItemProtocol>)object { NSUInteger totalMoney = self.money.unsignedIntegerValue; NSUInteger cost = [object cost].unsignedIntegerValue; if (totalMoney < cost) { return NO; } _money = @(totalMoney - cost); return [self saveState]; }
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд╛рдиреЗрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдореЗрдВ _money
рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ NO
рдФрд░ рд▓реЗрдирджреЗрди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рдПрдХ рдЦрд░реАрдж рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ / рд░реЛрдХрдирд╛ рдПрдХ рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдкреИрд╕рд╛ рд╣реИ? (рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕реНрдЯреЛрд░ рдореЗрдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ? - рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред )рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪреЗрдХ ("рдХреВрджреЛ рдУрд╡рд░", рдЕрд╕реЗрдореНрдмрд▓рд░ рд╢рдмреНрджреЛрдВ рдореЗрдВ) рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреА рдХреЛрдИ рднреА рдЪреАрдЬрд╝ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЦрд░реАрджрддреЗ рд╕рдордп рдореВрд▓реНрдп _money
рдХреЛ рдПрдХ рдХрд╛рд░рдХ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛редрдЕрдм рд╣рдореЗрдВ disassembler рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдИрдбреАрдП рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреИрдирд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдмрд╕ рдЗрд╕ рдкреИрдирд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдФрд░ рдлрд┐рд░ Ctrl + F рджрдмрд╛рдПрдВ(рдпрд╛ рдореЗрдиреВ рд╕реЗ: рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ> рддреНрд╡рд░рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ )ред рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирдкреБрдЯ рдмреЙрдХреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд╣рдореЗрдВ buyObject:
рд╣рд╛рдВ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ , рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдИрдбреАрдП рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдЧрд╛, рдЬреЛ рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рдФрд░ рдХреЛрдб рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рднрд▓реЗ рд╣реА рдЖрдк рдХреЛрдбрд╛рдВрддрд░рдХ рд╕реНрдХреВрд▓ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВ , рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ buyObject:
рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ "рджрд╛рдпрд╛рдБ" рддреАрд░ рдареАрдХ рдЙрд╕реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рд╣реИрдХрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд╣рд╛рдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд▓рд╛рд▓ рддреАрд░ "рдмрд╛рдПрдВ" рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдб рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд " return nil
" рдЬреИрд╕рд╛ рд╣реИ редрдореИрдВ рдЖрдкрдХреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд▓реЛрдб рдХрд░реВрдВрдЧрд╛ред рдЖрдЗрдП рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ ("рдХреВрдж") рдХреЛ рджреЗрдЦреЗрдВ, рдКрдкрд░реА рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рджреЛ рддреАрд░ рдЪрд▓рддреЗ рд╣реИрдВ - рд▓рд╛рд▓ рдФрд░ рд╣рд░реЗред рдпрд╣ рд╣реИjnb
, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдиреАрдЪреЗ рдирд╣реАрдВ рддреЛ рдХреВрджреЛ" (рдЬрд╛рдУ рдЕрдЧрд░ "рдХрдо рдирд╣реАрдВ")ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╣рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЛ "рдЬрдВрдк рд╣рдореЗрд╢рд╛" - рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП jmp
редрдирд┐рд░реНрджреЗрд╢ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдСрдкрд░реЗрдВрдб рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ jnb
ред рдЗрд╕реЗ рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЯреЗрдХреНрд╕реНрдЯ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреЗрд╕рдмрд╛рд░ рджрдмрд╛рдПрдВредрдпрд╣рд╛рдБ рдПрдХ рд╣реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд░реИрдЦрд┐рдХ рд░реВрдк рдореЗрдВред рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдирдВрдмрд░ рдвреВрдВрдвреЗрдВ jnb
(рдпрд╣ рд▓рд╛рдЗрди рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рд╣реИ):
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрддрд╛ 0x00018D88 рдирд┐рдХрд▓рд╛ред рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рдкрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрдСрдкрд░реЗрдВрдб рдХреЛрдб " jnb short
" рд╡рд╣ 0x73??
рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдСрдлрд╕реЗрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдСрдкрд░реЗрдВрдб рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ 0xEB??
- рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрдж рдХреЛрдб "jmp short
"(рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП)ред рдореБрдЭреЗ рдХрд╣рд╛рдВ рд╕реЗ рдСрдкрд░реЗрдВрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдП? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯреЗрд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдореИрдиреБрдЕрд▓ рд╕реЗ (рд╡реИрд╕реЗ, рдПрдХ рд░реЛрдорд╛рдВрдЪрдХ рд░реАрдб!)рдбрд╛рдЙрдирд▓реЛрдб (рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ) рд╣реЗрдХреНрд╕ рдлрд╛рдИрдиреНрдб ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ /Applications
рд╕реЗ рдХреЙрдкреА рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред рдЯрд░реНрдорд┐рдирд▓ рд╕реЗред (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЕрднреА рднреА рдмрдВрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ "рдореЗрдореЗ рдХрд▓реЗрдХреНрдЯрд░.рдПрдкреНрдк" рдореЗрдВ рд╣реИрдВ) рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░реЗрдВ: open -a "/Applications/Hex Fiend.app/" "Meme Collector"
рдПрдХ рд╡рд┐рдВрдбреЛ рд╣рдорд╛рд░реЗ рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рд╛рде рдЦреБрд▓рддреА рд╣реИред рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдирд╛?
рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рджреЛрд╕реНрдд: __objc_classname
рдФрд░ рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧред рд╣рдорд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╣реЗрдбрд░ рд╣реИред
рдЕрдм рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ: otool -l "Meme Collector" | grep -a10 "sectname __text"
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, рдпрд╣ otool -l
рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдХреЛрдб рдЕрдиреБрднрд╛рдЧ ("рдЯреЗрдХреНрд╕реНрдЯ" рдЕрдиреБрднрд╛рдЧ) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрдХреАрд░реНрдг рдХрд░рддреЗ рд╣реИрдВ grep
ред рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рд╛: segname __TEXT vmaddr 0x00001000 vmsize 0x0002e000 fileoff 0 filesize 188416 maxprot 0x00000007 initprot 0x00000005 nsects 11 flags 0x0 Section sectname __text segname __TEXT addr 0x00002970 size 0x0001dec3 offset 6512 align 2^4 (16) reloff 0 nreloc 0 flags 0x80000400 reserved1 0 reserved2 0
рдпрд╣рд╛рдВ рд╣рдо рдЕрдиреБрднрд╛рдЧ ( addr
) 0x00002970, рдФрд░ рд╢рд┐рдлреНрдЯ ( offset
) - 6512 (рджрд╢рдорд▓рд╡) рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдкрддрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ ред рдЖрдк рдЖрдИрдбреАрдП рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдкрддрд╛ рдЬрд╣рд╛рдВ рд╕реЗ рдХреЛрдб рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдареАрдХ 0x2970 рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рдКрдкрд░ рддрдХ ("рд░реИрдЦрд┐рдХ" рд░реВрдк рдореЗрдВ) рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ, рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд░реНрде рд╕рдорд╛рди рд╣реИ)редрдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!
рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп: рдЖрдкрдХреЛ jnb
рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ ("рдкрд╛рда" рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рдЧрдпрд╛) рдХреА рднрд░рдкрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдк рдЖрдИрдбреАрдП рдореЗрдВ рдкрд╛рдП рдЧрдП рдкрддреЗ рдкрд░ рдмрд╛рдЗрдЯреНрд╕ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗредрдЗрд╕рд▓рд┐рдП рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдлреЙрд░реНрдореВрд▓рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ:{рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХреА рдирд┐рд░рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐} = ={рдХрдорд╛рдВрдб рдПрдбреНрд░реЗрд╕} - {рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗрдХреНрд╢рди рдХрд╛ рд╕реНрдЯрд╛рд░реНрдЯ рдПрдбреНрд░реЗрд╕} + {рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗрдХреНрд╢рди рдХрд╛ рд╢рд┐рдлреНрдЯ}}рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ:рдХрдорд╛рдВрдб рдПрдбреНрд░реЗрд╕ jnb
: 0x18D88 (рдЖрдИрдбреАрдП рд╕реЗ)рдкрд╛рда рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ = 0x2970 (рдХрд╛ otool
) рдкрд╛рда рдЦрдВрдб рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг= рджрд╢рдорд▓рд╡ 6512 (рдХрд╛ otool
)рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓реЗрдВ, рдореЗрдиреВ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ: рджреЗрдЦреЗрдВ> рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП ... (рджрд╢рдорд▓рд╡ рдФрд░ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)редрдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛:
0x18D88 - 0x2970 + 6512 = 0x17D88рдЙрдиреНрдирдд рдореЛрдб┬лAdvanced Mode┬╗ , 0x1000 (0x18D88 тАУ 0x17D88).
рдпрджрд┐ рдЖрдкрдХреА рдЧрдгрдирд╛ рд╕рд╣реА рдирд┐рдХрд▓реА рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрддрд╛ рд╣реЛрдЧрд╛ jnb
рдЬреЛ рд╣рдордиреЗ рдЖрдИрдбреАрдП рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред рдЕрдм Hex Fiend рдореЗрдВ рдПрдбреНрд░реЗрд╕ рдЗрдирдкреБрдЯ рдлреАрд▓реНрдб рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП ( L (рдпрд╛ Edit> Jump To Offset рдореЗрдиреВ рд╕реЗ ) рджрдмрд╛рдПрдВ ред рдЕрдкрдирд╛ рдкрддрд╛ рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдк рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ 0x
рд╢реБрд░реБрдЖрдд рдореЗрдВ рдордд рднреВрд▓рдирд╛ )редHmm, рджрд╢рдорд▓рд╡ рдореЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдирдВрдмрд░ред рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░реЗрдВ: 0x17D88 = 97672, рдЕрд░реНрдерд╛рдд 97664 рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЖрдкрдХреЛ рджрд╛рдИрдВ рдУрд░ рдПрдХ рдФрд░ 8 рдмрд╛рдЗрдЯреНрд╕ рдЧрд┐рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 8 рдмрд╛рдЗрдЯреНрд╕ = 16 рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЕрдВрдХ = рджреЛ 4-рдмрд╛рдЗрдЯ рд╢рдмреНрджред рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣реЗрдХреНрд╕ рдлрд╛рдИрдиреНрдб рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА "рдкрд╛рда" рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣ рдмрдирд╛рддрд╛ рд╣реИ: рд╣рдо
рдкрд╣рд▓реЗ рджреЛ рд╢рдмреНрджреЛрдВ рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рддреАрд╕рд░реЗ рд╢рдмреНрдж рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ - рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ - рд╣рдорд╛рд░рд╛ рдСрдкрд░реЗрд╢рди рдХреЛрдб 0x7304
ред 0x73
- рдирд┐рд░реНрджреЗрд╢ рдХреЛрдб, рдФрд░0x04
- рдСрдлрд╕реЗрдЯ, рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЖрдЧреЗ "рдХреВрдж" рдЪрд╛рд╣рд┐рдПредрд╕рд╣реА 0x73
рдкрд░ 0xEB
(рдзреАрд░реЗ тАЛтАЛрд╕реЗ: рдмреИрдХрд╕реНрдкреЗрд╕ рдХреЛ рдПрдХ рдмрд╛рд░ рджрдмрд╛рдиреЗ рдкрд░ 1 рдмрд╛рдЗрдЯ рдПрдХ рдмрд╛рд░ = рджреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ)ред рд╕рд╣реЗрдЬреЗрдВ ( тМШS ) рдФрд░ рдлрд╝рд╛рдЗрд▓ рдмрдВрдж рдХрд░реЗрдВред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЦреЛрд▓реЗрдВ, рдореЗрдореЛрд░реА рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ (рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реЗ, рдФрд░ рдЖрдИрдбреАрдИ рд╕реЗ рдирд╣реАрдВ, рддрд╛рдХрд┐ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛рдП)ред рдЬрдм рддрдХ рдЖрдк рдкреИрд╕реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рддрдм рддрдХ рдореЗрдореЗ рдЦрд░реАрджреЗрдВред рдЬрдм рдЖрдкрдиреЗ рдРрд╕рд╛ рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдЖрдкрдХреЗ "рдкреИрд╕реЗ" рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ?рд╣рд╛рдВ, рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкреИрд╕рд╛ рд╣реИ?" рдЗрд╕ рд╢рд░реНрдд рдХрд╛ рдПрдХ рдЪреЗрдХ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреИрд╕реЗ рдХреЗ рдмрд┐рдирд╛ рднреА рд▓реЗрдирджреЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмреЛрдирд╕: рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдореВрд▓реНрдп_money
"рд▓реВрдкреНрдб", рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг, рдирдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ 10 32 (рд▓рдЧрднрдЧ 4 рдмрд┐рд▓рд┐рдпрди) рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ редрд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕рдВрд░рдХреНрд╖рдг
рд╣рдо рдЕрдкрдиреА рд░рдХреНрд╖рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдпрд╛рдж рд░рдЦреЗрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛: "рдХреБрдЫ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред" рдпрд╣ рдХрдерди рднреА рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддреЗ рдпрджрд┐ рд╡рд╣ рдЧрдВрднреАрд░ рд╣реИред рдЖрдкрдХреА рдПрдХрдорд╛рддреНрд░ рдЖрд╢рд╛ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ рдЗрддрдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдВредрдПрдХ рддрд░реАрдХрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред рдЖрдИрдбреАрдИ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "рдореЗрдо рдХрд▓реЗрдХреНрдЯрд░-рдкреНрд░реАрдлрд┐рдХреНрд╕.рдкрдЪ" рдвреВрдВрдвреЗрдВред рдЗрд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ: #define MoneyManager DS_UIColor_Theme
рдпрд╣ рдХреЛрдб " MoneyManager
" рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдРрд╕реЗ рдирд╛рдо рд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛ рдЬреЛ рдкрдЯрд╛рдЦреЗ рдХреЗ рд▓рд┐рдП рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ: " DS_UIColor_Theme
"редрдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдХреБрдЫ рднреА рдЯреВрдЯ рди рдЬрд╛рдПред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЪрдпрдирд┐рдд рдирдпрд╛ рдирд╛рдо рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЕрдХрдердиреАрдп рдЪреАрдЬреЗрдВ рд╣реЛрдиреЗ рд▓рдЧреЗрдВрдЧреАредрдЖрдорддреМрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкрдардиреАрдп рдирд╛рдореЛрдВ рдореЗрдВ рдкрддреЛрдВ рдХреА рдореИрдкрд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдм, рдХреЛрдб рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдЪрд░рд┐рддреНрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред рдпрд╣ C рдФрд░ C ++ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЫреБрдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕рдВрджреЗрд╢ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ objc_msgSend()
ред рдлрд┐рд░ рд╕реЗ рдордиреАрдореИрдиреНрдЬрд░рдЦреЛрд▓реЗрдВ рдФрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд C рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ: BOOL aSecretFunction(void) { return YES; }
рдлрд┐рд░ рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ: nm "Meme Collector" | grep aSecretFunction
рдЖрджреЗрд╢ nm
рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ grep
рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ: 00018b8f t _aSecretFunction
IOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╡рд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рджреЛ рд╡рд┐рдХрд▓реНрдк рдвреВрдВрдврдирд╛ рд╣реИ: рддреИрдирд╛рддреА рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╕реНрдЯреНрд░рд┐рдк рд▓рд┐рдВрдХреНрдб рдЙрддреНрдкрд╛рдж, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд╛рдВ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
рдлрд┐рд░ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ "рдХреНрд▓реАрди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (Xcode: рдЙрддреНрдкрд╛рдж) рдХреНрд▓реАрди рдпрд╛ рдРрдкрдХреЛрдб рдореЗрдВ: рд░рди> рдХреНрд▓реАрди ) рдФрд░ recompileред рдлрд┐рд░ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЙрд╕реА рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдПрдВ: nm "Meme Collector" | grep aSecretFunction
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!
рд╣рдордиреЗ рдЙрд╕ рдЪрд░рд┐рддреНрд░ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд┐рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ aSecretFunction()
ред рдЕрдм, рдХреНрд░реИрдХрд░ рдХреЛ рдХреЛрдб рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛редрдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:- рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдо рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди;
- рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░реЗрдВ
- рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛;
- рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ
- рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реЗрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдЗрди рдмрд╛рддреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрд░рдХреНрд╖рд╛ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рд╕рдордп), рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕реНрддрд░ рдФрд░ рд╣реИрдХрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрддреБрд▓рди рд╣реИредIOS рдРрдк рд╕реБрд░рдХреНрд╖рд╛ рдПрдХ рдЧрдВрднреАрд░ рд╡рд┐рд╖рдп рд╣реИред рдЖрдк рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрднреА рддрдХ рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╕рддрд╣ рдХреЛ рдереЛрдбрд╝рд╛ рдЦрд░реЛрдВрдЪ рджрд┐рдпрд╛ рд╣реИред рдбреАрдмрдЧрд░ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЯреВрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд╣реБрдд рдЧрд╣рд░реА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЯреЗрд╕реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЬреЗрд▓рдмреНрд░реЗрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдореГрджреНрдз рднреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛редрдпрджрд┐ рдЖрдкрдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реИрдХрд┐рдВрдЧ рдФрд░ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ(рд▓реЗрдЦрдХ рдЬреЛрдирд╛рдерди рдЬрд╝рдбрдЬрд╝рд╛рд░реНрд╕реНрдХреА)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ (рдЖрдкрдХреЛ рдРрдкреНрдкрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рддрдВрддреНрд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЧреВрдЧрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рд▓реЗрдЦрдХ рдЖрдИрдУрдПрд╕ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдЙрдирдХреА рдкрд╕рдВрджреАрджрд╛ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИредрдПрдХ рдЬреЛрдбрд╝реА рдФрд░ рдХрд┐рддрд╛рдмреЗрдВ:рд╣реИрдХрд┐рдВрдЧ: рдж рдЖрд░реНрдЯ рдСрдлрд╝ рдПрдХреНрд╕рдкреНрд▓реБрдпреЗрд╢рди, рдЬреЙрди рдПрд░рд┐рдХрд╕рдирдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдФрд░ рдЖрдИрдУрдПрд╕ рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг : рдЬреЛрдирд╛рдерди рд▓реЗрд╡рд┐рди рджреНрд╡рд╛рд░рд╛ рдПрдкреНрдкрд▓ рдХреЗ рдХреЛрд░ рдХреЛрдордВрдЪ:
http://www.woodmann.comhttp://www.reddit.com/r/ReverseEngineeringрдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдкрд░ рдЕрдиреБрдЪреНрдЫреЗрдж:http://blog.timac.org/?p=761рд▓реЗрдЦрдХ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ x128.ru рдореЗрд▓ рджреЗрд╡ рдХреЛ @
рд▓рд┐рдЦреЗрдВ ред