เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจฎเฉ€เจŸเจฟเฉฐเจ— เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ 0x0A DC7831 DEF CON เจจเจฟเจœเจผเจจเฉ€ เจจเฉ‹เจตเจ—เฉ‹เจฐเฉ‹เจก 16 เจซเจฐเจตเจฐเฉ€ เจจเฉ‚เฉฐ, เจ…เจธเฉ€เจ‚ เจฌเจพเจˆเจจเจฐเฉ€ เจ•เฉ‹เจก เจ‡เจฎเฉ‚เจฒเฉ‡เจธเจผเจจ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจ†เจชเจฃเฉ‡ เจตเจฟเจ•เจพเจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ - เจ‡เฉฑเจ• เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจ•เจพเจชเฉ€เจ•เฉˆเจŸ.

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฆเฉฑเจธเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจกเจฟเจตเจพเจˆเจธ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ, เจกเฉ€เจฌเจ—เจฐ เจจเจพเจฒ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฐเจจเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจฆเจพ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจเจพ เจนเฉˆเฅค

prehistory

เจฌเจนเฉเจค เจฆเฉ‚เจฐ เจ‡เฉฑเจ• เจ—เจฒเฉˆเจ•เจธเฉ€ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจฎเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚

เจ•เฉเจ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจธเจพเจกเฉ€ เจชเฉเจฐเจฏเฉ‹เจ—เจธเจผเจพเจฒเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจกเจฟเจตเจพเจˆเจธ เจฆเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจธเฉ€. เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจฌเฉ‚เจŸเจฒเฉ‹เจกเจฐ เจจเจพเจฒ เจธเฉฐเจ•เฉเจšเจฟเจค เจ…เจคเฉ‡ เจ…เจจเจชเฉˆเจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‰เจธเจจเฉ‡ เจ‡เจน เจฌเจนเฉเจค เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ•เฉ€เจคเจพ, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ•เจˆ เจตเจพเจฐ เจธเจผเจฟเจซเจŸ เจ•เฉ€เจคเจพเฅค เจ…เจคเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‡ เจซเจฟเจฐ เจชเฉˆเจฐเฉ€เจซเจฟเจฐเจฒเจพเจ‚ เจจเจพเจฒ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจ•เฉ€เจคเฉ€. เจ…เจคเฉ‡ เจ‡เจน เจธเจญ MIPS เจ•เฉ‹เจฐ 'เจคเฉ‡ เจนเฉˆเฅค

เจ‰เจฆเฉ‡เจธเจผ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡, เจ‰เจชเจฒเจฌเจง เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจธเจพเจกเฉ‡ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจธเจจ, เจชเจฐ เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ เจตเฉ€ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจธเฉ€เฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจ–เฉเจฆ เจฆเจพ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ, เจœเฉ‹ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจฎเฉเฉฑเจ– เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจ…เจจเจชเฉˆเจ• เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ‡เจน เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ. เจ…เจธเฉ€เจ‚ เจธเฉ‹เจšเจฟเจ†, เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจฎเฉเฉฑเจ– เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจ•เจฐเจจ เจฒเจˆ เจชเฉˆเจฐเฉ€เจซเจฟเจฐเจฒ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ‡เจน เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฆเฉเจ–เฉ€ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ† - เจ…เจคเฉ‡ เจ‡เจน เจ•เฉฐเจฎ เจตเฉ€ เจนเฉ‹เจ‡เจ†. เจ…เจธเฉ€เจ‚ เจฆเฉเจฌเจพเจฐเจพ เจธเฉ‹เจšเจฟเจ† เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ.

เจจเจคเฉ€เจœเจพ เจ‡เฉฑเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจธเจฟเจธเจŸเจฎ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจธเฉ€ เจ•เจพเจชเฉ€เจ•เฉˆเจŸ.

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“
เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ•เจฟเจ‰เจ‚?

