рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдмреИрдардХ 0x0A DC7831 рдХреЛ рднрд╛рдЧ рдХреЛ рд░реВрдк рдорд╛ DEF CON рдирд┐рдЬрдиреА рдиреЛрднрдЧреЛрд░реЛрдб рдлреЗрдмреНрд░реБрдЕрд░реА 16 рдорд╛, рд╣рд╛рдореАрд▓реЗ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдЗрдореБрд▓реЗрд╢рдирдХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ рд░ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рд╡рд┐рдХрд╛рд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдПрдЙрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНтАНрдпреМрдВ - рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЗрдореБрд▓реЗрдЯрд░ рдирдХреНрдХрд▓.

рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдпрдиреНрддреНрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ, рдбрд┐рдмрдЧрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗ рд░ рдлрд░реНрдорд╡реЗрдпрд░рдХреЛ рд╕рд╛рдиреЛ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреМрдВред

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рдПрдХ рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдорд╛ рдзреЗрд░реИ рдЯрд╛рдврд╛

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

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

рдирддрд┐рдЬрд╛ рдХрдореНрдкреНрдпреБрдЯрд░ рдкреНрд░рдгрд╛рд▓реА рдЗрдореБрд▓реЗрдЯрд░ рдерд┐рдпреЛ рдирдХреНрдХрд▓.

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
рдХрд┐рди рдХреЛрдкреАрдХреНрдпрд╛рдЯ?

рд╢рдмреНрджрд╣рд░реВрдорд╛ рдирд╛рдЯрдХ рдЫред

  1. copycat (рдЕрдВрдЧреНрд░реЗрдЬреА, рд╕рдВрдЬреНрдЮрд╛ [╦Иk╔Тp╔кk├жt]) - рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ, рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ
  2. рдмрд┐рд░рд╛рд▓реЛ (рдЕрдВрдЧреНрд░реЗрдЬреА, рд╕рдВрдЬреНрдЮрд╛ [╦Иk├жt]) - рдмрд┐рд░рд╛рд▓реЛ, рдмрд┐рд░рд╛рд▓реЛ - рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛ рдордзреНрдпреЗ рдПрдХ рдХреЛ рдордирдкрд░реНрдиреЗ рдЬрдирд╛рд╡рд░
  3. рдЕрдХреНрд╖рд░ "K" рдХреЛрдЯрд▓рд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдмрд╛рдЯ рдЖрдПрдХреЛ рд╣реЛ

рдирдХреНрдХрд▓

рдЗрдореБрд▓реЗрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рдзреЗрд░реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдпрд╣рд░реВ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

  • рджреНрд░реБрдд рд░реВрдкрдорд╛ рдирдпрд╛рдБ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ, рдореЛрдбреНрдпреБрд▓рд╣рд░реВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛;
  • рд╡рд┐рднрд┐рдиреНрди рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдмрд╛рдЯ рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрд╣рд░реВ рднреЗрд▓рд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛;
  • рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрдХреЛ рдореЗрдореЛрд░реАрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдмрд╛рдЗрдирд░реА рдбрд╛рдЯрд╛ (рдлрд░реНрдорд╡реЗрдпрд░) рд▓реЛрдб рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛;
  • рд╕реНрдиреНрдпрд╛рдкрд╢рдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ (рдкреНрд░рдгрд╛рд▓реА рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╕реНрдиреНрдпрд╛рдкрд╕рдЯрд╣рд░реВ);
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдбрд┐рдмрдЧрд░ рдорд╛рд░реНрдлрдд рдЗрдореБрд▓реЗрдЯрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛;
  • рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛ред

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдХреЛрдЯрд▓рд┐рдирд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдЫрдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдмрд╕ рд╕рдВрд░рдЪрдирд╛ (рдпреЛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдбрд╛рдЯрд╛ рдмрд╕рд╣рд░реВ рдорд╛рд░реНрдлрдд рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрджрд╛), рдпрдиреНрддреНрд░ рд╡рд┐рд╡рд░рдг рдврд╛рдБрдЪрд╛рдХреЛ рд░реВрдкрдорд╛ JSON, рд░ рдбрд┐рдмрдЧрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░реВрдкрдорд╛ GDB RSPред

рджреБрдИ рд╡рд░реНрд╖рднрдиреНрджрд╛ рдХрдо рд╕рдордпрджреЗрдЦрд┐ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рд░ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рдпрд╕ рд╕рдордпрдорд╛, MIPS, x86, V850ES, ARM, рд░ PowerPC рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдвреНрджреИ рдЫ рд░ рдпрд╕рд▓рд╛рдИ рд╡реНрдпрд╛рдкрдХ рдЬрдирддрд╛рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред рд╣рд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрдЫрд┐ рдЧрд░реНрдиреЗрдЫреМрдВ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕рдмреИрднрдиреНрджрд╛ рдЕрдзреАрд░рдХрд╛ рд▓рд╛рдЧрд┐, рдЗрдореБрд▓реЗрдЯрд░рдХреЛ рдкреНрд░реЛрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд▓рд┐рдЩреНрдХ.

рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рд░рд╛рдЗрдиреЛ

рдпрд╛рдж рдЧрд░реМрдВ рдХрд┐ рдпрд╕рдЕрдШрд┐ SMARTRHINO-2018 рд╕рдореНрдореЗрд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рд░рд┐рднрд░реНрд╕ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд┐рдЩ рд╕реАрдкрд╣рд░реВ рд╕рд┐рдХрд╛рдЙрди рдкрд░реАрдХреНрд╖рдг рдпрдиреНрддреНрд░ тАЬрдЧреИрдВрдбрд╛тАЭ рдмрдирд╛рдЗрдПрдХреЛ рдерд┐рдпреЛред рд╕реНрдерд┐рд░ рдлрд░реНрдорд╡реЗрдпрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рдпреЛ рд▓реЗрдЦ.

