เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชฎเซ€เชŸเชฟเช‚เช—เชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ 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 เช•เซ‹เชจเซเชซเชฐเชจเซเชธ เชฎเชพเชŸเซ‡, เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เช•เซŒเชถเชฒเซเชฏ เชถเซ€เช–เชตเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชชเชฐเซ€เช•เซเชทเชฃ เช‰เชชเช•เชฐเชฃ "เช—เซ‡เช‚เชกเชพ" เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชธเซเชŸเซ‡เชŸเชฟเช• เชซเชฐเซเชฎเชตเซ‡เชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เช† เชฒเซ‡เช–.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ "เชธเซเชชเซ€เช•เชฐเซเชธ" เช‰เชฎเซ‡เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เช…เชจเซ‡ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ€เช.

เช…เชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡:
1) เชœเชพเชตเชพ 1.8
2) เชชเชพเชฏเชฅเซ‹เชจ เช…เชจเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒ เชœเซ€เชช เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชคเชฎเซ‡ Windows เชฎเชพเชŸเซ‡ WHL เชฎเซ‹เชกเซเชฏเซเชฒ Jep เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹.

เชตเชฟเชจเซเชกเซ‹เช เชฎเชพเชŸเซ‡:
1) com0com
2) เชชเซเชŸเซ€

Linux เชฎเชพเชŸเซ‡:
1) เชธเซ‹เช•เซ‡เชŸ

เชคเชฎเซ‡ 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 (เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡ เชกเซ€เชฌเช— UART เช…เชจเซ‡ UART) เชจเชพ COM เชชเซ‹เชฐเซเชŸเซเชธ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช† เชตเชพเชธเซเชคเชตเชฟเช• เชฌเช‚เชฆเชฐเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช‰เชชเช•เชฐเชฃเซ‹ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชฅเชตเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒ 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:.

เช†เช‚เชคเชฐเชฟเช• เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ (เช†เชฐเซเช—เชชเชพเชฐเซเชธ เช…เชฅเชตเชพ เชชเชพเชฏเชฅเซ‹เชจ)

เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช เช•เชจเซเชธเซ‹เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชนเซ‹เชตเชพเชฅเซ€, เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชคเซ‡เชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เช…เชจเซ‡ เชšเชฒเซ‹ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชตเชฟเช•เชฒเซเชชเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡: Argparse เช…เชจเซ‡ Python.

เช…เชฐเซเช—เชชเชพเชฐเซเชธ เช เช•เซ‹เชชเซ€เช•เซ‡เชŸเชฎเชพเช‚ เชฌเชจเซ‡เชฒ CLI เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

เชตเซˆเช•เชฒเซเชชเชฟเช• CLI เช Python เชฆเซเชญเชพเชทเชฟเชฏเชพ เช›เซ‡. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ Jep Python เชฎเซ‹เชกเซเชฏเซเชฒ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ Python เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชฎเซเช–เซเชฏ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ Python เช‡เชจเซเชŸเชฐเชชเซเชฐเซ€เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡).

เชชเชพเชฏเชฅเซ‹เชจ เชฎเซ‹เชกเซเชฏเซเชฒ Jep เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

Linux Jep เชนเซ‡เช เชณ เชชเชพเช‡เชช เชฆเซเชตเชพเชฐเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

pip install jep

Windows เชชเชฐ Jep เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเชนเซ‡เชฒเชพ Windows SDK เช…เชจเซ‡ เช…เชจเซเชฐเซ‚เชช Microsoft Visual Studio เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡. เช…เชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เชฅเซ‹เชกเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ WHL เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชตเชฟเชจเซเชกเซ‹เช เชฎเชพเชŸเซ‡ Python เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ 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 - เชตเชฟเชจเซเชกเซ‹เช เชฎเชพเชŸเซ‡, เชจเช•เชฒ - Linux เชฎเชพเชŸเซ‡) เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ 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"