เจธเจผเจฌเจฆเจพเจ‚ เจฆเจพ เจจเจพเจŸเจ• เจนเฉˆเฅค

  1. copycat (เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€, เจจเจพเจ‚เจต [หˆkษ’pษชkรฆt]) - เจจเจ•เจฒ เจ•เจฐเจจ เจตเจพเจฒเจพ, เจจเจ•เจฒ เจ•เจฐเจจ เจตเจพเจฒเจพ
  2. เจฌเจฟเฉฑเจฒเฉ€ (เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€, เจจเจพเจ‚เจต [หˆkรฆt]) - เจฌเจฟเฉฑเจฒเฉ€, เจฌเจฟเฉฑเจฒเฉ€ - เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจธเจฟเจฐเจœเจฃเจนเจพเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเจพ เจชเจธเฉฐเจฆเฉ€เจฆเจพ เจœเจพเจจเจตเจฐ
  3. เจ…เฉฑเจ–เจฐ โ€œKโ€ เจ•เฉ‹เจŸเจฒเจฟเจจ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจคเฉ‹เจ‚ เจนเฉˆ

เจ•เจพเจชเฉ€เจ•เฉˆเจŸ

เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡, เจฌเจนเฉเจค เจ–เจพเจธ เจŸเฉ€เจšเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ:

  • เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจจเจตเฉ‡เจ‚ เจชเฉˆเจฐเฉ€เจซเจฟเจฐเจฒ, เจฎเฉ‹เจกเฉ€เจŠเจฒ, เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉ‹เจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ;
  • เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเฉ‹เจกเฉ€เจŠเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจกเจฟเจตเจพเจˆเจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ;
  • เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฌเจพเจˆเจจเจฐเฉ€ เจกเฉ‡เจŸเจพ (เจซเจฐเจฎเจตเฉ‡เจ…เจฐ) เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจกเจฟเจตเจพเจˆเจธ เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ;
  • เจธเจจเฉˆเจชเจธเจผเจพเจŸ (เจธเจฟเจธเจŸเจฎ เจธเจŸเฉ‡เจŸ เจฆเฉ‡ เจธเจจเฉˆเจชเจธเจผเจพเจŸ) เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ;
  • เจฌเจฟเจฒเจŸ-เจ‡เจจ เจกเฉ€เจฌเจ—เจฐ เจฆเฉเจ†เจฐเจพ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ;
  • เจตเจฟเจ•เจพเจธ เจฒเจˆ เจตเจงเฉ€เจ† เจ†เจงเฉเจจเจฟเจ• เจญเจพเจธเจผเจพเฅค

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ•เฉ‹เจŸเจฒเจฟเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจฌเฉฑเจธ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ (เจ‡เจน เจ‰เจฆเฉ‹เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจตเจฐเจšเฉเจ…เจฒ เจกเจพเจŸเจพ เจฌเฉฑเจธเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจธเฉฐเจšเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ), เจกเจฟเจตเจพเจˆเจธ เจตเจฐเจฃเจจ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจœเฉ‹เจ‚ JSON, เจ…เจคเฉ‡ เจกเฉ€เจฌเจ—เจฐ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจฒเจˆ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจœเฉ‹เจ‚ GDB RSPเฅค

เจตเจฟเจ•เจพเจธ เจฆเฉ‹ เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจœเจพเจฐเฉ€ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ, MIPS, x86, V850ES, ARM, เจ…เจคเฉ‡ PowerPC เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉ‹เจฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจเฅค

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจง เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจตเจฟเจ†เจชเจ• เจœเจจเจคเจพ เจฒเจˆ เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ. เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเฉ‡เจฐเจตเจพ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ•เจฐเจพเจ‚เจ—เฉ‡, เจชเจฐ เจนเฉเจฃ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡เฅค

เจธเจญ เจคเฉ‹เจ‚ เจฌเฉ‡เจšเฉˆเจจ เจฒเจˆ, เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฆเจพ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจฎเฉ‹ เจธเฉฐเจธเจ•เจฐเจฃ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจฒเจฟเฉฐเจ• เจจเฉ‚เฉฐ.

เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจฐเจพเจˆเจจเฉ‹

เจฏเจพเจฆ เจ•เจฐเฉ€เจ เจ•เจฟ เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ SMARTRHINO-2018 เจ•เจพเจจเจซเจฐเฉฐเจธ เจฒเจˆ, เจฐเจฟเจตเจฐเจธ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจนเฉเจจเจฐ เจธเจฟเจ–เจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจฏเฉฐเจคเจฐ โ€œRhinocerosโ€ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจตเจฟเฉฑเจš เจธเจฅเจฟเจฐ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ‡เจธ เจฒเฉ‡เจ–.

เจนเฉเจฃ เจ†เจ‰ "เจธเจชเฉ€เจ•เจฐ" เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจเฅค

เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€:
1) Java 1.8
2) เจชเจพเจˆเจฅเจจ เจ…เจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจœเฉ€เจช เจเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจชเจพเจˆเจฅเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆเฅค เจคเฉเจธเฉ€เจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฒเจˆ WHL เจฎเฉ‹เจกเฉ€เจŠเจฒ Jep เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹.

เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฒเจˆ:
1) com0com
2) เจชเฉเจŸเฉ€

เจฒเฉ€เจจเจ•เจธ เจฒเจˆ:
1) เจธเฉ‹เจ•เจŸ

เจคเฉเจธเฉ€เจ‚ Eclipse, IDA Pro เจœเจพเจ‚ radare2 เจจเฉ‚เฉฐ GDB เจ•เจฒเจพเจ‡เฉฐเจŸ เจตเจœเฉ‹เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เจธ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ?

เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจกเจฟเจตเจพเจˆเจธ เจจเฉ‚เฉฐ "เจ‡เจ•เฉฑเจ เจพ" เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจ…เจธเจฒเฉ€ เจกเจฟเจตเจพเจˆเจธ เจฆเจพ เจเจจเจพเจฒเจพเจ— เจนเฉˆ.

เจ…เจธเจฒ เจฏเฉฐเจคเจฐ (โ€œเจฐเจพเจ‡เจจเฉ‹โ€) เจจเฉ‚เฉฐ เจฌเจฒเจพเจ• เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจพเจกเจฏเฉ‚เจฒเจฐ เจฌเจฃเจคเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจ…เฉฐเจคเจฎ เจตเจฐเจšเฉเจ…เจฒ เจกเจฟเจตเจพเจˆเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• 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 เจธเจฟเจธเจŸเจฎเจพเจ‚ 'เจคเฉ‡, เจตเจฐเจšเฉเจ…เจฒ COM เจชเฉ‹เจฐเจŸเจพเจ‚ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฆเฉเจ†เจฐเจพ socat เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฃเจพเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ; เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจฟเจฐเจซ เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจชเฉ‹เจฐเจŸ เจจเจพเจฎ เจตเจฟเฉฑเจš เจ…เจ—เฉ‡เจคเจฐ เจฆเจฟเจ“เฅค socat:.

เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ (เจ†เจฐเจ—เจชเจพเจฐเจธ เจœเจพเจ‚ เจชเจพเจˆเจฅเจจ)

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เฉฑเจ• เจ•เฉฐเจธเฉ‹เจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ, เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจ‡เจธเจฆเฉ‡ เจ†เจฌเจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเจ•เจฒเจช เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ: เจ†เจฐเจ—เจชเจพเจฐเจธ เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจเฅค

เจ…เจฐเจ—เจชเจพเจฐเจธ เจ‡เฉฑเจ• CLI เจนเฉˆ เจœเฉ‹ เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจนเจฎเฉ‡เจธเจผเจพ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจชเจฟเจ• CLI เจชเจพเจˆเจฅเจจ เจ‡เฉฐเจŸเจฐเจชเฉเจฐเฉ‡เจŸเจฐ เจนเฉˆเฅค เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเฉ‡เจช เจชเจพเจˆเจฅเจจ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจชเจพเจ‡เจฅเจจ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ (เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจชเจพเจˆเจฅเจจ เจ‡เฉฐเจŸเจฐเจชเฉเจฐเฉ‡เจŸเจฐ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ)เฅค

เจชเจพเจˆเจฅเจจ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจœเฉ‡เจชเฉ€ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ

เจฒเฉ€เจจเจ•เจธ เจœเฉ‡เจช เจฆเฉ‡ เจคเจนเจฟเจค เจชเจพเจˆเจช เจฆเฉเจ†เจฐเจพ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