рдЕрдм "рд╕реНрдкрд┐рдХрд░рд╣рд░реВ" рдердкреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ рд░ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрдЫреМрдВ:
рез) рдЬрд╛рднрд╛ рез.рео
2) рдкрд╛рдЗрдерди рд░ рдореЛрдбреНрдпреБрд▓ рдЬреАрдк рдЗрдореБрд▓реЗрдЯрд░ рднрд┐рддреНрд░ рдкрд╛рдЗрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиред рддрдкрд╛рдЗрдБ Windows рдХреЛ рд▓рд╛рдЧреА WHL рдореЛрдбреНрдпреБрд▓ Jep рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН.

рд╡рд┐рдиреНрдбреЛрдЬ рдХреЛ рд▓рд╛рдЧреА:
1) com0com
2) рдкреБрдЯреА

рд▓рд┐рдирдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐:
1) socat

рддрдкрд╛рдИрдВрд▓реЗ GDB рдЧреНрд░рд╛рд╣рдХрдХреЛ рд░реВрдкрдорд╛ Eclipse, IDA Pro рд╡рд╛ radare2 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ?

рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди, рдпреЛ рдПрдХ рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдг "рдПрдХрддреНрд░" рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬреБрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгрдХреЛ рдПрдирд╛рд▓реЙрдЧ рд╣реЛред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдг ("рдЧреИрдВрдбрд╛") рдмреНрд▓рдХ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЗрдореБрд▓реЗрдЯрд░рдХреЛ рдореЛрдбреНрдпреБрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рдЫ рд░ рдЕрдиреНрддрд┐рдо рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрд▓рд╛рдИ JSON рдлрд╛рдЗрд▓рдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

JSON 105 рд▓рд╛рдЗрдирд╣рд░реВ

{
  "top": true,

  // Plugin name should be the same as file name (or full path from library start)
  "plugin": "rhino",

  // Directory where plugin places
  "library": "user",

  // Plugin parameters (constructor parameters if jar-plugin version)
  "params": [
    { "name": "tty_dbg", "type": "String"},
    { "name": "tty_bt", "type": "String"},
    { "name": "firmware", "type": "String", "default": "NUL"}
  ],

  // Plugin outer ports
  "ports": [  ],

  // Plugin internal buses
  "buses": [
    { "name": "mem", "size": "BUS30" },
    { "name": "nand", "size": "4" },
    { "name": "gpio", "size": "BUS32" }
  ],

  // Plugin internal components
  "modules": [
    {
      "name": "u1_stm32",
      "plugin": "STM32F042",
      "library": "mcu",
      "params": {
        "firmware:String": "params.firmware"
      }
    },
    {
      "name": "usart_debug",
      "plugin": "UartSerialTerminal",
      "library": "terminals",
      "params": {
        "tty": "params.tty_dbg"
      }
    },
    {
      "name": "term_bt",
      "plugin": "UartSerialTerminal",
      "library": "terminals",
      "params": {
        "tty": "params.tty_bt"
      }
    },
    {
      "name": "bluetooth",
      "plugin": "BT",
      "library": "mcu"
    },

    { "name": "led_0",  "plugin": "LED", "library": "mcu" },
    { "name": "led_1",  "plugin": "LED", "library": "mcu" },
    { "name": "led_2",  "plugin": "LED", "library": "mcu" },
    { "name": "led_3",  "plugin": "LED", "library": "mcu" },
    { "name": "led_4",  "plugin": "LED", "library": "mcu" },
    { "name": "led_5",  "plugin": "LED", "library": "mcu" },
    { "name": "led_6",  "plugin": "LED", "library": "mcu" },
    { "name": "led_7",  "plugin": "LED", "library": "mcu" },
    { "name": "led_8",  "plugin": "LED", "library": "mcu" },
    { "name": "led_9",  "plugin": "LED", "library": "mcu" },
    { "name": "led_10", "plugin": "LED", "library": "mcu" },
    { "name": "led_11", "plugin": "LED", "library": "mcu" },
    { "name": "led_12", "plugin": "LED", "library": "mcu" },
    { "name": "led_13", "plugin": "LED", "library": "mcu" },
    { "name": "led_14", "plugin": "LED", "library": "mcu" },
    { "name": "led_15", "plugin": "LED", "library": "mcu" }
  ],

  // Plugin connection between components
  "connections": [
    [ "u1_stm32.ports.usart1_m", "usart_debug.ports.term_s"],
    [ "u1_stm32.ports.usart1_s", "usart_debug.ports.term_m"],

    [ "u1_stm32.ports.usart2_m", "bluetooth.ports.usart_m"],
    [ "u1_stm32.ports.usart2_s", "bluetooth.ports.usart_s"],

    [ "bluetooth.ports.bt_s", "term_bt.ports.term_m"],
    [ "bluetooth.ports.bt_m", "term_bt.ports.term_s"],

    [ "led_0.ports.pin",  "u1_stm32.buses.pin_output_a", "0x00"],
    [ "led_1.ports.pin",  "u1_stm32.buses.pin_output_a", "0x01"],
    [ "led_2.ports.pin",  "u1_stm32.buses.pin_output_a", "0x02"],
    [ "led_3.ports.pin",  "u1_stm32.buses.pin_output_a", "0x03"],
    [ "led_4.ports.pin",  "u1_stm32.buses.pin_output_a", "0x04"],
    [ "led_5.ports.pin",  "u1_stm32.buses.pin_output_a", "0x05"],
    [ "led_6.ports.pin",  "u1_stm32.buses.pin_output_a", "0x06"],
    [ "led_7.ports.pin",  "u1_stm32.buses.pin_output_a", "0x07"],
    [ "led_8.ports.pin",  "u1_stm32.buses.pin_output_a", "0x08"],
    [ "led_9.ports.pin",  "u1_stm32.buses.pin_output_a", "0x09"],
    [ "led_10.ports.pin", "u1_stm32.buses.pin_output_a", "0x0A"],
    [ "led_11.ports.pin", "u1_stm32.buses.pin_output_a", "0x0B"],
    [ "led_12.ports.pin", "u1_stm32.buses.pin_output_a", "0x0C"],
    [ "led_13.ports.pin", "u1_stm32.buses.pin_output_a", "0x0D"],
    [ "led_14.ports.pin", "u1_stm32.buses.pin_output_a", "0x0E"],
    [ "led_15.ports.pin", "u1_stm32.buses.pin_output_a", "0x0F"]
  ]
}

рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдлрд░реНрдорд╡реЗрдпрд░ рдЦрдгреНрдб рдкреНрдпрд╛рд░рд╛ рдлрд░реНрдорд╡реЗрдпрд░рдХреЛ рд░реВрдкрдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрдорд╛ рд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рдлрд╛рдЗрд▓рдХреЛ рдирд╛рдо рд╣реЛред

рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдг рд░ рдореБрдЦреНрдп рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЧ рдпрд╕рдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЗрдореБрд▓реЗрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдгрдорд╛ рдореБрдЦреНрдп OS рдХреЛ COM рдкреЛрд░реНрдЯрд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ (рдмреНрд▓реБрдЯреБрде рдореЛрдбреНрдпреБрд▓рдХреЛ рд▓рд╛рдЧрд┐ UART рд░ UART рдбрд┐рдмрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН)ред рдпреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЛрд░реНрдЯрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН рдЬрд╕рдорд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЬрдбрд╛рди рднрдПрдХрд╛ рдЫрдиреН рд╡рд╛ рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВ (рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ com0com/socat).

рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рджреБрдИ рдореБрдЦреНрдп рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:

  • GDB RSP рдкреНрд░реЛрдЯреЛрдХрд▓ (рддрджрдиреБрд╕рд╛рд░, рдпрд╕ рдкреНрд░реЛрдЯреЛрдХрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдгрд╣рд░реВ Eclipse / IDA / radare2 рд╣реБрдиреН);
  • рдЖрдиреНрддрд░рд┐рдХ рдЗрдореБрд▓реЗрдЯрд░ рдЖрджреЗрд╢ рд░реЗрдЦрд╛ (Argparse рд╡рд╛ Python)ред

рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВ

рдЯрд░реНрдорд┐рдирд▓ рдорд╛рд░реНрдлрдд рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрдХреЛ UART рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдмрджреНрдз рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВрдХреЛ рдЬреЛрдбреА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдПрдЙрдЯрд╛ рдкреЛрд░реНрдЯ рдЗрдореБрд▓реЗрдЯрд░рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рджреЛрд╕реНрд░реЛ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо (PuTTY рд╡рд╛ рд╕реНрдХреНрд░рд┐рди) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

com0com рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВ com0com рдХрд┐рдЯрдмрд╛рдЯ рд╕реЗрдЯрдЕрдк рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ (рдХрдиреНрд╕реЛрд▓ рд╕рдВрд╕реНрдХрд░рдг - C: рдХрд╛рд░реНрдпрдХреНрд░рдо рдлрд╛рдЗрд▓рд╣рд░реВ (x86) com0comsetup╤Б.exe, рд╡рд╛ GUI рд╕рдВрд╕реНрдХрд░рдг - C: рдХрд╛рд░реНрдпрдХреНрд░рдо рдлрд╛рдЗрд▓рд╣рд░реВ (x86) com0comsetupg.exe):

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдмрдХреНрд╕рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмрдлрд░ рдУрднрд░рд░рди рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рдмреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рднрд░реНрдЪреБрдЕрд▓ рдкреЛрд░реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреНрдпрдерд╛ рдЗрдореБрд▓реЗрдЯрд░рд▓реЗ COM рдкреЛрд░реНрдЯрдмрд╛рдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗрдЫред

Socat рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

UNIX рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛, рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВ socat рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЗрдореБрд▓реЗрдЯрд░рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреНрдЫрдиреН; рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдЗрдореБрд▓реЗрдЯрд░ рд╕реБрд░реБ рдЧрд░реНрджрд╛ рдкреЛрд░реНрдЯ рдирд╛рдордорд╛ рдЙрдкрд╕рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред socat:.

рдЖрдиреНрддрд░рд┐рдХ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЗрдиреНрдЯрд░рдлреЗрд╕ (Argparse рд╡рд╛ Python)

рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдХрдиреНрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдЗрдореБрд▓реЗрдЯрд░рд▓реЗ рдпрд╕рдХреЛ рд╡рд╕реНрддреБ рд░ рдЪрд░рд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рджреБрдИрд╡рдЯрд╛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ: Argparse рд░ Pythonред

Argparse Kopycat рдорд╛ рдирд┐рд░реНрдорд┐рдд CLI рд╣реЛ рд░ рд╕рдзреИрдВ рд╕рдмреИрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз рдЫред

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ CLI рдкрд╛рдЗрдерди рдЕрдиреБрд╡рд╛рджрдХ рд╣реЛред рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ Jep рдкрд╛рдЗрдерди рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдкрд╛рдЗрдердирд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рдЗрдореБрд▓реЗрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдкрд╛рдЗрдерди рдЕрдиреБрд╡рд╛рджрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ)ред

рдкрд╛рдЗрдерди рдореЛрдбреНрдпреБрд▓ Jep рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕ рдЬреЗрдк рдЕрдиреНрддрд░реНрдЧрдд рдкрд╛рдЗрдк рдорд╛рд░реНрдлрдд рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

pip install jep

Windows рдорд╛ Jep рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ Windows SDK рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд Microsoft Visual Studio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд▓рд┐ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдПрдХрд╛ рдЫреМрдВ рд░ WHL рдмрдирд╛рдЙрдБрдЫ рд╡рд┐рдиреНрдбреЛрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдердирдХреЛ рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ JEP, рддреНрдпрд╕реИрд▓реЗ рдореЛрдбреНрдпреБрд▓ рдлрд╛рдЗрд▓рдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

pip install jep-3.8.2-cp27-cp27m-win_amd64.whl

Jep рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдЖрджреЗрд╢ рд▓рд╛рдЗрдирдорд╛ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

python -c "import jep"