เช•เซ‹เชชเซ€เช•เซ‡เชŸ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เช เช•เชจเซเชธเซ‹เชฒ JVM เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช›เซ‡. เชฒเซ‹เชจเซเชš เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ (sh/cmd) เชฆเซเชตเชพเชฐเชพ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชตเชฟเชจเซเชกเซ‹เช เชนเซ‡เช เชณ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฆเซ‡เชถ:

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

เชธเซ‹เช•เซ‡เชŸ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ 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 เชฎเชพเช‚ เช•เซ‹เชชเซ€เช•เซ‡เชŸ เชฒเซ‹เชจเซเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชกเซ€เชฌเช—เชฐ เชฎเซ‡เชจเซ‚เชฎเชพเช‚ เช†เช‡เชŸเชฎ เชชเชฐ เชœเชพเช“ โ€œเชกเซ€เชฌเช—เชฐ เชธเซเชตเชฟเชš เช•เชฐเซ‹..."เช…เชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‹"เชฐเซ€เชฎเซ‹เชŸ GDB เชกเซ€เชฌเช—เชฐ" เช†เช—เชณ, เช•เชจเซ‡เช•เซเชถเชจ เชธเซ‡เชŸ เช•เชฐเซ‹: เชฎเซ‡เชจเซ เชกเซ€เชฌเช—เชฐ - เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชตเชฟเช•เชฒเซเชชเซ‹...

เชฎเซ‚เชฒเซเชฏเซ‹ เชธเซ‡เชŸ เช•เชฐเซ‹:

  • เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ - เช•เซ‹เชˆเชชเชฃ เชฎเซ‚เชฒเซเชฏ
  • เชนเซ‹เชธเซเชŸเชจเชพเชฎ: 127.0.0.1 (เช…เชฅเชตเชพ เชฐเชฟเชฎเซ‹เชŸ เชฎเชถเซ€เชจเชจเซเช‚ IP เชธเชฐเชจเชพเชฎเซเช‚ เชœเซเชฏเชพเช‚ เช•เซ‹เชชเซ€เช•เซ‡เชŸ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡)
  • เชชเซ‹เชฐเซเชŸ: 23946

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชนเชตเซ‡ เชกเซ€เชฌเช—เซ€เช‚เช— เชฌเชŸเชจ เช‰เชชเชฒเชฌเซเชง เชฅเชถเซ‡ (F9 เช•เซ€):

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชกเซ€เชฌเช—เชฐ เชฎเซ‹เชกเซเชฏเซเชฒ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเซ‹. IDA เชกเชฟเชฌเช—เซ€เช‚เช— เชฎเซ‹เชกเชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡, เชตเชงเชพเชฐเชพเชจเซ€ เชตเชฟเชจเซเชกเซ‹ เช‰เชชเชฒเชฌเซเชง เชฅเชพเชฏ เช›เซ‡: เชฐเชœเซ€เชธเซเชŸเชฐ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€, เชธเซเชŸเซ‡เช• เชตเชฟเชถเซ‡.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชกเซ€เชฌเช—เชฐเชจเซ€ เชคเชฎเชพเชฎ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

  • เชธเซ‚เชšเชจเชพเช“เชจเซเช‚ เชชเช—เชฒเซเช‚-เชฆเชฐ-เชชเช—เชฒเชพเช‚ เช…เชฎเชฒ (เชฎเชพเช‚ เชชเช—เชฒเซเช‚ ะธ เช†เช—เชณ เชตเชงเซ‹ โ€” เช…เชจเซเช•เซเชฐเชฎเซ‡ F7 เช…เชจเซ‡ F8 เช•เซ€เช“);
  • เช…เชฎเชฒ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชฅเซ‹เชญเชพเชตเชตเซเช‚;
  • เช•เซ‹เชก เช…เชจเซ‡ เชกเซ‡เชŸเชพ (F2 เช•เซ€) เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชฌเซเชฐเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชฌเชจเชพเชตเชตเซเช‚.

