рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

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

рдпрд╛ рд▓реЗрдЦрд╛рдд рдЖрдореНрд╣реА рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдлрд░реНрдорд╡реЗрдЕрд░ рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ, рдбреАрдмрдЧрд░рд╕рд╣ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ рдлрд░реНрдорд╡реЗрдЕрд░рдЪреЗ рд▓рд╣рд╛рди рдбрд╛рдпрдиреЕрдорд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реВ.

prehistory

рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкреВрд░реНрд╡реА рджреВрд░рдЪреНрдпрд╛ рдЖрдХрд╛рд╢рдЧрдВрдЧреЗрдд

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

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

рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгрдЬреЗ рд╕рдВрдЧрдгрдХ рдкреНрд░рдгрд╛рд▓реА рдПрдореБрд▓реЗрдЯрд░ рдирдХреНрдХрд▓ рдХрд░рдгрд╛рд░рд╛.

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛
рдХреЙрдкреАрдХреЕрдЯ рдХрд╛?

рд╢рдмреНрджрд╛рдВрд╡рд░ рдирд╛рдЯрдХ рдЖрд╣реЗ.

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

рдирдХреНрдХрд▓ рдХрд░рдгрд╛рд░рд╛

рдПрдореБрд▓реЗрдЯрд░ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдЕрддрд┐рд╢рдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реА рдЧреЗрд▓реА:

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

рдкрд░рд┐рдгрд╛рдореА, рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдХреЛрдЯрд▓рд┐рди рдирд┐рд╡рдбрд▓реЗ рдЧреЗрд▓реЗ, рдмрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рд╣реЗ рдЕрд╕реЗ рдЖрд╣реЗ рдЬреЗрд╡реНрд╣рд╛ рдореЙрдбреНрдпреВрд▓реНрд╕ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдбреЗрдЯрд╛ рдмрд╕реЗрд╕рджреНрд╡рд╛рд░реЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд), рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╡рд░реНрдгрди рд╕реНрд╡рд░реВрдк рдореНрд╣рдгреВрди JSON рдЖрдгрд┐ рдбреАрдмрдЧрд░рд╢реА рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореНрд╣рдгреВрди GDB RSP.

рджреЛрди рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди рд╡рд┐рдХрд╛рд╕ рдЪрд╛рд▓реВ рдЖрд╣реЗ рдЖрдгрд┐ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдЪрд╛рд▓реВ рдЖрд╣реЗ. рдпрд╛ рд╡реЗрд│реА, MIPS, x86, V850ES, ARM, рдЖрдгрд┐ PowerPC рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ.

рдкреНрд░рдХрд▓реНрдк рд╡рд╛рдврдд рдЖрд╣реЗ рдЖрдгрд┐ рддреЛ рд╡реНрдпрд╛рдкрдХ рд▓реЛрдХрд╛рдВрд╕рдореЛрд░ рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдЖрдореНрд╣реА рдирдВрддрд░ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдХрд░реВ, рдкрд░рдВрддреБ рд╕рдзреНрдпрд╛ рдЖрдореНрд╣реА рдХреЛрдкреАрдХреЕрдЯ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВ.

рд╕рд░реНрд╡рд╛рдд рдЕрдзреАрд░рд╛рдВрд╕рд╛рдареА, рдПрдореБрд▓реЗрдЯрд░рдЪреА рдкреНрд░реЛрдореЛ рдЖрд╡реГрддреНрддреА рдпреЗрдереВрди рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рджреБрд╡рд╛.

рдПрдореБрд▓реЗрдЯрд░ рдордзреНрдпреЗ рдЧреЗрдВрдбрд╛

рдпрд╛рдЖрдзреА SMARTRHINO-2018 рдкрд░рд┐рд╖рджреЗрд╕рд╛рдареА рд░рд┐рд╡реНрд╣рд░реНрд╕ рдЗрдВрдЬрд┐рдиреАрдЕрд░рд┐рдВрдЧ рдХреМрд╢рд▓реНрдпреЗ рд╢рд┐рдХрд╡рдгреНрдпрд╛рд╕рд╛рдареА тАЬрдЧреЗрдВрдбрд╛тАЭ рд╣реЗ рдЪрд╛рдЪрдгреА рдЙрдкрдХрд░рдг рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ рд╣реЛрддреЗ. рд╕реНрдерд┐рд░ рдлрд░реНрдорд╡реЗрдЕрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рд╣рд╛ рд▓реЗрдЦ.