pip install jep

เจตเจฟเฉฐเจกเฉ‹เจœเจผ 'เจคเฉ‡ เจœเฉ‡เจช เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ SDK เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค Microsoft เจตเจฟเจœเจผเฉเจ…เจฒ เจธเจŸเฉ‚เจกเฉ€เจ“ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจฅเฉ‹เฉœเจพ เจ†เจธเจพเจจ เจฌเจฃเจพ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ เจ…เจคเฉ‡ WHL เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฒเจˆ เจชเจพเจˆเจฅเจจ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฒเจˆ เจœเฉ‡เจˆเจชเฉ€, เจ‡เจธ เจฒเจˆ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

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

เจœเฉ‡เจช เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

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"

เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจ‡เฉฑเจ• เจ•เฉฐเจธเฉ‹เจฒ JVM เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆเฅค เจฒเจพเจ‚เจš เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ (sh/cmd) เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก:

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

socat เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเฉ€เจจเจ•เจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก:

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

  • -g 23646 โ€” TCP เจชเฉ‹เจฐเจŸ เจœเฉ‹ GDB เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฒเจˆ เจ–เฉเฉฑเจฒเฉเจนเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ;
  • -n rhino โ€” เจฎเฉเฉฑเจ– เจธเจฟเจธเจŸเจฎ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเจพ เจจเจพเจฎ (เจ…เจธเฉˆเจ‚เจฌเจฒเจก เจกเจฟเจตเจพเจˆเจธ);
  • -l user โ€” เจฎเฉเฉฑเจ– เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเจพ เจจเจพเจฎ;
  • -y library โ€” เจกเจฟเจตเจพเจˆเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจ–เฉ‹เจœเจฃ เจฒเจˆ เจฎเจพเจฐเจ—;
  • firmwarerhino_pass.bin - เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฐเจ—;
  • COM26 เจ…เจคเฉ‡ COM28 เจตเจฐเจšเฉเจ…เจฒ COM เจชเฉ‹เจฐเจŸ เจนเจจเฅค

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ‚เจชเจŸ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ Python > (เจœ Argparse >):

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

IDA เจชเฉเจฐเฉ‹ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค

เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจš IDA เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจธเจฐเฉ‹เจค เจซเจพเจˆเจฒ เจตเจœเฉ‹เจ‚ Rhino เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ ELF เจซเจพเจˆเจฒ (เจฎเฉˆเจŸเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‰เฉฑเจฅเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ)เฅค

เจคเฉเจธเฉ€เจ‚ เจฎเฉˆเจŸเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจฎเฉเฉฑเจ– เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

IDA เจชเฉเจฐเฉ‹ เจตเจฟเฉฑเจš เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเฉ€เจฌเฉฑเจ—เจฐ เจฎเฉ€เจจเฉ‚ เจตเจฟเฉฑเจš เจ†เจˆเจŸเจฎ 'เจคเฉ‡ เจœเจพเจ“ โ€œเจกเฉ€เจฌเจ—เจฐ เจธเจตเจฟเฉฑเจš เจ•เจฐเฉ‹..."เจ…เจคเฉ‡ เจšเฉเจฃเฉ‹"เจฐเจฟเจฎเฉ‹เจŸ 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 เจชเฉเจฐเฉ‹ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเจพเจˆเจฅเจจ เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจตเจฟเฉฑเจš เจ•เจพเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจซเจฒเฉˆเจ— เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒ 1 เจฒเจฟเจ–เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจชเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจฐเฉเฉฑเจเฉ‡.

เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจนเฉˆเจ‚เจกเจฒเจฐ

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ IDA เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเจพเจˆเจฅเจจ เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจˆเจเฅค เจฎเฉ€เจจเฉ‚ เจซเจพเจˆเจฒ - เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เจฎเจพเจ‚เจก...

เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจธเจจเจฟเฉฑเจชเจŸ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹, เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจพเจฎ เจฆเจฟเจ“ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฌเฉ€เจชเฉ€เจŸเฉ€),
เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš, เจซเฉฐเจ•เจธเจผเจจ เจ•เฉ‹เจก เจฆเจฐเจœ เจ•เจฐเฉ‹:

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

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ เจฆเจฌเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจšเจฒเจพเจ“ เจ…เจคเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฐเจกเฉ‹ เจจเฉ‚เฉฐ เจฌเฉฐเจฆ เจ•เจฐเฉ‹เฅค

เจนเฉเจฃ เจฆเฉ‡ เจ•เฉ‹เจก 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ 0x0800688A, เจ‡เฉฑเจ• เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ (F2 เจ•เฉเฉฐเจœเฉ€) เจธเฉˆเจŸ เจ•เจฐเฉ‹, เจ‡เจธเจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเฉ‹ (เจชเฉเจฐเจธเฉฐเจ— เจฎเฉ€เจจเฉ‚ เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจฆเจพ เจธเฉฐเจชเจพเจฆเจจ เจ•เจฐเฉ‹...), เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เจฟเจธเจฎ เจจเฉ‚เฉฐ เจชเจพเจˆเจฅเจจ 'เจคเฉ‡ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹:

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“
เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจœเฉ‡เจ•เจฐ เจฎเฉŒเจœเฉ‚เจฆเจพ เจซเจฒเฉˆเจ— เจฎเฉเฉฑเจฒ เจนเฉˆ เจฐเฉเฉฑเจเฉ‡ 1 เจฆเฉ‡ เจฌเจฐเจพเจฌเจฐ เจนเฉˆ, เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเฉฐเจ•เจธเจผเจจ เจšเจฒเจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ skip_dma เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš:

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฒเจˆ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจนเฉˆเจ‚เจกเจฒเจฐ เจ•เฉ‹เจก เจฆเจพ เจŸเจฐเจฟเจ—เจฐเจฟเฉฐเจ— IDA เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฒเจพเจˆเจจ เจฆเฉเจ†เจฐเจพ Skipping wait ws2812.... เจนเฉเจฃ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจซเจฒเฉˆเจ— เจจเฉ‚เฉฐ เจฐเฉ€เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ เจฐเฉเฉฑเจเฉ‡.

เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเจพเจฒ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต

เจ‡เจฎเฉ‚เจฒเฉ‡เจธเจผเจจ เจฆเฉ€ เจ–เจผเจพเจคเจฐ เจ‡เจฎเฉ‚เจฒเฉ‡เจธเจผเจจ เจ…เจจเฉฐเจฆ เจ…เจคเฉ‡ เจ…เจจเฉฐเจฆ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ‡เจน เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฆเจฟเจฒเจšเจธเจช เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจ–เฉ‹เจœเจ•เจฐเจคเจพ เจจเฉ‚เฉฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจœเจพเจ‚ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ€ เจ†เจชเจธเฉ€ เจคเจพเจฒเจฎเฉ‡เจฒ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ RTOS เจ•เจพเจฐเจœเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจ•เจฟเจตเฉ‡เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉ‹เจก เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ‡เจน เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเฉ‹ เจฌเจฒเฉ‚เจŸเฉเฉฑเจฅ_เจŸเจพเจธเจ•_เจเจ‚เจŸเจฐเฉ€ "LED" เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ (เจชเจคเจพ 0x080057B8), เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉ€ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจธเจฟเจธเจŸเจฎ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจญเฉ‡เจœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ ledControlQueueHandle เจ•เฉเจ เจธเฉเจจเฉ‡เจนเจพเฅค

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ ledControlQueueHandle'เจคเฉ‡ เจธเจฅเจฟเจค 0x20000624 เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เฉ‹:

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจŸเจพเจช เจชเจนเจฟเจฒเจพเจ‚ เจชเจคเฉ‡ 'เจคเฉ‡ เจนเฉ‹เจตเฉ‡เจ—เจพ 0x080057CA เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ osMailAlloc, เจซเจฟเจฐ เจชเจคเฉ‡ 'เจคเฉ‡ 0x08005806 เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ osMailPut, เจซเจฟเจฐ เจ•เฉเจ เจฆเฉ‡เจฐ เจฌเจพเจ…เจฆ - เจชเจคเฉ‡ 'เจคเฉ‡ 0x08005BD4 (เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ osMailGet), เจœเฉ‹ เจ•เจฟ เจซเฉฐเจ•เจธเจผเจจ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆ leds_task_entry (LED-เจŸเจพเจธเจ•), เจฏเจพเจจเฉ€, เจ•เฉฐเจฎ เจฌเจฆเจฒ เจ—เจ เจนเจจ, เจ…เจคเฉ‡ เจนเฉเจฃ LED-เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค

เจ‡เฉฑเจ• เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เฉˆเจ‚เจกเจพ - เจ•เฉ‹เจชเฉ€เจ•เฉˆเจŸ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฒเจพเจ“

เจ‡เจธ เจธเจฐเจฒ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจธเจฅเจพเจชเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ RTOS เจŸเจพเจธเจ• เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจฌเฉ‡เจธเจผเฉฑเจ•, เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ€ เจ†เจชเจธเฉ€ เจคเจพเจฒเจฎเฉ‡เจฒ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจธ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจเจพ เจ˜เฉฑเจŸ เจฎเจฟเจนเจจเจคเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ IDA เจชเฉเจฐเฉ‹ เจฆเฉ‡ เจจเจพเจฒ เจเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจตเฉ€เจกเฉ€เจ“ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

Radare2 เจจเจพเจฒ เจฒเจพเจ‚เจš เจ•เจฐเฉ‹

เจคเฉเจธเฉ€เจ‚ Radare2 เจตเจฐเจ—เฉ‡ เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจŸเฉ‚เจฒ เจจเฉ‚เฉฐ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡เฅค

r2 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ, เจ•เจฎเจพเจ‚เจก เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€:

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

เจนเฉเจฃ เจ‰เจชเจฒเจฌเจง เจฒเจพเจ‚เจš เจ•เจฐเฉ‹ (dc) เจ…เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เฉ‹ (Ctrl+C)เฅค

เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ‡เจธ เจธเจฎเฉ‡เจ‚, เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ gdb เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉ‡เจ†เจ‰เจŸ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ r2 เจตเจฟเฉฑเจš เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจ; เจ‡เจธ เจ•เจฐเจ•เฉ‡, เจฌเฉเจฐเฉ‡เจ•เจชเฉเจ†เจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจธเจŸเฉˆเจชเจธ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ (เจ•เจฎเจพเจ‚เจก ds). เจธเจพเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจœเจฒเจฆเฉ€ เจนเฉ€ เจ เฉ€เจ• เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจˆเจฒเฉˆเจชเจธ เจจเจพเจฒ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจกเจฟเจฌเฉˆเฉฑเจฒ เจ•เฉ€เจคเฉ‡ เจœเจพ เจฐเจนเฉ‡ เจกเจฟเจตเจพเจˆเจธ เจฆเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจเจพเฅค เจธเจชเจธเจผเจŸเจคเจพ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฐเจพเจˆเจจเฉ‹ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจตเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจคเฉเจธเฉ€เจ‚ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‹เจ‚.

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• IDE เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ Eclipse เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ STM32 เจฒเจˆ เจธเจฟเจธเจŸเจฎ เจตเจฐเจ•เจฌเฉˆเจ‚เจš.

เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจˆเจฒเฉˆเจชเจธ เจตเจฟเฉฑเจš เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ firmware=null เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจฒเจพเจ‚เจš เจ•เจฎเจพเจ‚เจก เจฒเจˆ:

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

เจกเฉ€เจฌเฉฑเจ— เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจธเฉˆเจŸ เจ…เจช เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

เจˆเจฒเฉˆเจชเจธ เจตเจฟเฉฑเจš, เจฎเฉ€เจจเฉ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเฉ‹ เจšเจฒเจพเจ“ - เจกเฉ€เจฌเฉฑเจ— เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚... เจ–เฉเฉฑเจฒเจฃ เจตเจพเจฒเฉ€ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš, เจญเจพเจ— เจตเจฟเฉฑเจš 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