เชกเซ€เชฌเช—เชฐ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช เชจเชฅเซ€ เช•เซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐ เช•เซ‹เชก เชšเชฒเชพเชตเชตเซ‹. เชตเชฐเซเชคเชฎเชพเชจ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชชเซ‹เชเชฟเชถเชจ เชธเชฐเชจเชพเชฎเซเช‚ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ 0x08006A74 - เช•เชพเชฐเซเชฏเชจเซ€ เชถเชฐเซ‚เช†เชค เชฐเซ€เชธเซ‡เชŸ_เชนเซ‡เชจเซเชกเชฒเชฐ. เชœเซ‹ เชคเชฎเซ‡ เชธเซ‚เชšเชฟเชจเซ‡ เชจเซ€เชšเซ‡ เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เชฎเซเช–เซเชฏ. เชคเชฎเซ‡ เช† เชฒเชพเช‡เชจ เชชเชฐ เช•เชฐเซเชธเชฐ เชฎเซ‚เช•เซ€ เชถเช•เซ‹ เช›เซ‹ (เชธเชฐเชจเชพเชฎเซเช‚ 0x08006ABE) เช…เชจเซ‡ เช“เชชเชฐเซ‡เชถเชจ เช•เชฐเซ‹ เช•เชฐเซเชธเชฐ เชธเซเชงเซ€ เชšเชฒเชพเชตเซ‹ (เช•เซ€ F4).

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เช†เช—เชณ, เชคเชฎเซ‡ เชซเช‚เช•เซเชถเชจ เชฆเชพเช–เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ F7 เชฆเชฌเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชฎเซเช–เซเชฏ.

เชœเซ‹ เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹ เช›เซ‹ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชšเชพเชฒเซ เชฐเชพเช–เซ‹ (F9 เช•เซ€), เชชเช›เซ€ "เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฐเชพเชน เชœเซเช“" เชตเชฟเชจเซเชกเซ‹ เชเช• เชฌเชŸเชจ เชธเชพเชฅเซ‡ เชฆเซ‡เช–เชพเชถเซ‡ เชธเชธเซเชชเซ‡เชจเซเชก เช•เชฐเซ‹:

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชฆเชฌเชพเชตเซ‹ เชธเชธเซเชชเซ‡เชจเซเชก เช•เชฐเซ‹ เชซเชฐเซเชฎเชตเซ‡เชฐ เช•เซ‹เชกเชจเซ‹ เช…เชฎเชฒ เชธเชธเซเชชเซ‡เชจเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เช…เชจเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชคเซ‡ เชœ เชธเชฐเชจเชพเชฎเชพเช‚เชฅเซ€ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡ เชœเซเชฏเชพเช‚ เชคเซ‡ เชตเชฟเช•เซเชทเซ‡เชชเชฟเชค เชฅเชฏเซ‹ เชนเชคเซ‹.

เชœเซ‹ เชคเชฎเซ‡ เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชถเซ‹, เชคเซ‹ เชคเชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ COM เชชเซ‹เชฐเซเชŸเซเชธ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชŸเชฐเซเชฎเชฟเชจเชฒเซเชธเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ€ เชฒเซ€เชŸเซ€เช“ เชœเซ‹เชถเซ‹:

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

"เชธเซเชŸเซ‡เชŸ เชฌเชพเชฏเชชเชพเชธ" เชฒเชพเช‡เชจเชจเซ€ เชนเชพเชœเชฐเซ€ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชฎเซ‹เชกเซเชฏเซเชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ COM เชชเซ‹เชฐเซเชŸเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเชพ เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡.