рдЖрддрд╛ "рд╕реНрдкреАрдХрд░" рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рдЖрдгрд┐ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡реВ.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓рдГ
1) Java 1.8
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"]
  ]
}

рдкреЕрд░рд╛рдореАрдЯрд░рдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛ рдлрд░реНрдорд╡реЗрдЕрд░ рд╡рд┐рднрд╛рдЧ params рд╣реЗ рдПрдХрд╛ рдлрд╛рдИрд▓рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ рдЬреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдореНрд╣рдгреВрди рдЖрднрд╛рд╕реА рдЙрдкрдХрд░рдгрд╛рдд рд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдЖрдгрд┐ рдореБрдЦреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд╕рд╣ рддреНрдпрд╛рдЪрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдЦрд╛рд▓реАрд▓ рдЖрдХреГрддреАрджреНрд╡рд╛рд░реЗ рджрд░реНрд╢рд╡рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ:

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

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

рдмрд╛рд╣реЗрд░реВрди рдПрдореБрд▓реЗрдЯрд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреЗ рд╕рдзреНрдпрд╛ рджреЛрди рдореБрдЦреНрдп рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд:

  • GDB RSP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░реА рд╕рд╛рдзрдиреЗ Eclipse/IDA/radare2 рдЖрд╣реЗрдд);
  • рдЕрдВрддрд░реНрдЧрдд рдПрдореБрд▓реЗрдЯрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди (рдЖрд░реНрдЧрдкрд╛рд░реНрд╕ рдХрд┐рдВрд╡рд╛ рдкрд╛рдпрдерди).

рдЖрднрд╛рд╕реА COM рдкреЛрд░реНрдЯ

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

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

com0com рд╡рд╛рдкрд░рдгреЗ

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

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдмреЙрдХреНрд╕ рддрдкрд╛рд╕рд╛ рдмрдлрд░ рдУрд╡реНрд╣рд░рд░рди рд╕рдХреНрд╖рдо рдХрд░рд╛ рд╕рд░реНрд╡ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдкреЛрд░реНрдЯрд╕рд╛рдареА, рдЕрдиреНрдпрдерд╛ рдПрдореБрд▓реЗрдЯрд░ COM рдкреЛрд░реНрдЯрдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрд▓.

socat рд╡рд╛рдкрд░рдгреЗ

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

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

рдХреЙрдкреАрдХреЕрдЯ рд╣реЗ рдХрдиреНрд╕реЛрд▓ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдПрдореБрд▓реЗрдЯрд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░реНрдпрд╛рдп рдкреБрд░рд╡рддреЛ: Argparse рдЖрдгрд┐ Python.

Argparse рдХреЙрдкреАрдХреЕрдЯрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ CLI рдЖрд╣реЗ рдЖрдгрд┐ рддреЛ рдиреЗрд╣рдореА рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.

рдкрд░реНрдпрд╛рдпреА CLI рдореНрд╣рдгрдЬреЗ рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░. рддреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреЗрдк рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рдкрд╛рдпрдердирд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдореБрд▓реЗрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реАрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдИрд▓).

рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ Jep рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

Linux Jep рдЕрдВрддрд░реНрдЧрдд pip рджреНрд╡рд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

pip install jep

Windows рд╡рд░ Jep рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрдг рдкреНрд░рдердо Windows SDK рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд Microsoft Visual Studio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдореНрд╣реА рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдереЛрдбреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ WHL рддрдпрд╛рд░ рдХрд░рддреЛ рд╡рд┐рдВрдбреЛрдЬрд╕рд╛рдареА рдкрд╛рдпрдердирдЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╛рдареА рдЬреЗрдИрдкреА, рддреНрдпрд╛рдореБрд│реЗ рдлрд╛рдЗрд▓рдордзреВрди рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

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 рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди Linux рдЕрдВрддрд░реНрдЧрдд рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рдЖрдЬреНрдЮрд╛:

./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 Pro рд╕рд╣ рд╕рдВрд╡рд╛рдж