рдирд┐рдореНрди рд╕рдиреНрджреЗрд╢ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреБрдкрд░реНрдЫ:

ImportError: Jep is not supported in standalone Python, it must be embedded in Java.

рддрдкрд╛рдИрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдЗрдореБрд▓реЗрдЯрд░ рдмреНрдпрд╛рдЪ рдлрд╛рдЗрд▓рдорд╛ (copycat.bat - рд╡рд┐рдиреНрдбреЛрдЬ рдХреЛ рд▓рд╛рдЧреА, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреНрдпрд╛рдЯ - рд▓рд┐рдирдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐) рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ DEFAULT_JVM_OPTS рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдердкреНрдиреБрд╣реЛрд╕реН Djava.library.path - рдпрд╕рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд Jep рдореЛрдбреНрдпреБрд▓рдХреЛ рдорд╛рд░реНрдЧ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБрдкрд░реНрдЫред

рд╡рд┐рдиреНрдбреЛрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдирддрд┐рдЬрд╛ рдпреЛ рдЬрд╕реНрддреИ рд▓рд╛рдЗрди рд╣реБрдиреБрдкрд░реНрдЫ:

set DEFAULT_JVM_OPTS="-XX:MaxMetaspaceSize=256m" "-XX:+UseParallelGC" "-XX:SurvivorRatio=6" "-XX:-UseGCOverheadLimit" "-Djava.library.path=C:/Python27/Lib/site-packages/jep"

Kopycat рд╕реБрд░реБ рдЧрд░реНрджреИ

рдЗрдореБрд▓реЗрдЯрд░ рдПрдХ рдХрдиреНрд╕реЛрд▓ JVM рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛред рдкреНрд░рдХреНрд╖реЗрдкрдг рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ (sh/cmd) рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫред

рд╡рд┐рдиреНрдбреЛрдЬ рдЕрдиреНрддрд░реНрдЧрдд рдЪрд▓рд╛рдЙрди рдЖрджреЗрд╢:

binkopycat -g 23946 -n rhino -l user -y library -p firmware=firmwarerhino_pass.bin,tty_dbg=COM26,tty_bt=COM28

socat рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдирдХреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЪрд▓рд╛рдЙрди рдЖрджреЗрд╢:

./bin/kopycat -g 23946 -n rhino -l user -y library -p firmware=./firmware/rhino_pass.bin, tty_dbg=socat:./COM26,tty_bt=socat:./COM28

  • -g 23646 тАФ TCP рдкреЛрд░реНрдЯ рдЬреБрди GDB рд╕рд░реНрднрд░рдорд╛ рдкрд╣реБрдБрдЪрдХреЛ рд▓рд╛рдЧрд┐ рдЦреБрд▓рд╛ рд╣реБрдиреЗрдЫ;
  • -n rhino - рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдореЛрдбреНрдпреБрд▓рдХреЛ рдирд╛рдо (рдПрдХрддреНрд░рд┐рдд рдЙрдкрдХрд░рдг);
  • -l user тАФ рдореБрдЦреНрдп рдореЛрдбреНрдпреБрд▓ рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдирд╛рдо;
  • -y library - рдЙрдкрдХрд░рдгрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рд░реНрдЧ;
  • firmwarerhino_pass.bin - рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╛рдЗрд▓рдорд╛ рдорд╛рд░реНрдЧ;
  • COM26 рд░ COM28 рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВ рд╣реБрдиреНред

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдПрдХ рдкреНрд░рдореНрдкреНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реБрдиреЗрдЫ Python > (рд╡рд╛ Argparse >):

18:07:59 INFO [eFactoryBuilder.create ]: Module top successfully created as top
18:07:59 INFO [ Module.initializeAndRes]: Setup core to top.u1_stm32.cortexm0.arm for top
18:07:59 INFO [ Module.initializeAndRes]: Setup debugger to top.u1_stm32.dbg for top
18:07:59 WARN [ Module.initializeAndRes]: Tracer wasn't found in top...
18:07:59 INFO [ Module.initializeAndRes]: Initializing ports and buses...
18:07:59 WARN [ Module.initializePortsA]: ATTENTION: Some ports has warning use printModulesPortsWarnings to see it...
18:07:59 FINE [ ARMv6CPU.reset ]: Set entry point address to 08006A75
18:07:59 INFO [ Module.initializeAndRes]: Module top is successfully initialized and reset as a top cell!
18:07:59 INFO [ Kopycat.open ]: Starting virtualization of board top[rhino] with arm[ARMv6Core]
18:07:59 INFO [ GDBServer.debuggerModule ]: Set new debugger module top.u1_stm32.dbg for GDB_SERVER(port=23946,alive=true)
Python >

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

рдкрд░реАрдХреНрд╖рдгрд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрди, рд╣рд╛рдореА IDA рдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЗрдиреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред ELF рдлрд╛рдЗрд▓ (рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рддреНрдпрд╣рд╛рдБ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ)ред

рддрдкрд╛рдИрдВ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдмрд┐рдирд╛ рдореБрдЦреНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

IDA Pro рдорд╛ Kopycat рд╕реБрд░реБ рдЧрд░реЗрдкрдЫрд┐, рдбрд┐рдмрдЧрд░ рдореЗрдиреБрдорд╛ рд╡рд╕реНрддреБрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН "рдбрд┐рдмрдЧрд░ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН..."рд░ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН"рд░рд┐рдореЛрдЯ GDB рдбрд┐рдмрдЧрд░"ред рдЕрд░реНрдХреЛ, рдЬрдбрд╛рди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдореЗрдиреБ рдбрд┐рдмрдЧрд░ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ...

рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

  • рдЖрд╡реЗрджрди - рдХреБрдиреИ рдкрдирд┐ рдореВрд▓реНрдп
  • рд╣реЛрд╕реНрдЯрдирд╛рдо: 127.0.0.1 (рд╡рд╛ рд░рд┐рдореЛрдЯ рдореЗрд╕рд┐рдирдХреЛ IP рдареЗрдЧрд╛рдирд╛ рдЬрд╣рд╛рдБ Kopycat рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ)
  • рдкреЛрд░реНрдЯ: 23946

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЕрдм рдбрд┐рдмрдЧрд┐рдЩ рдмрдЯрди рдЙрдкрд▓рдмреНрдз рд╣реБрдиреНрдЫ (F9 рдХреБрдЮреНрдЬреА):

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдбрд┐рдмрдЧрд░ рдореЛрдбреНрдпреБрд▓рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдпрд╕рд▓рд╛рдИ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред IDA рдбрд┐рдмрдЧрд┐рдЩ рдореЛрдбрдорд╛ рдЬрд╛рдиреНрдЫ, рдердк рд╕рдЮреНрдЭреНрдпрд╛рд▓рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреНрдЫрдиреН: рджрд░реНрддрд╛рд╣рд░реВ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА, рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдмрд╛рд░реЗрдорд╛ред

рдЕрдм рд╣рд╛рдореА рдбрд┐рдмрдЧрд░рдХрд╛ рд╕рдмреИ рдорд╛рдирдХ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:

  • рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдорд╛ рдХрджрдо ╨╕ рд╕реНрдЯреЗрдк рдУрднрд░ - рдХреНрд░рдорд╢рдГ F7 рд░ F8 рдХреБрдЮреНрдЬреАрд╣рд░реВ;
  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд░реБ рд░ рдкрдЬ рдЧрд░реНрджреИ;
  • рджреБрдмреИ рдХреЛрдб рд░ рдбрд╛рдЯрд╛ (F2 рдХреБрдЮреНрдЬреА) рдХреЛ рд▓рд╛рдЧрд┐ рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИред

рдбрд┐рдмрдЧрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рдЪрд▓рд╛рдЙрдиреБ рд╣реЛрдЗрдиред рд╣рд╛рд▓рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдерд┐рддрд┐ рдареЗрдЧрд╛рдирд╛ рд╣реБрдиреБрдкрд░реНрдЫ 0x08006A74 - рдХрд╛рд░реНрдпрдХреЛ рд╕реБрд░реБрд╡рд╛рдд рд░рд┐рд╕реЗрдЯ_рд╣реНрдпрд╛рдиреНрдбрд▓рд░ред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реВрдЪреА рддрд▓ рд╕реНрдХреНрд░реЛрд▓ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдореБрдЦреНрдпред рддрдкрд╛рдЗрдБ рдпреЛ рд░реЗрдЦрд╛рдорд╛ рдХрд░реНрд╕рд░ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдареЗрдЧрд╛рдирд╛ 0x08006ABE) рд░ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд░реНрд╕рд░ рд╕рдореНрдо рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН (рдХреБрдЮреНрдЬреА F4)ред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЕрд░реНрдХреЛ, рддрдкрд╛рдЗрдБ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди F7 рдерд┐рдЪреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдореБрдЦреНрдп.

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН (F9 рдХреБрдЮреНрдЬреА), рддреНрдпрд╕рдкрдЫрд┐ "рдХреГрдкрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рд╡рд┐рдиреНрдбреЛ рдПрдХрд▓ рдмрдЯрдирдХреЛ рд╕рд╛рде рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫ рдирд┐рд▓рдореНрдмрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЬрдм рддрдкрд╛рдЗрдБ рдерд┐рдЪреНрдиреБрд╣реЛрд╕реН рдирд┐рд▓рдореНрдмрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рд▓рдореНрдмрди рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдХреЛрдбрдХреЛ рдЙрд╣реА рдареЗрдЧрд╛рдирд╛рдмрд╛рдЯ рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╣рд╛рдБ рдпреЛ рдЕрд╡рд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рднрд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рдЯрд░реНрдорд┐рдирд▓рд╣рд░реВрдорд╛ рдирд┐рдореНрди рд░реЗрдЦрд╛рд╣рд░реВ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

"рд╕реНрдЯреЗрдЯ рдмрд╛рдЗрдкрд╛рд╕" рд▓рд╛рдЗрдирдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдмреНрд▓реБрдЯреБрде рдореЛрдбреНрдпреБрд▓рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ COM рдкреЛрд░реНрдЯрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдореЛрдбрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реЗрдХреЛ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫред

рдЕрдм рдмреНрд▓реБрдЯреБрде рдЯрд░реНрдорд┐рдирд▓рдорд╛ (рддрд╕реНрд╡рд┐рд░рдорд╛ COM29) рддрдкрд╛рдЗрдБ рд░рд╛рдЗрдиреЛ рдкреНрд░реЛрдЯреЛрдХрд▓ рдЕрдиреБрд╕рд╛рд░ рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "MEOW" рдЖрджреЗрд╢рд▓реЗ "mur-mur" рд▓рд╛рдИ рдмреНрд▓реБрдЯреБрде рдЯрд░реНрдорд┐рдирд▓рдорд╛ рдлрд░реНрдХрд╛рдЙрдиреЗрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдорд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдирдХреНрдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдПрдХ рдЗрдореБрд▓реЗрдЯрд░ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛, рддрдкрд╛рдЗрдБ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдпрдиреНрддреНрд░рдХреЛ рд╡рд┐рд╡рд░рдг/рдЗрдореБрд▓реЗрд╢рди рд╕реНрддрд░ рдЫрдиреМрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмреНрд▓реБрдЯреБрде рдореЛрдбреНрдпреБрд▓ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • рдпрдиреНрддреНрд░ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдЕрдиреБрдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ;
  • AT рдЖрджреЗрд╢рд╣рд░реВ рдЕрдиреБрдХрд░рдг рдЧрд░рд┐рдиреНрдЫ, рд░ рдбрд╛рдЯрд╛ рд╕реНрдЯреНрд░рд┐рдо рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реАрдХреЛ COM рдкреЛрд░реНрдЯрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ;
  • рднрд░реНрдЪреБрдЕрд▓ рдЙрдкрдХрд░рдгрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпрдиреНрддреНрд░рдорд╛ рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ;
  • рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯрдмрдХреЛ рд░реВрдкрдорд╛ рдЬреБрди рд╕рдзреИрдВ "рдареАрдХ" рдлрд░реНрдХрд╛рдЙрдБрдЫред