เชนเชตเซ‡ เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ (เชšเชฟเชคเซเชฐเชฎเชพเช‚ COM29) เชคเชฎเซ‡ เชฐเชพเช‡เชจเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช…เชจเซเชธเชพเชฐ เช†เชฆเซ‡เชถเซ‹ เชฆเชพเช–เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, โ€œMEOWโ€ เช†เชฆเซ‡เชถ เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชŸเชฐเซเชฎเชฟเชจเชฒ เชชเชฐ โ€œmur-murโ€ เชถเชฌเซเชฆเชฎเชพเชณเชพ เชชเชฐเชค เช•เชฐเชถเซ‡:

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชฎเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ‹ เชจเชนเซ€เช‚

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เชคเชฎเซ‡ เชšเซ‹เช•เซเช•เชธ เช‰เชชเช•เชฐเชฃเชจเซ€ เชตเชฟเช—เชคเซ‹/เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจเชจเซเช‚ เชธเซเชคเชฐ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เช…เชฒเช— เช…เชฒเช— เชฐเซ€เชคเซ‡ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  • เช‰เชชเช•เชฐเชฃเชจเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‡เชŸ เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡;
  • AT เช†เชฆเซ‡เชถเซ‹เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎ เชฎเซเช–เซเชฏ เชธเชฟเชธเซเชŸเชฎเชจเชพ COM เชชเซ‹เชฐเซเชŸเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡;
  • เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช‰เชชเช•เชฐเชฃ เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชชเช•เชฐเชฃ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃ เชกเซ‡เชŸเชพ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชถเชจ เชชเซ‚เชฐเซเช‚ เชชเชพเชกเซ‡ เช›เซ‡;
  • เชเช• เชธเชฐเชณ เชธเซเชŸเชฌ เชคเชฐเซ€เช•เซ‡ เชœเซ‡ เชนเช‚เชฎเซ‡เชถเชพ "เช“เช•เซ‡" เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡.

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซเช‚ เชตเชฐเซเชคเชฎเชพเชจ เชธเช‚เชธเซเช•เชฐเชฃ เชฌเซ€เชœเชพ เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ - เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฌเซเชฒเซ‚เชŸเซ‚เชฅ เชฎเซ‹เชกเซเชฏเซเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช•เชฐเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชคเซ‡ เชฎเซเช–เซเชฏ เชธเชฟเชธเซเชŸเชฎเชจเชพ COM เชชเซ‹เชฐเซเชŸเชฎเชพเช‚เชฅเซ€ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเชพ UART เชชเซ‹เชฐเซเชŸ เชชเชฐ เชกเซ‡เชŸเชพ "เชชเซเชฐเซ‹เช•เซเชธเซ€เช‚เช—" เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซ‡ เช›เซ‡.

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชœเซ‹ เชชเชฐเชฟเช˜เชจเซ‹ เช…เชฎเซเช• เชญเชพเช— เช…เชฎเชฒเชฎเชพเช‚ เชจ เช†เชตเซ‡ เชคเซ‹ เช•เซ‹เชกเชจเชพ เชธเชฐเชณ เชธเชพเชงเชจเชจเซ€ เชถเช•เซเชฏเชคเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเช. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ DMA เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชŸเชพเชˆเชฎเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจเชฅเซ€ (เชคเชชเชพเชธ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ ws2812b_เชชเซเชฐเชคเซ€เช•เซเชทเชพ เช•เชฐเซ‹เชชเชฐ เชธเซเชฅเชฟเชค 0x08006840), เชชเช›เซ€ เชซเชฐเซเชฎเชตเซ‡เชฐ เชนเช‚เชฎเซ‡เชถเชพ เชซเซเชฒเซ‡เช— เชฐเซ€เชธเซ‡เชŸ เชฅเชตเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชถเซ‡ เชตเซเชฏเชธเซเชคเชชเชฐ เชธเซเชฅเชฟเชค 0x200004C4เชœเซ‡ DMA เชกเซ‡เชŸเชพ เชฒเชพเช‡เชจเชจเซ‹ เช•เชฌเชœเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡:

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เชงเซเชตเชœเชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚เชฅเซ€ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€ เชถเช•เซ€เช เช›เซ€เช เชตเซเชฏเชธเซเชค เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ. IDA Pro เชฎเชพเช‚, เชคเชฎเซ‡ Python เชซเช‚เช•เซเชถเชจ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเซเชฐเซ‡เช•เชชเซ‹เช‡เชจเซเชŸเชฎเชพเช‚ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชจเซ‡ เชซเซเชฒเซ‡เช— เชชเชฐ เชฎเซ‚เชฒเซเชฏ 1 เชฒเช–เซเชฏเชพ เชชเช›เซ€ เช•เซ‹เชกเชฎเชพเช‚ เชฌเซเชฐเซ‡เช•เชชเซ‹เช‡เชจเซเชŸเชจเซ‡ เชœ เชฎเซ‚เช•เซ€ เชถเช•เซ‹ เช›เซ‹. เชตเซเชฏเชธเซเชค.

เชฌเซเชฐเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชนเซ‡เชจเซเชกเชฒเชฐ

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ IDA เชฎเชพเช‚ Python เชซเช‚เช•เซเชถเชจ เชฌเชจเชพเชตเซ€เช. เชฎเซ‡เชจเซ เชซเชพเช‡เชฒ - เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช†เชฆเซ‡เชถ...

เชกเชพเชฌเซ€ เชฌเชพเชœเซเชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชเช• เชจเชตเซเช‚ เชธเซเชจเชฟเชชเซ‡เชŸ เช‰เชฎเซ‡เชฐเซ‹, เชคเซ‡เชจเซ‡ เชเช• เชจเชพเชฎ เช†เชชเซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฌเซ€.เชชเซ€.เชŸเซ€.),
เชœเชฎเชฃเซ€ เชฌเชพเชœเซเชจเชพ เชŸเซ‡เช•เซเชธเซเชŸ เชซเซ€เชฒเซเชกเชฎเชพเช‚, เชซเช‚เช•เซเชถเชจ เช•เซ‹เชก เชฆเชพเช–เชฒ เช•เชฐเซ‹:

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 (เชเชฒเช‡เชกเซ€-เชŸเชพเชธเซเช•), เชเชŸเชฒเซ‡ เช•เซ‡, เช•เชพเชฐเซเชฏเซ‹ เชธเซเชตเชฟเชš เชฅเชฏเชพ, เช…เชจเซ‡ เชนเชตเซ‡ เชเชฒเช‡เชกเซ€-เชŸเชพเชธเซเช•เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚.

เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เช…เช‚เชฆเชฐ เช—เซ‡เช‚เชกเชพ - เช•เซ‹เชชเซ€เช•เซ‡เชŸ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เชšเชฒเชพเชตเซ‹

เช† เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ 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). เช…เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เช† เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เช เซ€เช• เชฅเชˆ เชœเชถเซ‡.

เช—เซเชฐเชนเชฃ เชธเชพเชฅเซ‡ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹เชฎเชพเช‚เชจเซ‹ เชเช• เช เช›เซ‡ เช•เซ‡ เชตเชฟเช•เชธเชฟเชค เชฅเชˆ เชฐเชนเซ‡เชฒเชพ เช‰เชชเช•เชฐเชฃเชจเชพ เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเซเช‚. เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฐเชพเช‡เชจเซ‹ เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เชคเชฎเซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚เชฅเซ€.

เช…เชฎเซ‡ IDE เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชŸเชฎเชพเช‚เชฅเซ€ Eclipse เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ 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

  • เชฏเซเชจเชฟเช•เซ‹เชฐเซเชจ เชเชจเซเชœเชฟเชจ

  • Proteus

  • เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเช• (เช•เซ‹เชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชฒเช–เซ‹)

6 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชฎเชค โ€‹โ€‹เช†เชชเซเชฏเซ‹. 2 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซ‚เชฐ เชฐเชนเซเชฏเชพ.

เชคเชฎเซ‡ เชœเซ‡ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹ เชคเซ‡เชฎเชพเช‚ เชคเชฎเซ‡ เชถเซเช‚ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹?

  • เชฎเชจเซ‡ เชเชกเชช เชœเซ‹เชˆเช เช›เซ‡

  • เชฎเชจเซ‡ เชธเซ‡เชŸเช…เชช/เชฒเซ‰เชจเซเชšเชจเซ€ เชธเชฐเชณเชคเชพ เชœเซ‹เชˆเช เช›เซ‡

  • เชฎเชจเซ‡ เชเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ (API, เชนเซเช•เซเชธ) เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชตเชฟเช•เชฒเซเชชเซ‹ เชœเซ‹เชˆเช เช›เซ‡

  • เชนเซเช‚ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชฅเซ€ เช–เซเชถ เช›เซเช‚

  • เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเช• (เช•เซ‹เชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชฒเช–เซ‹)

8 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชฎเชค โ€‹โ€‹เช†เชชเซเชฏเซ‹. 1 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซ‚เชฐ เชฐเชนเซเชฏเซ‹.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