рдЪрд╛рдЪрдгреА рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА IDA рдордзреАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рд╕реНрддреНрд░реЛрдд рдлрд╛рдЗрд▓ рдореНрд╣рдгреВрди Rhino рдлрд░реНрдорд╡реЗрдЕрд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЛ 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) рддреБрдореНрд╣реА Rhino рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдиреБрд╕рд╛рд░ рдХрдорд╛рдВрдб рдЯрд╛рдХреВ рд╢рдХрддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, тАЬMEOWтАЭ рдХрдорд╛рдВрдб рдмреНрд▓реВрдЯреВрде рдЯрд░реНрдорд┐рдирд▓рд╡рд░ тАЬmur-murтАЭ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рдд рдХрд░реЗрд▓:

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдорд╛рдЭреЗ рдЕрдиреБрдХрд░рдг рдкреВрд░реНрдгрдкрдгреЗ рдирд╛рд╣реА

рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╡рддрд╛рдирд╛, рддреБрдореНрд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгрд╛рдЪреНрдпрд╛ рддрдкрд╢реАрд▓/рдЗрдореНрдпреБрд▓реЗрд╢рдирдЪреА рдкрд╛рддрд│реА рдирд┐рд╡рдбреВ рд╢рдХрддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдЕрдиреБрдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

  • рдХрдорд╛рдВрдбрдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрдЪрд╛рд╕рд╣ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдкреВрд░реНрдгрдкрдгреЗ рдЕрдиреБрдХрд░рдг рдХреЗрд▓реЗ рдЖрд╣реЗ;
  • AT рдЖрджреЗрд╢рд╛рдВрдЪреЗ рдЕрдиреБрдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реАрдЪреНрдпрд╛ COM рдкреЛрд░реНрдЯрд╡рд░реВрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЛ;
  • рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд▓рд╛ рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ;
  • рдПрдХ рд╕рд╛рдзрд╛ рд╕реНрдЯрдм рдореНрд╣рдгреВрди рдЬреЛ рдиреЗрд╣рдореА "рдУрдХреЗ" рдкрд░рдд рдХрд░рддреЛ.

рдПрдореБрд▓реЗрдЯрд░рдЪреА рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддреА рджреБрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рддреЗ - рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХрд░рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рддреЗ рдореБрдЦреНрдп рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ COM рдкреЛрд░реНрдЯрд╡рд░реВрди рдПрдореБрд▓реЗрдЯрд░рдЪреНрдпрд╛ UART рдкреЛрд░реНрдЯрд╡рд░ рдбреЗрдЯрд╛ тАЬрдкреНрд░реЙрдХреНрд╕реАтАЭ рдореЛрдбрд╡рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ.

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдкрд░рд┐рдШрд╛рдЪрд╛ рдХрд╛рд╣реА рднрд╛рдЧ рдЕрдВрдорд▓рд╛рдд рди рдЖрд▓реНрдпрд╛рд╕ рдХреЛрдбрдЪреНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ рдЙрдкрдХрд░рдгрд╛рдЪреНрдпрд╛ рд╢рдХреНрдпрддреЗрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдпрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, DMA рд▓рд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЯрд╛рдпрдорд░ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдирд╕рд▓реНрдпрд╛рд╕ (рддрдкрд╛рд╕рдгреА рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдХреЗрд▓реА рдЬрд╛рддреЗ. ws2812b_waitрдпреЗрдереЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ 0x08006840), рдирдВрддрд░ рдлрд░реНрдорд╡реЗрдЕрд░ рдиреЗрд╣рдореА рдзреНрд╡рдЬ рд░реАрд╕реЗрдЯ рд╣реЛрдгреНрдпрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрд▓ рд╡реНрдпрд╕реНрддрдпреЗрдереЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ 0x200004C4рдЬреЗ DMA рдбреЗрдЯрд╛ рд▓рд╛рдЗрдирдЪреА рд╡реНрдпрд╛рдкреНрддреА рджрд░реНрд╢рд╡рддреЗ:

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдзреНрд╡рдЬ рд╕реНрд╡рд╣рд╕реНрддреЗ рд░реАрд╕реЗрдЯ рдХрд░реВрди рдЖрдореНрд╣реА рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрддреВрди рдмрд╛рд╣реЗрд░ рдкрдбреВ рд╢рдХрддреЛ рд╡реНрдпрд╕реНрдд рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ. IDA Pro рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдкрд╛рдпрдерди рдлрдВрдХреНрд╢рди рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рдмреНрд░реЗрдХрдкреЙрдИрдВрдЯрдордзреНрдпреЗ рдХреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдлреНрд▓реЕрдЧрд╡рд░ рд╡реНрд╣реЕрд▓реНрдпреВ 1 рд▓рд┐рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реНрд╡рддрдГ рдХреЛрдбрдордзреНрдпреЗ рдареЗрд╡реВ рд╢рдХрддрд╛. рд╡реНрдпрд╕реНрдд.

рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╣рдБрдбрд▓рд░

рдкреНрд░рдердо, IDA рдордзреНрдпреЗ рдкрд╛рдпрдерди рдлрдВрдХреНрд╢рди рддрдпрд╛рд░ рдХрд░реВ. рдореЗрдиреВ рдлрд╛рдЗрд▓ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдб...

рдбрд╛рд╡реАрдХрдбреАрд▓ рд╕реВрдЪреАрдордзреНрдпреЗ рдПрдХ рдирд╡реАрди рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрд╛, рддреНрдпрд╛рд▓рд╛ рдПрдХ рдирд╛рд╡ рджреНрдпрд╛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, BPT),
рдЙрдЬрд╡реАрдХрдбреАрд▓ рдордЬрдХреВрд░ рдлреАрд▓реНрдбрдордзреНрдпреЗ, рдлрдВрдХреНрд╢рди рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛:

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

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рджрд╛рдмрддреЛ рдЪрд╛рд▓рд╡рд╛ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░рд╛.

рдЖрддрд╛ рдпреЗрдереЗ рдХреЛрдб рд╡рд░ рдЬрд╛рдКрдпрд╛ 0x0800688A, рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рд╛ (F2 рдХреА), рддреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛ (рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛...), рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ Python рд╡рд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛:

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛
рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдЬрд░ рд╡рд░реНрддрдорд╛рди рдзреНрд╡рдЬ рдореВрд▓реНрдп рд╡реНрдпрд╕реНрдд 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 (рдПрд▓рдИрдбреА-рдЯрд╛рд╕реНрдХ), рдореНрд╣рдгрдЬреЗ, рдХрд╛рд░реНрдпреЗ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрдгрд┐ рдЖрддрд╛ рдПрд▓рдИрдбреА-рдЯрд╛рд╕реНрдХрд╡рд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ.

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рдпрд╛ рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рддреБрдореНрд╣реА RTOS рдХрд╛рд░реНрдпреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдХрд╕рд╛ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд рд╣реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛.

рдЕрд░реНрдерд╛рдд, рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд, рдХрд╛рд░реНрдпрд╛рдВрдЪрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЕрд╕реВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ рдПрдореБрд▓реЗрдЯрд░ рд╡рд╛рдкрд░реВрди, рдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдгреЗ рдХрдореА рдХрд╖реНрдЯрджрд╛рдпрдХ рд╣реЛрддреЗ.

рдпреЗрдереЗ рддреБрдореНтАНрд╣реА IDA Pro рд▓рд╛рдБрдЪ рдХрд░рдгреНтАНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНтАНрдпрд╛рдЪрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡реНрд╣рд┐рдбрд┐рдУ рдкрд╛рд╣реВ рд╢рдХрддрд╛.

Radare2 рд╕рд╣ рд▓рд╛рдБрдЪ рдХрд░рд╛

рдЖрдкрдг Radare2 рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд╕рд╛рдзрдирд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА.

r2 рд╡рд╛рдкрд░реВрди рдЗрдореНрдпреБрд▓реЗрдЯрд░рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдорд╛рдВрдб рдЕрд╕реЗ рджрд┐рд╕реЗрд▓:

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

рдЖрддрд╛ рдЙрдкрд▓рдмреНрдз рд▓рд╛рдБрдЪ (dc) рдЖрдгрд┐ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд▓рд╛ рд╡рд┐рд░рд╛рдо рджреНрдпрд╛ (Ctrl+C).

рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдпрд╛рдХреНрд╖рдгреА, рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ gdb рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдореЗрдорд░реА рд▓реЗрдЖрдЙрдЯрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдирд╛ r2 рд▓рд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд; рдпрд╛рдореБрд│реЗ, рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдЖрдгрд┐ рд╕реНрдЯреЗрдкреНрд╕ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реАрдд (рдЖрджреЗрд╢ ds). рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рд▓рд╡рдХрд░рдЪ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.

рдЧреНрд░рд╣рдг рд╕рд╣ рдзрд╛рд╡рдгреЗ

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

рдЖрдореНрд╣реА рд╕рдВрдЪрд╛рддреВрди рдЧреНрд░рд╣рдг 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)

рдорд╛рдВрдЬрд░реАрдЪреНрдпрд╛ рдЖрдд рдЧреЗрдВрдбрд╛ - рдХреЛрдкреАрдХреЕрдЯ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдлрд░реНрдорд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рд╛