рдЗрдореБрд▓реЗрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рджреЛрд╕реНрд░реЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ - рднрд░реНрдЪреБрдЕрд▓ рдмреНрд▓реБрдЯреБрде рдореЛрдбреНрдпреБрд▓рд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЧрд░реНрджрдЫ, рдЬрд╕ рдкрдЫрд┐ рдпрд╕рд▓реЗ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реАрдХреЛ COM рдкреЛрд░реНрдЯрдмрд╛рдЯ рдЗрдореНрдпреБрд▓реЗрдЯрд░рдХреЛ UART рдкреЛрд░реНрдЯрдорд╛ "рдкреНрд░реЛрдХреНрд╕реА" рдбрд╛рдЯрд╛рдХреЛ рдореЛрдбрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрджрдЫред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдкрд░рд┐рдзрд┐рдХреЛ рдХреЗрд╣реА рдЕрдВрд╢ рд▓рд╛рдЧреВ рдирднрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдХреЛрдбрдХреЛ рд╕рд░рд▓ рдЙрдкрдХрд░рдгрдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реМрдВред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ DMA рдорд╛ рдбрд╛рдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЯрд╛рдЗрдорд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди (рдЪреЗрдХ рдХрд╛рд░реНрдпрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдиреНрдЫред ws2812b_waitрдорд╛ рд╕реНрдерд┐рдд рдЫ 0x08006840), рддреНрдпрд╕рдкрдЫрд┐ рдлрд░реНрдорд╡реЗрдпрд░рд▓реЗ рд╕рдзреИрдБ рдЭрдгреНрдбрд╛ рд░рд┐рд╕реЗрдЯ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗрдЫ рд╡реНрдпрд╕реНрддрдорд╛ рд╕реНрдерд┐рдд рдЫ 0x200004C4рдЬрд╕рд▓реЗ DMA рдбрд╛рдЯрд╛ рд▓рд╛рдЗрдирдХреЛ рдХрдмреНрдЬрд╛ рджреЗрдЦрд╛рдЙрдБрдЫ:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рд╣рд╛рдореА рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЭрдгреНрдбрд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реЗрд░ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдЬрд╛рди рд╕рдХреНрдЫреМрдВ рд╡реНрдпрд╕реНрдд рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИред IDA Pro рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдкрд╛рдЗрдерди рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯрдорд╛ рдХрд▓ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рдлреНрд▓реНрдпрд╛рдЧрдорд╛ рдорд╛рди 1 рд▓реЗрдЦреЗрдкрдЫрд┐ рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯрд▓рд╛рдИ рдХреЛрдбрдорд╛ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡реНрдпрд╕реНрдд.

рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд╣реНрдпрд╛рдиреНрдбрд▓рд░

рдкрд╣рд┐рд▓реЗ, IDA рдорд╛ рдкрд╛рдЗрдерди рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред рдореЗрдиреБ рдлрд╛рдЗрд▓ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрджреЗрд╢...

рдмрд╛рдпрд╛рдБрдХреЛ рд╕реВрдЪреАрдорд╛ рдирдпрд╛рдБ рд╕реНрдирд┐рдкреЗрдЯ рдердкреНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдирд╛рдо рджрд┐рдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмреАрдкреАрдЯреА),
рджрд╛рдпрд╛рдБрдХреЛ рдкрд╛рда рдлрд┐рд▓реНрдбрдорд╛, рдкреНрд░рдХрд╛рд░реНрдп рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

def skip_dma():
    print "Skipping wait ws2812..."
    value = Byte(0x200004C4)
    if value == 1:
        PatchDbgByte(0x200004C4, 0)
return False

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рддреНрдпрд╕ рдкрдЫрд┐ рд╣рд╛рдореА рдерд┐рдЪреНрдЫреМрдВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдиреНрдбреЛ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдм рдХреЛрдб рдорд╛ рдЬрд╛рдФрдВ 0x0800688A, рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН (F2 рдХреБрдЮреНрдЬреА), рдпрд╕рд▓рд╛рдИ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╕рдиреНрджрд░реНрдн рдореЗрдиреБ рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН...) рдкрд╛рдЗрдердирдорд╛ рд▓рд┐рдкрд┐ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдпрджрд┐ рд╣рд╛рд▓рдХреЛ рдЭрдгреНрдбрд╛ рдорд╛рди рд╡реНрдпрд╕реНрдд 1 рдмрд░рд╛рдмрд░ рд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрдкрд░реНрдЫ skip_dma рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрди рдорд╛:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рдХреЛрдбрдХреЛ рдЯреНрд░рд┐рдЧрд░ IDA рд╡рд┐рдиреНрдбреЛрдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред рдЙрддреНрдкрд╛рджрди рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ Skipping wait ws2812...ред рдЕрдм рдлрд░реНрдорд╡реЗрдпрд░рд▓реЗ рдЭрдгреНрдбрд╛ рд░рд┐рд╕реЗрдЯ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗ рдЫреИрди рд╡реНрдпрд╕реНрдд.

рдЗрдореБрд▓реЗрдЯрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛

рдЗрдореНрдпреБрд▓реЗрд╕рдирдХреЛ рдЦрд╛рддрд┐рд░ рдЗрдореНрдпреБрд▓реЗрд╕рдирд▓реЗ рд░рдорд╛рдИрд▓реЛ рд░ рдЖрдирдиреНрдж рд▓реНрдпрд╛рдЙрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫреИрдиред рдпреЛ рдзреЗрд░реИ рд░реЛрдЪрдХ рдЫ рдпрджрд┐ рдЗрдореБрд▓реЗрдЯрд░рд▓реЗ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХрд░реНрддрд╛рд▓рд╛рдИ рдореЗрдореЛрд░реАрдорд╛ рдбреЗрдЯрд╛ рд╣реЗрд░реНрди рд╡рд╛ рдереНрд░реЗрдбрд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ RTOS рдХрд╛рд░реНрдпрд╣рд░реВ рдмреАрдЪрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдХрд╕рд░реА рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред рдпрджрд┐ рдпреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреЗ рддрдкрд╛рдИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдХреЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реЛрдХреНрдиреБ рдкрд░реНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдорд╛рд░реЛрд╣рдорд╛ рдЬрд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ bluetooth_task_entry "LED" рдЖрджреЗрд╢рдХреЛ рдкреНрд░рд╢реЛрдзрди рд╢рд╛рдЦрд╛рдорд╛ (рдареЗрдЧрд╛рдирд╛ 0x080057B8), рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдХреЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдгрд╛рд▓реА рд▓рд╛рдордорд╛ рдкрдард╛рдЗрдПрдХреЛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ ledControlQueueHandle рдХреЗрд╣реА рд╕рдиреНрджреЗрд╢ред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВрд▓реЗ рдЪрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд╕реЗрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ ledControlQueueHandleрдорд╛ рд╕реНрдерд┐рдд рдЫ 0x20000624 рд░ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╕реНрдЯрдк рдкрд╣рд┐рд▓реЗ рдареЗрдЧрд╛рдирд╛рдорд╛ рд╣реБрдиреЗрдЫ 0x080057CA рд╕рдорд╛рд░реЛрд╣ рдХрд▓ рдЧрд░реНрдиреБ рдЕрдШрд┐ osMailAlloc, рддреНрдпрд╕рдкрдЫрд┐ рдареЗрдЧрд╛рдирд╛рдорд╛ 0x08005806 рд╕рдорд╛рд░реЛрд╣ рдХрд▓ рдЧрд░реНрдиреБ рдЕрдШрд┐ osMailPut, рддреНрдпрд╕рдкрдЫрд┐ рдХреЗрд╣рд┐ рд╕рдордп рдкрдЫрд┐ - рдареЗрдЧрд╛рдирд╛рдорд╛ 0x08005BD4 (рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБ рдЕрдШрд┐ osMailGet), рдЬреБрди рдкреНрд░рдХрд╛рд░реНрдпрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ leds_task_entry (LED-рдХрд╛рд░реНрдп), рддреНрдпреЛ рд╣реЛ, рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реНрд╡рд┐рдЪ рдЧрд░рд┐рдпреЛ, рд░ рдЕрдм LED-рдХрд╛рд░реНрдпрд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдпрд╕ рд╕рд░рд▓ рддрд░рд┐рдХрд╛рдорд╛ рддрдкрд╛рдЗрдБ рдХрд╕рд░реА RTOS рдХрд╛рд░реНрдпрд╣рд░реВ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджрдЫ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдорд╛, рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдЗрдореБрд▓реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдпреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдХрдо рд╢реНрд░рдорд╕рд╛рдзреНрдп рд╣реБрдиреНрдЫред

рдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рдЗрдореБрд▓реЗрдЯрд░ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд░ IDA рдкреНрд░реЛрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рдЫреЛрдЯреЛ рднрд┐рдбрд┐рдпреЛ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

Radare2 рдХреЛ рд╕рд╛рде рд╕реБрд░реВ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВрд▓реЗ Radare2 рдХреЛ рд░реВрдкрдорд╛ рдпрд╕реНрддреЛ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЙрдкрдХрд░рдгрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред

r2 рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди, рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

radare2 -A -a arm -b 16 -d gdb://localhost:23946 rhino_fw42k6.elf

рдЕрдм рдЙрдкрд▓рдмреНрдз рд▓рдиреНрдЪ (dc) рд░ рдкрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (Ctrl+C)ред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╕ рд╕рдордпрдорд╛, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ gdb рд╕рд░реНрднрд░ рд░ рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ r2 рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН; рдпрд╕ рдХрд╛рд░рдгрд▓реЗ, рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд░ рдЪрд░рдгрд╣рд░реВ рдХрд╛рдо рдЧрд░реНрджреИрдирдиреН (рдЖрджреЗрд╢ ds)ред рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрджрдЫреМрдВ рдХрд┐ рдпреЛ рдЫрд┐рдЯреНрдЯреИ рдареАрдХ рд╣реБрдиреЗрдЫред

рдЧреНрд░рд╣рдг рд╕рдВрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ

рдЗрдореБрд▓реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдЙрдкрдХрд░рдгрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдбрд┐рдмрдЧ рдЧрд░реНрди рд╣реЛред рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд░рд╛рдЗрдиреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рддрдкрд╛рдИрдВ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрд░реЛрддрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ рджреЗрдЦрд┐.

рд╣рд╛рдореА рд╕реЗрдЯрдмрд╛рдЯ рдЧреНрд░рд╣рдгрд▓рд╛рдИ IDE рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ STM32 рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рд╡рд░реНрдХрдмреЗрдиреНрдЪ.

рдЗрдореНрдпреБрд▓реЗрдЯрд░рд▓реЗ рдЧреНрд░рд╣рдгрдорд╛ рд╕рд┐рдзреИ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рд▓реЛрдб рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдердкреНрдиреБ рдкрд░реНрдЫред firmware=null рдЗрдореБрд▓реЗрдЯрд░ рд╕реБрд░реБрд╡рд╛рдд рдЖрджреЗрд╢рдорд╛:

binkopycat -g 23946 -n rhino -l user -y modules -p firmware=null,tty_dbg=COM26,tty_bt=COM28

рдбрд┐рдмрдЧ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ

Eclipse рдорд╛, рдореЗрдиреБ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН - рдбрд┐рдмрдЧ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ... рдЦреБрд▓реНрдиреЗ рд╡рд┐рдиреНрдбреЛрдорд╛, рдЦрдгреНрдбрдорд╛ GDB рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдбрд┐рдмрдЧрд┐рдЩ рддрдкрд╛рдИрдВрд▓реЗ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ "рдореБрдЦреНрдп" рдЯреНрдпрд╛рдмрдорд╛ рд╣рд╛рд▓рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░ рдбрд┐рдмрдЧрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