рддреНрдпрд╛рдРрд╡рдЬреА рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖

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

рдЖрдореНтАНрд╣рд╛рд▓рд╛ рддрдЬреНрдЮрд╛рдВрдирд╛ рдЕрд╕реЗ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЬреЗ рд╕реЛрдпреАрдЪреЗ, рдорд╛рдлрдХ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реЛрдкреЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╕реЗрдЯ рдЕрдк рдЖрдгрд┐ рдЪрд╛рд▓рд╡рдгреНтАНрдпрд╛рд╕рд╛рдареА рдЦреВрдк рдореЗрд╣рдирдд рдЖрдгрд┐ рд╡реЗрд│ рд▓рд╛рдЧрдд рдирд╛рд╣реА.

рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдПрдореБрд▓реЗрдЯрд░ рд╡рд╛рдкрд░реВрди рддреБрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдмрджреНрджрд▓ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд▓рд┐рд╣рд╛. рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЪрд░реНрдЪрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрдгреНрдпрд╛рдд рдЖрдирдВрдж рд╣реЛрдИрд▓.

рдХреЗрд╡рд│ рдиреЛрдВрджрдгреАрдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддреЗрдЪ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрд╛рдд рднрд╛рдЧ рдШреЗрдК рд╢рдХрддрд╛рдд. рд╕рд╛рдЗрди рдЗрди рдХрд░рд╛, рдЖрдкрд▓реЗ рд╕реНрд╡рд╛рдЧрдд рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдПрдореБрд▓реЗрдЯрд░ рдХрд╢рд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдд рдЖрд╣рд╛рдд?

  • рдореА рдлрд░реНрдорд╡реЗрдЕрд░ (рдбреАрдмрдЧ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЛ

  • рдореА рдлрд░реНрдорд╡реЗрдЕрд░рд╡рд░ рд╕рдВрд╢реЛрдзрди рдХрд░рдд рдЖрд╣реЗ

  • рдореА рдЦреЗрд│ рд▓рд╛рдБрдЪ рдХрд░рддреЛ (рдбреЗрдВрдбреА, рд╕реЗрдЧрд╛, рдкреАрдПрд╕рдкреА)

  • рджреБрд╕рд░реЗ рдХрд╛рд╣реАрддрд░реА (рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд▓рд┐рд╣рд╛)

7 рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдиреА рдорддрджрд╛рди рдХреЗрд▓реЗ. 2 рд╡рд╛рдкрд░рдХрд░реНрддреЗ рджреВрд░ рд░рд╛рд╣рд┐рд▓реЗ.

рдореВрд│ рдХреЛрдбрдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдХреЛрдгрддреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡рд╛рдкрд░рддрд╛?

  • QEMU

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

  • рдЗрдЪреНрдЫреЗрдиреБрд╕рд╛рд░ рд╕реНрд╡рддрдГрдЪреЗ рд╕реНрд╡рд░реБрдк

  • рджреБрд╕рд░реЗ рдХрд╛рд╣реАрддрд░реА (рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд▓рд┐рд╣рд╛)

6 рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдиреА рдорддрджрд╛рди рдХреЗрд▓реЗ. 2 рд╡рд╛рдкрд░рдХрд░реНрддреЗ рджреВрд░ рд░рд╛рд╣рд┐рд▓реЗ.

рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╕реБрдзрд╛рд░рд╛рдпрдЪреЗ рдЖрд╣реЗ?

  • рдорд▓рд╛ рд╡реЗрдЧ рд╣рд╡рд╛ рдЖрд╣реЗ

  • рдорд▓рд╛ рд╕реЗрдЯрдЕрдк/рд▓рд╛рдБрдЪрдЪреА рд╕реБрд▓рднрддрд╛ рд╣рд╡реА рдЖрд╣реЗ

  • рдорд▓рд╛ рдПрдореБрд▓реЗрдЯрд░ (API, рд╣реБрдХ) рд╕рд╣ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗрдд

  • рдореА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдд рдЖрдирдВрджреА рдЖрд╣реЗ

  • рджреБрд╕рд░реЗ рдХрд╛рд╣реАрддрд░реА (рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд▓рд┐рд╣рд╛)

8 рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдиреА рдорддрджрд╛рди рдХреЗрд▓реЗ. 1 рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рджреВрд░ рд░рд╛рд╣рд┐рд▓рд╛.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