"рдбрд┐рдмрдЧрд░" рдЯреНрдпрд╛рдмрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ GDB рдЖрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
${openstm32_compiler_path}arm-none-eabi-gdb

рд░ GDB рд╕рд░реНрднрд░ (рд╣реЛрд╕реНрдЯ рд░ рдкреЛрд░реНрдЯ) рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрдирд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

"рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк" рдЯреНрдпрд╛рдмрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ:

  • рдЪреЗрдХрдмрдХреНрд╕ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЫрд╡рд┐ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН (рддреНрдпрд╕реИрд▓реЗ рднреЗрд▓рд╛ рдЧрд░рд┐рдПрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдЫрд╡рд┐ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рд▓реЛрдб рд╣реБрдиреНрдЫ);
  • рдЪреЗрдХрдмрдХреНрд╕ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рдкреНрд░рддреАрдХрд╣рд░реВ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдкреНрд░рдХреНрд╖реЗрдкрдг рдЖрджреЗрд╢ рдердкреНрдиреБрд╣реЛрд╕реН: set $pc = *0x08000004 (рдареЗрдЧрд╛рдирд╛рдорд╛ рдореЗрдореЛрд░реАрдмрд╛рдЯ рдорд╛рдирдорд╛ рдкреАрд╕реА рд░реЗрдЬрд┐рд╕реНрдЯрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН 0x08000004 - рдареЗрдЧрд╛рдирд╛ рддреНрдпрд╣рд╛рдБ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рд░рд┐рд╕реЗрдЯ рд╣реНрдпрд╛рдиреНрдбрд▓рд░).

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН, рдпрджрд┐ рддрдкрд╛рдЗрдБ Eclipse рдмрд╛рдЯ рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди рднрдиреЗ, рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрд╡рд┐ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН ╨╕ рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд╕рдВрдХреЗрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдбрд┐рдмрдЧ рдХреНрд▓рд┐рдХ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдЗрдБ рдбрд┐рдмрдЧрд░ рдореЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

  • рдЪрд░рдгрдмрджреНрдз рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
    рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
  • рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯрд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджреИ
    рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рднрдиреНрдиреБ. рдЧреНрд░рд╣рдгрдорд╛, рд╣рдореНрдо... рдХреЗрд╣реА рдХреНрд╡рд░реНрдХрд╣рд░реВ рдЫрдиреН... рд░ рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдмрд╛рдБрдЪреНрдиреБ рдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпрджрд┐ рдбрд┐рдмрдЧрд░ рд╕реБрд░реБ рдЧрд░реНрджрд╛ рд╕рдиреНрджреЗрд╢ "0x0" рдХреЛ рд▓рд╛рдЧреА рдХреБрдиреИ рд╕реНрд░реЛрдд рдЙрдкрд▓рдмреНрдз рдЫреИрди" рджреЗрдЦрд╛ рдкрд░реНрджрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдЪрд░рдг рдЖрджреЗрд╢ (F5) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдмрд┐рд░рд╛рд▓реЛ рднрд┐рддреНрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреНрдпрд╛рдЯ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдмрд░реБ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдХреЛ

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

рд╣рд╛рдореА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрд╣рд░реВрд▓рд╛рдИ рдПрдХ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рдЬреБрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдордзреНрдпрдо рд░реВрдкрдорд╛ рд╕рд░рд▓ рдЫ рд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрди рдзреЗрд░реИ рдкреНрд░рдпрд╛рд╕ рд░ рд╕рдордп рд▓рд╛рдЧреНрджреИрдиред

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдореБрд▓реЗрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрднрд╡рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЫрд▓рдлрд▓ рдЧрд░реНрди рдЖрдордиреНрддреНрд░рд┐рдд рдЧрд░реНрдЫреМрдВ рд░ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдЦреБрд╕реА рд╣реБрдиреЗрдЫреМрдВред

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рддрдкрд╛рдИрдВ рдЗрдореБрд▓реЗрдЯрд░ рдХреЗ рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ?

  • рдо (рдбрд┐рдмрдЧ) рдлрд░реНрдорд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдЫреБ

  • рдо рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрджреИрдЫреБ

  • рдо рдЦреЗрд▓ рд╕реБрд░реБ рдЧрд░реНрдЫреБ (Dendi, Sega, PSP)

  • рдЕрд░реВ рдХреЗрд╣реА (рдХрдореЗрдиреНрдЯрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН)

7 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред реи рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рддрдкрд╛рдИрд▓реЗ рдиреЗрдЯрд┐рдн рдХреЛрдб рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рдХреБрди рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?

  • QEMU

  • рдпреБрдирд┐рдХреЛрд░реНрди рдЗрдиреНрдЬрд┐рди

  • рдкреНрд░реЛрдЯреЗрдЯрд╕

  • рдЕрд░реВ рдХреЗрд╣реА (рдХрдореЗрдиреНрдЯрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН)

6 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред реи рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣рдиреБрднрдПрдХреЛ рдЗрдореБрд▓реЗрдЯрд░рдорд╛ рдХреЗ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ?

  • рдо рдЧрддрд┐ рдЪрд╛рд╣рдиреНрдЫреБ

  • рдо рд╕реЗрдЯрдЕрдк/рд▓рдиреНрдЪрдХреЛ рд╕рд╣рдЬрддрд╛ рдЪрд╛рд╣рдиреНрдЫреБ

  • рдо рдЗрдореБрд▓реЗрдЯрд░ (рдПрдкреАрдЖрдИ, рд╣реБрдХ) рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдердк рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЪрд╛рд╣рдиреНрдЫреБред

  • рдо рд╕рдмреИ рдХреБрд░рд╛рдорд╛ рдЦреБрд╕реА рдЫреБ

  • рдЕрд░реВ рдХреЗрд╣реА (рдХрдореЗрдиреНрдЯрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН)

8 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред рез рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди