ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขืจ ื‘ืึทื’ืขื’ืขื ื™ืฉ 0x0A DC7831 ื“ืขืฃ ืงืึธืŸ ื ื™ื–ืฉื ื™ ื ืึธื•ื•ื’ืึธืจืึธื“ ืื•ื™ืฃ 16 ืคืขื‘ืจื•ืืจ, ืžื™ืจ ื“ืขืจืœืื ื’ื˜ ืึท ื‘ืึทืจื™ื›ื˜ ื•ื•ืขื’ืŸ ื“ื™ ื’ืจื•ื ื˜ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ ื‘ื™ื™ื ืขืจื™ ืงืึธื“ ืขืžื™ืึทืœื™ื™ืฉืึทืŸ ืื•ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ - ืึท ืขืžื•ืœืึทื˜ืึธืจ ืคื•ืŸ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืคึผืœืึทื˜ืคืึธืจืžืข. Copycat.

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืžื™ื˜ืœ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ, ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ื“ื™ื‘ื•ื’ื’ืขืจ ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืงืœื™ื™ืŸ ื“ื™ื ืึทืžื™ืฉ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข.

ืคึผืจืขื”ื™ืกื˜ืึธืจื™

ื ืœืึทื ื’ ืฆื™ื™ึทื˜ ืฆื•ืจื™ืง ืื™ืŸ ืึท ื’ืึทืœืึทืงืกื™ ื•ื•ื™ื™ึทื˜ ื•ื•ื™ื™ึทื˜ ืึทื•ื•ืขืง

ื ืคึผืึธืจ ืคื•ืŸ ื™ืึธืจืŸ ืฆื•ืจื™ืง ืื™ืŸ ืื•ื ื“ื–ืขืจ ืœืึทื‘ืึธืจืึทื˜ืึธืจื™ืข ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื ื•ื™ื˜ ืฆื• ืคืึธืจืฉืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืคื•ืŸ โ€‹โ€‹ืึท ืžื™ื˜ืœ. ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ื– ืงืึทืžืคึผืจืขืกื˜ ืื•ืŸ ืึทื ืคึผืึทืงื˜ ืžื™ื˜ ืึท ื‘ืึธืึธื˜ืœืึธืึทื“ืขืจ. ืขืจ ื”ืึธื˜ ื“ืึธืก ื’ืขื˜ืึธืŸ ืื•ื™ืฃ ืึท ื–ื™ื™ืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ืŸ ืื•ืคืŸ, ืขื˜ืœืขื›ืข ืžืึธืœ ืื™ื‘ืขืจื’ืขืจื•ืงื˜ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื–ื›ึผืจื•ืŸ. ืื•ืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ื–ื™ืš ื“ืขืžืึธืœื˜ ืึทืงื˜ื™ื•ื•ืœื™ ื™ื ื˜ืขืจืึทืงื˜ื™ื“ ืžื™ื˜ ื“ื™ ืคึผืขืจื™ืคืขืจืึทืœืก. ืื•ืŸ ืึทืœืข ื“ืขื ืื•ื™ืฃ ื“ื™ MIPS ื”ืึทืจืฅ.

ืคึฟืึทืจ ืึธื‘ื™ืขืงื˜ื™ื•ื• ืกื™ื‘ื•ืช, ื“ื™ ื‘ื ื™ืžืฆื ืขืžื•ืœืึทื˜ืึธืจืก ื”ืึธื‘ืŸ ื ื™ืฉื˜ ืคึผืึทืกืŸ ืื•ื ื“ื–, ืึธื‘ืขืจ ืžื™ืจ ื ืึธืš ื’ืขื•ื•ืืœื˜ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืงืึธื“. ื“ืขืจื ืึธืš ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข ืขืžื•ืœืึทื˜ืึธืจ, ื•ื•ืึธืก ื•ื•ืึธืœื˜ ื˜ืึธืŸ ื“ื™ ืžื™ื ื™ืžื•ื ืื•ืŸ ืœืึธื–ืŸ ืื•ื ื“ื– ืึทื ืคึผืึทืง ื“ื™ ื”ื•ื™ืคึผื˜ ืคื™ืจืžื•ื•ืึทืจืข. ืžื™ืจ ื’ืขืคืจื•ื•ื•ื˜ ืขืก ืื•ืŸ ืขืก ื’ืขืืจื‘ืขื˜. ืžื™ืจ ื’ืขื“ืึทื ืง, ื•ื•ืึธืก ืื•ื™ื‘ ืžื™ืจ ืœื™ื™ื’ืŸ ืคึผืขืจื™ืคืขืจืึทืœืก ืฆื• ืื•ื™ืš ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคื™ืจืžื•ื•ืึทืจืข. ืขืก ื”ืื˜ ื ื™ืฉื˜ ืฉืึทื˜ืŸ ื–ื™ื™ืขืจ ืคื™ืœ - ืื•ืŸ ืขืก ืื•ื™ืš ื’ืขืืจื‘ืขื˜. ืžื™ืจ ื’ืขื“ืึทื ืง ื•ื•ื™ื“ืขืจ ืื•ืŸ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืžืึทื›ืŸ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืขืžื•ืœืึทื˜ืึธืจ.

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืกื™ืกื˜ืขื ืขืžื•ืœืึทื˜ืึธืจ Copycat.

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ
ืคืืจื•ื•ืืก ืงืึธืคึผื™ืงืึทื˜?

ืขืก ืื™ื– ืึท ืฉืคึผื™ืœ ืžื™ื˜ ื•ื•ืขืจื˜ืขืจ.

  1. ืงืึทืคึผื™ืงืึทื˜ (ืขื ื’ืœื™ืฉ, ืกื•ื‘ืกื˜ืึทื ื˜ื™ื•ื• [หˆkษ’pษชkรฆt]) - ื ืึธื›ืžืึทื›ืŸ, ื ืึธื›ืžืึทื›ืŸ
  2. ืงืึทืฅ (ืขื ื’ืœื™ืฉ, ื ืึธืžืขืŸ [หˆkรฆt]) - ืงืึทืฅ, ืงืึทืฅ - ื“ื™ ื‘ืึทืœื™ื‘ืกื˜ืข ื›ื™ื™ึทืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงืจื™ื™ื™ื˜ืขืจื– ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜
  3. ื“ืขืจ ื‘ืจื™ื•ื• "ืง" ืื™ื– ืคึฟื•ืŸ ื“ื™ ืงืึธื˜ืœื™ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš

Copycat

ื•ื•ืขืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ, ื–ื™ื™ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืฆื™ืœืŸ ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜:

  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืฉืึทืคึฟืŸ ื ื™ื™ึท ืคึผืขืจื™ืคืขืจืึทืœืก, ืžืึทื“ื–ืฉื•ืœื–, ืคึผืจืึทืกืขืกืขืจ ืงืึธืจืขืก;
  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทืกืขืžื‘ืึทืœ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ืคื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืžืึทื“ื–ืฉื•ืœื–;
  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืœืึธื“ืŸ ืงื™ื™ืŸ ื‘ื™ื™ื ืขืจื™ ื“ืึทื˜ืŸ (ืคื™ืจืžื•ื•ืึทืจืข) ืื™ืŸ ื“ืขืจ ื–ื›ึผืจื•ืŸ ืคื•ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ;
  • ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืกื ืึทืคึผืฉืึทืฅ (ืกื ืึทืคึผืฉืึทืฅ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืฉื˜ืึทื˜);
  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื“ื•ืจืš ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ืขื‘ื•ื’ื’ืขืจ;
  • ืคื™ื™ึทืŸ ืžืึธื“ืขืจืŸ ืฉืคึผืจืึทืš ืคึฟืึทืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’.

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, Kotlin ืื™ื– ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ, ื“ื™ ื•ื™ื˜ืึธื‘ื•ืก ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ (ื“ืึธืก ืื™ื– ื•ื•ืขืŸ ืžืึทื“ื–ืฉื•ืœื– ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข ื“ื•ืจืš ื•ื•ื™ืจื˜ื•ืึทืœ ื“ืึทื˜ืŸ ื‘ื•ืกืขืก), JSON ื•ื•ื™ ื“ื™ ืžื™ื˜ืœ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคึฟืึธืจืžืึทื˜, ืื•ืŸ GDB RSP ื•ื•ื™ ื“ืขืจ ืคึผืจืึธื˜ืึธืงืึธืœ ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ื“ื™ื‘ื•ื’ื’ืขืจ.

ืื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ื– ื’ืขื’ืื ื’ืขืŸ ืื•ื™ืฃ ืคึฟืึทืจ ืึท ื‘ื™ืกืœ ืื™ื‘ืขืจ ืฆื•ื•ื™ื™ ื™ืึธืจ ืื•ืŸ ืื™ื– ืึทืงื˜ื™ื•ื•ืœื™ ืึธื ื’ืึธื™ื ื’. ื‘ืขืฉืึทืก ื“ืขื ืฆื™ื™ื˜, MIPS, x86, V850ES, ARM ืื•ืŸ PowerPC ืคึผืจืึทืกืขืกืขืจ ืงืึธืจืขืก ื–ืขื ืขืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“.

ื“ืขืจ ืคืจืื™ืขืงื˜ ื•ื•ืืงืกื˜ ืื•ืŸ ืขืก ืื™ื– ืฆื™ื™ื˜ ืขืก ืฆื• ืคืืจืฉื˜ืขืœืŸ ืคืืจืŸ ื‘ืจื™ื™ื˜ืŸ ืฆื™ื‘ื•ืจ. ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทื›ืŸ ืึท ื“ื™ื˜ื™ื™ืœื“ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืฉืคึผืขื˜ืขืจ, ืึธื‘ืขืจ ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืคืึธืงื•ืก ืื•ื™ืฃ ื ื™ืฆืŸ Kopycat.

ืคึฟืึทืจ ื“ื™ ืžืขืจืกื˜ ื•ืžื’ืขื“ื•ืœื“ื™ืง, ืึท ืคึผืจืึธืžืึธ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืคึฟื•ืŸ ืจื•ื ื’.

ืจื”ื™ื ืึธ ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ

ืœืึธืžื™ืจ ืฆื•ืจื™ืงืจื•ืคืŸ ืึทื– ืคืจื™ืขืจ ืคึฟืึทืจ ื“ื™ SMARTRHINO-2018 ื–ื™ืฆื•ื ื’, ืึท ืคึผืจืึธื‘ืข ืžื™ื˜ืœ "ืจื”ื™ื ืึธืกืขืจืึธืก" ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ืคึฟืึทืจ ืœืขืจื ืขืŸ ืคืึทืจืงืขืจื˜ ื™ื ื–ืฉืขื ื™ืขืจื™ืข ืกืงื™ืœื–. ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืกื˜ืึทื˜ื™ืง ืคื™ืจืžื•ื•ืึทืจืข ืึทื ืึทืœื™ืกื™ืก ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ืื™ืฆื˜ ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืœื™ื™ื’ืŸ "ืกืคึผื™ืงืขืจื–" ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ.

ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ:
1) Java 1.8
2) ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ืžืึธื“ื•ืœืข ื“ื–ืฉืขืคึผ ืฆื• ื ื•ืฆืŸ Python ืื™ืŸ ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ. ืื™ืจ ืงืขื ืขืŸ ื‘ื•ื™ืขืŸ ื“ื™ WHL ืžืึธื“ื•ืœืข Jep ืคึฟืึทืจ Windows ืึธืคึผืœืึธื“ื™ืจืŸ ื“ืึธ.

ืคึฟืึทืจ ื•ื•ื™ื ื“ืึธื•ื–:
1) com0com
2) ืฉื˜ื™ืœ

ืคึฟืึทืจ ืœื™ื ื•ืงืก:
1) ืกืึธืงืึทื˜

ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ Eclipse, IDA Pro ืึธื“ืขืจ radare2 ื•ื•ื™ ืึท GDB ืงืœื™ืขื ื˜.

ื•ื•ื™ ื˜ื•ื˜ ืขืก ืึทืจื‘ืขื˜?

ืื™ืŸ ืกื“ืจ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• "ืึทืกืขืžื‘ืึทืœ" ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ, ื•ื•ืึธืก ืื™ื– ืึทืŸ ืึทื ืึทืœืึธื’ ืคื•ืŸ ืึท ืคืึทืงื˜ื™ืฉ ืžื™ื˜ืœ.

ื“ื™ ืคืึทืงื˜ื™ืฉ ืžื™ื˜ืœ ("ืจื”ื™ื ืึธ") ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ื™ ื‘ืœืึธืง ื“ื™ืึทื’ืจืึทืžืข:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ื”ืื˜ ืึท ืžืึทื“ื–ืฉืึทืœืขืจ ืกื˜ืจื•ืงื˜ื•ืจ ืื•ืŸ ื“ื™ ืœืขืฆื˜ ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืึท 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 ืื™ื– ื“ืขืจ ื ืึธืžืขืŸ ืคื•ืŸ ืึท ื˜ืขืงืข ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ื•ื•ื™ ืคื™ืจืžื•ื•ืึทืจืข.

ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ืื•ืŸ ื–ื™ื™ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ื”ื•ื™ืคึผื˜ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืจืขืคึผืจื™ื–ืขื ื˜ื™ื“ ื“ื•ืจืš ื“ื™ ืคืืœื’ืขื ื“ืข ื“ื™ืึทื’ืจืึทืžืข:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื“ื™ ืงืจืึทื ื˜ ื˜ืขืกื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื™ื ื•ื•ืึทืœื•ื•ื– ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ COM ืคึผืึธืจืฅ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืึทืก (ื“ื™ื‘ืึทื’ UART ืื•ืŸ UART ืคึฟืึทืจ ื“ื™ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ืžืึธื“ื•ืœืข). ื“ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืึทืงื˜ื™ืฉ ืคึผืึธืจืฅ ืฆื• ื•ื•ืึธืก ื“ืขื•ื•ื™ืกืขืก ื–ืขื ืขืŸ ืงืึธื ื ืขืงื˜ืขื“ ืึธื“ืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ (ืคึฟืึทืจ ื“ืขื ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ com0com/socat).

ืขืก ื–ืขื ืขืŸ ื“ืขืจื•ื•ื™ื™ึทืœ ืฆื•ื•ื™ื™ ื”ื•ื™ืคึผื˜ ื•ื•ืขื’ืŸ ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืคึฟื•ืŸ ื“ื™ ืึทืจื•ื™ืก:

  • GDB RSP ืคึผืจืึธื˜ืึธืงืึธืœ (ืœื•ื™ื˜, ื“ื™ ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ืฉื˜ื™ืฆืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ื–ืขื ืขืŸ Eclipse / IDA / radare2);
  • ื™ื ืขืจืœืขืš ืขืžื•ืœืึทื˜ืึธืจ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” (Argparse ืึธื“ืขืจ Python).

ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ

ืื™ืŸ ืกื“ืจ ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ื™ UART ืคื•ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ืžืึทืฉื™ืŸ ื“ื•ืจืš ืึท ื•ื•ืึธืงื–ืึทืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ืคึฟืึทืจื‘ื•ื ื“ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืื™ื™ืŸ ืคึผืึธืจื˜ ืื™ื– ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ, ืื•ืŸ ื“ื™ ืจื’ืข ื“ื•ืจืš ืึท ื•ื•ืึธืงื–ืึทืœ ืคึผืจืึธื’ืจืึทื (PuTTY ืึธื“ืขืจ ืคืึทืจืฉื˜ืขืœืŸ):

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื ื™ืฆืŸ com0com

ื•ื•ื™ืจื˜ื•ืขืœ ืงืึทื ืคึผืึธืจืฅ ื–ืขื ืขืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ืžื™ื˜ ื“ื™ ืกืขื˜ืึทืคึผ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ com0com ืงื™ื˜ (ืงืึทื ืกืึธื•ืœ ื•ื•ืขืจืกื™ืข - C: ืคึผืจืึธื’ืจืึทื ื˜ืขืงืขืก (x86) com0comsetupั.exe, ืึธื“ืขืจ GUI ื•ื•ืขืจืกื™ืข - C: ืคึผืจืึธื’ืจืึทื ืคื™ืœืขืก (ืงืก86) com0comsetupg.exe):

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืงื•ืง ื“ื™ ื‘ืึธืงืกืขืก ื’ืขื‘ืŸ ื‘ืึทืคืขืจ ืึธื•ื•ื•ืขืจืจื•ืŸ ืคึฟืึทืจ ืึทืœืข ื‘ืืฉืืคืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืคึผืึธืจืฅ, ืึทื ื“ืขืจืฉ ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ื•ื•ืขื˜ ื•ื•ืึทืจื˜ืŸ ืคึฟืึทืจ ืึท ืขื ื˜ืคืขืจ ืคื•ืŸ ื“ื™ COM ืคึผืึธืจื˜.

ื ื™ืฆืŸ ืกืึธืงืึทื˜

ืื•ื™ืฃ UNIX ืกื™ืกื˜ืขืžืขืŸ, ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ ื–ืขื ืขืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื‘ืืฉืืคืŸ ื“ื•ืจืš ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื ื™ืฆืŸ ื“ื™ ืกืึธืงืึทื˜ ื ื•ืฆืŸ ืฆื• ื˜ืึธืŸ ื“ืึธืก, ื ืึธืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคึผืจืขืคื™ืงืก ืื™ืŸ ื“ื™ ืคึผืึธืจื˜ ื ืึธืžืขืŸ ื•ื•ืขืŸ ืื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ื“ืขื ืขืžื•ืœืึทื˜ืึธืจ socat:.

ืื™ื ืขืจืœืขื›ืขืจ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ (Argparse ืึธื“ืขืจ Python)

ื–ื™ื ื˜ Kopycat ืื™ื– ืึท ืงืึทื ืกืึธื•ืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ื’ื™ื˜ ืฆื•ื•ื™ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื–ื™ื™ึทืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–: Argparse ืื•ืŸ Python.

Argparse ืื™ื– ืึท CLI ื’ืขื‘ื•ื™ื˜ ืื™ืŸ Kopycat ืื•ืŸ ืื™ื– ืฉื˜ืขื ื“ื™ืง ื‘ื ื™ืžืฆื ืคึฟืึทืจ ืึทืœืขืžืขืŸ.

ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• CLI ืื™ื– ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ื™ื‘ืขืจื–ืขืฆืขืจ. ืฆื• ื ื•ืฆืŸ ืขืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ Jep Python ืžืึธื“ื•ืœืข ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ Python (ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ื™ื‘ืขืจื–ืขืฆืขืจ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ื™ืฃ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ืก ื”ื•ื™ืคึผื˜ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜).

ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ Python ืžืึธื“ื•ืœืข Jep

ืื•ื ื˜ืขืจ ืœื™ื ื•ืงืก ื“ื–ืฉืขืคึผ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื•ืจืš ืคึผื™ืคึผ:

pip install jep

ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ Jep ืื•ื™ืฃ Windows, ืื™ืจ ืžื•ื–ืŸ ืขืจืฉื˜ืขืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ Windows SDK ืื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ Microsoft Visual Studio. ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืžืื›ื˜ ืขืก ืึท ื‘ื™ืกืœ ื’ืจื™ื ื’ืขืจ ืคึฟืึทืจ ืื™ืจ ืื•ืŸ WHL ื‘ื•ื™ืขืŸ JEP ืคึฟืึทืจ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ Python ืคึฟืึทืจ Windows, ืึทื–ื•ื™ ื“ื™ ืžืึธื“ื•ืœืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข:

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 - ืคึฟืึทืจ Windows, copycat - ืคึฟืึทืจ ืœื™ื ื•ืงืก) ืฆื• ื“ืขืจ ืจืฉื™ืžื” ืคื•ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก DEFAULT_JVM_OPTS ืœื™ื™ื’ืŸ ืึทืŸ ื ืึธืš ืคึผืึทืจืึทืžืขื˜ืขืจ Djava.library.path - ืขืก ืžื•ื–ืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ืขื ื“ืจืš ืฆื• ื“ื™ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื–ืฉืขืคึผ ืžืึธื“ื•ืœืข.

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคึฟืึทืจ Windows ื–ืึธืœ ื–ื™ื™ืŸ ืึท ืฉื•ืจื” ื•ื•ื™ ื“ืึธืก:

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

ืœืึธื ื˜ืฉื™ื ื’ ืงืึธืคึผื™ืงืึทื˜

ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ืื™ื– ืึท ืงืึทื ืกืึธื•ืœ JVM ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื“ืขืจ ืงืึทื˜ืขืจ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื“ื•ืจืš ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฉืจื™ืคื˜ (ืฉ / ืงืžื“).

ื‘ืึทืคึฟืขืœืŸ ืฆื• ืœื•ื™ืคืŸ ืื•ื ื˜ืขืจ Windows:

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

ื‘ืึทืคึฟืขืœืŸ ืฆื• ืœื•ื™ืคืŸ ืื•ื ื˜ืขืจ ืœื™ื ื•ืงืก ื ื™ืฆืŸ ื“ื™ ืกืึธืงืึทื˜ ื ื•ืฆืŸ:

./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 ื–ืขื ืขืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ.

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืึท ืคึผื™ื ื˜ืœืขืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ 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 ืื™ืŸ ื“ื™ ืคืึธืจืขื ELF ื˜ืขืงืข (ืžืขื˜ืึท ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ืกื˜ืึธืจื“ ื“ืึธืจื˜).

ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ื ื•ืฆืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคื™ืจืžื•ื•ืึทืจืข ืึธืŸ ืžืขื˜ืึท ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข.

ื ืึธืš ืœืึธื ื˜ืฉื™ื ื’ Kopycat ืื™ืŸ IDA Pro, ืื™ืŸ ื“ื™ ื“ืขื‘ื•ื’ื’ืขืจ ืžืขื ื™ื• ื’ื™ื™ืŸ ืฆื• ื“ื™ ื ื•ืžืขืจ "ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ื‘ื•ื’ื’ืขืจ ..."ืื•ืŸ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ"ื•ื•ื™ื™ึทื˜ ื’ื“ื‘ ื“ื™ื‘ื•ื’ื’ืขืจ". ื•ื•ื™ื™ึทื˜ืขืจ, ืฉื˜ืขืœืŸ ื“ื™ ืงืฉืจ: ืžืขื ื™ื• ื“ืขื‘ื•ื’ื’ืขืจ - ืคึผืจืึธืฆืขืก ืึธืคึผืฆื™ืขืก ...

ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืึทืœื•ืขืก:

  • ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ - ืงื™ื™ืŸ ื•ื•ืขืจื˜
  • ื”ืึธืกื˜ื ืึทืžืข: 127.0.0.1 (ืึธื“ืขืจ ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ ืžืึทืฉื™ืŸ ื•ื•ื• Kopycat ืื™ื– ืคืœื™ืกื ื“ื™ืง)
  • ืคึผืึธืจื˜: ืงืกื ื•ืžืงืก

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื™ืฆื˜ ื“ื™ ื“ื™ื‘ืึทื’ื™ื ื’ ืงื ืขืคึผืœ ืื™ื– ื‘ืืจืขื›ื˜ื™ื’ื˜ (F9 ืฉืœื™ืกืœ):

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื’ื™ื˜ ืขืก ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ื“ืขื‘ื•ื’ื’ืขืจ ืžืึธื“ื•ืœืข ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ. IDA ื’ื™ื™ื˜ ืื™ืŸ ื“ื™ื‘ืึทื’ื™ื ื’ ืžืึธื“ืข, ื ืึธืš ืคึฟืขื ืฆื˜ืขืจ ื•ื•ืขืจืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜: ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ื•ื•ืขื’ืŸ ื“ืขื ืึธื ืœื™ื™ื’ืŸ.

ืื™ืฆื˜ ืžื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืึทืœืข ื“ื™ ื ืึธืจืžืึทืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื“ื™ ื“ื™ื‘ื•ื’ื’ืขืจ:

  • ืฉืจื™ื˜-ื“ื•ืจืš-ืฉืจื™ื˜ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– (ืฉืจื™ื˜ ืื™ืŸ ะธ ื˜ืจืขื˜ืŸ ืื™ื‘ืขืจ - ืฉืœื™ืกืœืขืŸ F7 ืื•ืŸ F8 ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™);
  • ืกื˜ืึทืจื˜ื™ื ื’ ืื•ืŸ ืคึผืึธื•ื–ื™ื ื’ ื“ื•ืจื›ืคื™ืจื•ื ื’;
  • ืงืจื™ื™ื™ื˜ื™ื ื’ ื‘ืจื™ื™ืงืคึผืึธื™ื ืฅ ืคึฟืึทืจ ื‘ื™ื™ื“ืข ืงืึธื“ ืื•ืŸ ื“ืึทื˜ืŸ (F2 ืฉืœื™ืกืœ).

ืงืึทื ืขืงื˜ื™ื ื’ ืฆื• ืึท ื“ื™ื‘ื•ื’ื’ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ืžื™ื™ื ืขืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืงืึธื“. ื“ื™ ืงืจืึทื ื˜ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฉื˜ืขืœืข ืžื•ื–ืŸ ื–ื™ื™ืŸ ื“ื™ ืึทื“ืจืขืก 0x08006A74 - ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ืคึฟื•ื ืงืฆื™ืข Reset_Handler. ืื•ื™ื‘ ืื™ืจ ืžืขื’ื™ืœืข ืึทืจืึธืคึผ ื“ื™ ืœื™ืกื˜ื™ื ื’, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ืจื•ืคืŸ ื”ื•ื™ืคึผื˜. ืื™ืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ื“ืขื ืœื•ื™ืคึฟืขืจ ืื•ื™ืฃ ื“ืขื ืฉื•ืจื” (ืึทื“ืจืขืก 0x08006ABE) ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืœื•ื™ืคืŸ ื‘ื™ื– ืœื•ื™ืคึฟืขืจ (ืฉืœื™ืกืœ F4).

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื“ืขืจื ืึธืš ืื™ืจ ืงืขื ื˜ ื“ืจื™ืงืŸ F7 ืฆื• ืึทืจื™ื™ึทืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ื”ื•ื™ืคึผื˜.

ืื•ื™ื‘ ืื™ืจ ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ ืคืึธืจื–ืขืฆืŸ ืคึผืจืึธืฆืขืก (F9 ืฉืœื™ืกืœ), ืื•ืŸ ื“ื™ "ื‘ื™ื˜ืข ื•ื•ืึทืจื˜ืŸ" ืคึฟืขื ืฆื˜ืขืจ ื•ื•ืขื˜ ื“ืขืจืฉื™ื™ึทื ืขืŸ ืžื™ื˜ ืึท ืื™ื™ืŸ ืงื ืขืคึผืœ ื•ืคื”ืขื ื’ืขืŸ:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื•ื•ืขืŸ ืื™ืจ ื“ืจื™ืงืŸ ื•ืคื”ืขื ื’ืขืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืงืึธื“ ืื™ื– ืกื•ืกืคึผืขื ื“ืขื“ ืื•ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืืจื‘ืœื™ื‘ืŸ ืคึฟื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืึทื“ืจืขืก ืื™ืŸ ื“ื™ ืงืึธื“ ื•ื•ื• ืขืก ืื™ื– ื™ื ื˜ืขืจืึทืคึผื˜ื™ื“.

ืื•ื™ื‘ ืื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ืขื ืงืึธื“, ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืฉื•ืจื•ืช ืื™ืŸ ื“ื™ ื˜ืขืจืžื™ื ืึทืœืก ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืงืึทื ืคึผืึธืจืฅ:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ื“ื™ "ืฉื˜ืึทื˜ ื‘ื™ื™ืคึผืึทืก" ืฉื•ืจื” ื™ื ื“ื™ืงื™ื™ืฅ ืึทื– ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ืžืึธื“ื•ืœืข ืื™ื– ืกื•ื•ื™ื˜ืฉื˜ ืฆื• ื“ื™ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹ืจื™ืกื™ื•ื•ื™ื ื’ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ 'ืก ืงืึทื ืคึผืึธืจื˜.

ืื™ืฆื˜ ืื™ืŸ ื“ื™ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ื•ื•ืึธืงื–ืึทืœ (COM29 ืื™ืŸ ื“ื™ ื‘ื™ืœื“) ืื™ืจ ืงืขื ืขืŸ ืึทืจื™ื™ึทืŸ ืงืึทืžืึทื ื“ื– ืื™ืŸ ืœื•ื™ื˜ ืžื™ื˜ ื“ื™ ืจื”ื™ื ืึธ ืคึผืจืึธื˜ืึธืงืึธืœ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ "MEOW" ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื“ื™ ืฉื˜ืจื™ืงืœ "ืžื•ืจ-ืžื•ืจ" ืฆื• ื“ื™ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ื•ื•ืึธืงื–ืึทืœ:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื ืึธื›ืžืึทื›ืŸ ืžื™ืจ ื ื™ืฉื˜ ื’ืึธืจ

ื•ื•ืขืŸ ืื™ืจ ื‘ื•ื™ืขืŸ ืึทืŸ ืขืžื•ืœืึทื˜ืึธืจ, ืื™ืจ ืงืขื ืขืŸ ืงืœื™ื™ึทื‘ืŸ ื“ื™ ืžื“ืจื’ื” ืคื•ืŸ ื“ืขื˜ืึทืœ / ืขืžื™ืึทืœื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืžื™ื˜ืœ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ืžืึธื“ื•ืœืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขืžื™ืึทืœื™ื™ื˜ื™ื“ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขื’ืŸ:

  • ื“ื™ ืžื™ื˜ืœ ืื™ื– ื’ืึธืจ ืขืžื™ืึทืœื™ื™ื˜ื™ื“ ืžื™ื˜ ืึท ืคื•ืœ ื’ืึทื ื’ ืคื•ืŸ ืงืึทืžืึทื ื“ื–;
  • AT ืงืึทืžืึทื ื“ื– ื–ืขื ืขืŸ ืขืžื™ืึทืœื™ื™ื˜ื™ื“, ืื•ืŸ ื“ื™ ื“ืึทื˜ืŸ ื˜ื™ื™ึทืš ืื™ื– ื‘ืืงื•ืžืขืŸ ืคึฟื•ืŸ ื“ื™ COM ืคึผืึธืจื˜ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื™ืกื˜ืขื;
  • ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ื’ื™ื˜ ื’ืึทื ืฅ ื“ืึทื˜ืŸ ืจื™ื“ืขืจืขืงืฉืึทืŸ ืฆื• ื“ื™ ืคืึทืงื˜ื™ืฉ ืžื™ื˜ืœ;
  • ื•ื•ื™ ืึท ืคึผืฉื•ื˜ ืฉื˜ื•ื ื•ื•ืึธืก ืฉื˜ืขื ื“ื™ืง ืงืขืจื˜ "ื’ื•ื˜".

ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื ื™ืฆื˜ ื“ื™ ืจื’ืข ืฆื•ื’ืึทื ื’ - ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ื‘ืœื•ืขื˜ืึธืึธื˜ื” ืžืึธื“ื•ืœืข ืคึผืขืจืคืึธืจืžื– ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื ืึธืš ื•ื•ืึธืก ืขืก ืกื•ื•ื™ื˜ืฉื™ื– ืฆื• ื“ื™ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹"ืคึผืจืึธืงืกื™ื™ื ื’" ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื“ื™ COM ืคึผืึธืจื˜ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื™ืกื˜ืขื ืฆื• ื“ื™ UART ืคึผืึธืจื˜ ืคื•ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ.

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื–ืืœ ืก ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ืคึผืฉื•ื˜ ื™ื ืกื˜ืจืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืงืึธื“ ืื™ืŸ ืคืึทืœ ืขื˜ืœืขื›ืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืคึผืขืจื™ืคืขืจื™ืข ืื™ื– ื ื™ืฉื˜ ื™ืžืคึผืœืึทืžืขื ืึทื“. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืึท ื˜ื™ื™ึทืžืขืจ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืงืึทื ื˜ืจืึธื•ืœื™ื ื’ ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฆื• ื“ืžืึท ืื™ื– ื ื™ืฉื˜ ื‘ืืฉืืคืŸ (ื“ื™ ื˜ืฉืขืง ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ws2812b_wait, ืจืึทืกืคึผืึธืœืึธื“ื–ืฉืขื ื ื•ื™ ืคึฟืึทืจ ืึทื“ืจืขืกื• 0x08006840), ื“ืขืžืึธืœื˜ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ื•ื•ืขื˜ ืฉื˜ืขื ื“ื™ืง ื•ื•ืึทืจื˜ืŸ ืคึฟืึทืจ ื“ื™ ืคืึธืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ืคืึทืจื ื•ืžืขืŸืœื™ื’ืŸ ื‘ื™ื™ึท 0x200004C4ื•ื•ืึธืก ื•ื•ื™ื™ื–ื˜ ื“ื™ ืึทืงื™ืึทืคึผืึทื ืกื™ ืคื•ืŸ ื“ื™ DMA ื“ืึทื˜ืŸ ืฉื•ืจื”:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืžื™ืจ ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ืึทืจื•ื ื“ืขื ืกื™ื˜ื•ืึทืฆื™ืข ื“ื•ืจืš ืžืึทื ื™ื•ืึทืœื™ ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ืคืึธืŸ ืคืึทืจื ื•ืžืขืŸ ืžื™ื“ ื ืึธืš ื™ื ืกื˜ืึธืœื™ื ื’ ืขืก. ืื™ืŸ IDA Pro, ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืึท ืคึผื™ื˜ื”ืึธืŸ ืคึฟื•ื ืงืฆื™ืข ืื•ืŸ ืจื•ืคืŸ ืขืก ืื™ืŸ ืึท ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜, ืื•ืŸ ืฉื˜ืขืœืŸ ื“ื™ ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜ ื–ื™ืš ืื™ืŸ ื“ื™ ืงืึธื“ ื ืึธืš ืฉืจื™ื™ื‘ืŸ ื“ื™ ื•ื•ืขืจื˜ 1 ืฆื• ื“ื™ ืคืึธืŸ ืคืึทืจื ื•ืžืขืŸ.

ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜ ื”ืึทื ื“ืœืขืจ

ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืึทืคึฟืŸ ืึท ืคึผื™ื˜ื”ืึธืŸ ืคื•ื ืงืฆื™ืข ืื™ืŸ IDA. ืžืขื ื™ื• ื˜ืขืงืข - ืกืงืจื™ืคึผื˜ ื‘ืึทืคึฟืขืœ ...

ืœื™ื™ื’ ืึท ื ื™ื™ึทืข ืกื ื™ืคึผืึทื˜ ืื™ืŸ ื“ืขืจ ืจืฉื™ืžื” ืื•ื™ืฃ ื“ื™ ืœื™ื ืงืก, ื’ืขื‘ืŸ ืขืก ืึท ื ืึธืžืขืŸ (ืœืžืฉืœ, ื‘ืคึผื˜),
ืื™ืŸ ื“ื™ ื˜ืขืงืกื˜ ืคืขืœื“ ืื•ื™ืฃ ื“ื™ ืจืขื›ื˜, ืึทืจื™ื™ึทืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืงืึธื“:

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

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื ืึธืš ื“ืขื, ื’ื™ื˜ ืœื•ื™ืคืŸ ืื•ืŸ ื ืึธืขื ื˜ ื“ื™ ืฉืจื™ืคื˜ ืคึฟืขื ืฆื˜ืขืจ.

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ื’ื™ื™ืŸ ืฆื• ื“ื™ ืงืึธื“ ืื™ืŸ 0x0800688A, ืฉื˜ืขืœืŸ ืึท ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜ (F2 ืฉืœื™ืกืœ), ืจืขื“ืึทื’ื™ืจืŸ ืขืก (ืงืึธื ื˜ืขืงืกื˜ ืžืขื ื™ื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื‘ืจืขื›ืŸ ืคื•ื ื˜...), ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืฉืจื™ืคื˜ ื˜ื™ืคึผ ืฆื• ืคึผื™ื˜ื”ืึธืŸ:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ
ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื•ื™ื‘ ื“ื™ ืงืจืึทื ื˜ ืคืึธืŸ ื•ื•ืขืจื˜ ืคืึทืจื ื•ืžืขืŸ ื™ืงื•ื•ืึทืœื– 1, ืื™ืจ ื–ืึธืœ ื•ื™ืกืคื™ืจืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข skip_dma ืื™ืŸ ื“ื™ ืฉืจื™ืคื˜ ืฉื•ืจื”:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื•ื™ื‘ ืื™ืจ ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืคึฟืึทืจ ื“ื•ืจื›ืคื™ืจื•ื ื’, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ื˜ืจื™ื’ืขืจื™ื ื’ ืคื•ืŸ ื“ื™ ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜ ื”ืึทื ื“ืœืขืจ ืงืึธื“ ืื™ืŸ ื“ื™ IDA ืคึฟืขื ืฆื˜ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื•ืจืš ืฉื•ืจื” Skipping wait ws2812.... ืื™ืฆื˜ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ื•ื•ืขื˜ ื ื™ืฉื˜ ื•ื•ืึทืจื˜ืŸ ืคึฟืึทืจ ื“ื™ ืคืึธืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ืคืึทืจื ื•ืžืขืŸ.

ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ

ืขืžื™ืึทืœื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ ืฆื•ืœื™ื‘ ืคื•ืŸ ืขืžื™ืึทืœื™ื™ืฉืึทืŸ ืื™ื– ืึทื ืœื™ื™ืงืœื™ ืฆื• ืคืึทืจืฉืึทืคืŸ ืคืจื™ื™ื“ ืื•ืŸ ืคืจื™ื™ื“. ืขืก ืื™ื– ืคื™ืœ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ืื•ื™ื‘ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื”ืขืœืคึผืก ื“ื™ ืคืึธืจืฉืขืจ ืฆื• ื–ืขืŸ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื–ื›ึผืจื•ืŸ ืึธื“ืขืจ ืคืึทืจืœื™ื™ื’ืŸ ื“ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืคื•ืŸ ืคึฟืขื“ืขื.

ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ื™ื™ึทื–ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืคืึทืจืœื™ื™ื’ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืฆื•ื•ื™ืฉืŸ RTOS ื˜ืึทืกืงืก. ืื™ืจ ื–ืึธืœ ืขืจืฉื˜ืขืจ ืคึผื•ื™ื–ืข ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืงืึธื“ ืื•ื™ื‘ ืขืก ืื™ื– ืคืœื™ืกื ื“ื™ืง. ืื•ื™ื‘ ืื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืคื•ื ืงืฆื™ืข bluetooth_task_entry ืฆื• ื“ื™ ืคึผืจืึทืกืขืกื™ื ื’ ืฆื•ื•ื™ื™ึทื’ ืคื•ืŸ ื“ื™ "LED" ื‘ืึทืคึฟืขืœ (ืึทื“ืจืขืก 0x080057B8), ื“ืขืžืึธืœื˜ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื•ื•ืึธืก ืื™ื– ืขืจืฉื˜ืขืจ ื‘ืืฉืืคืŸ ืื•ืŸ ื“ืขืžืึธืœื˜ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ืกื™ืกื˜ืขื ืจื™ื™ ledControlQueueHandle ืขื˜ืœืขื›ืข ืึธื ื–ืึธื’.

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื™ืจ ื–ืึธืœ ืฉื˜ืขืœืŸ ืึท ื‘ืจื™ื™ืงืคึผื•ื™ื ื˜ ืฆื• ืึทืงืกืขืก ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ledControlQueueHandle, ืจืึทืกืคึผืึธืœืึธื“ื–ืฉืขื ื ื•ื™ ืคึฟืึทืจ ืึทื“ืจืขืกื• 0x20000624 ืื•ืŸ ืคืึธืจื–ืขืฆืŸ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื“ื™ ืงืึธื“:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ื”ืึทืœื˜ืŸ ื•ื•ืขื˜ ืขืจืฉื˜ืขืจ ืคืึทืœืŸ ืื™ืŸ ืึทื“ืจืขืก 0x080057CA ืื™ื™ื“ืขืจ ืื™ืจ ืจื•ืคืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข osMailAlloc, ื“ืขืžืึธืœื˜ ื‘ื™ื™ึท ื“ื™ ืึทื“ืจืขืก 0x08005806 ืื™ื™ื“ืขืจ ืื™ืจ ืจื•ืคืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข osMailPut, ื“ืขืžืึธืœื˜ ื ืึธืš ืึท ื‘ืฉืขืช - ืฆื• ื“ื™ ืึทื“ืจืขืก 0x08005BD4 (ืื™ื™ื“ืขืจ ืจื•ืคืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข osMailGet), ื•ื•ืึธืก ื’ืขื”ืขืจื˜ ืฆื• ื“ืขืจ ืคึฟื•ื ืงืฆื™ืข leds_task_entry (ื’ืขืคื™ืจื˜-ืึทืจื‘ืขื˜), ื•ื•ืึธืก ืื™ื–, ื“ื™ ื˜ืึทืกืงืก ืกื•ื•ื™ื˜ืฉื˜, ืื•ืŸ ืื™ืฆื˜ ื“ื™ ื’ืขืคื™ืจื˜-ืึทืจื‘ืขื˜ ื‘ืืงื•ืžืขืŸ ืงืึธื ื˜ืจืึธืœ.

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื™ืŸ ื“ืขื ืคึผืฉื•ื˜ ื•ื•ืขื’ ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื•ื•ื™ RTOS ื˜ืึทืกืงืก ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ.

ืคื•ืŸ ืงื•ืจืก, ืื™ืŸ ืคืึทืงื˜, ื“ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืคื•ืŸ ื˜ืึทืกืงืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜, ืึธื‘ืขืจ ื ื™ืฆืŸ ืึทืŸ ืขืžื•ืœืึทื˜ืึธืจ, ื˜ืจืึทืงื™ื ื’ ื“ืขื ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ื•ื•ืขืจื˜ ื•ื•ื™ื™ื ื™ืงืขืจ ืœืึทื‘ืึธืจื™ืึทืก.

ื“ืึธ ืื™ืจ ืงืขื ื˜ ื–ืขืŸ ืึท ืงื•ืจืฅ ื•ื•ื™ื“ืขื ืคื•ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืงืึทื˜ืขืจ ืื•ืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ IDA Pro.

ืงืึทื˜ืขืจ ืžื™ื˜ Radare2

ืื™ืจ ืงืขื ื˜ ื ื™ืฉื˜ ืื™ื’ื ืึธืจื™ืจืŸ ืึทื–ืึท ืึท ื•ื ื™ื•ื•ืขืจืกืึทืœ ื’ืขืฆื™ื™ึทื’ ื•ื•ื™ Radare2.

ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ื ื™ืฆืŸ r2, ื“ื™ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

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

ืงืึทื˜ืขืจ ื‘ื ื™ืžืฆื ืื™ืฆื˜ (dc) ืื•ืŸ ืคึผื•ื™ื–ืข ื“ื•ืจื›ืคื™ืจื•ื ื’ (Ctrl + C).

ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜, r2 ื”ืื˜ ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื’ื“ื‘ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื–ื›ึผืจื•ืŸ ืื•ื™ืกืœื™ื™ื’ ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื“ืขื, ื‘ืจื™ื™ืงืคึผืึธื™ื ืฅ ืื•ืŸ ืกื˜ืขืคึผืก ื˜ืึธืŸ ื ื™ื˜ ืึทืจื‘ืขื˜ (ืงืึธืžืึทื ื“ ds). ืžื™ืจ ื”ืึธืคืŸ ืึทื– ื“ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคืึทืจืคืขืกื˜ื™ืงื˜ ื‘ืึทืœื“.

ืคืœื™ืกื ื“ื™ืง ืžื™ื˜ Eclipse

ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ื ื™ืฆืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืื™ื– ืฆื• ื“ื™ื‘ืึทื’ื™ื ื’ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืžื™ื˜ืœ ื•ื•ืึธืก ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“. ืคึฟืึทืจ ืงืœืขืจื™ื˜ื™, ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ื ื•ืฆืŸ ื“ื™ ืจื”ื™ื ืึธ ืคื™ืจืžื•ื•ืึทืจืข. ืื™ืจ ืงืขื ืขืŸ ืืจืืคืงืืคื™ืข ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืงื•ื•ืืœืŸ ืคื•ื  ื“ืึทื ืขื˜.

ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ Eclipse ืคึฟื•ืŸ ื“ืขื ื’ืึทื ื’ ื•ื•ื™ ืึท IDE ืกื™ืกื˜ืขื ื•ื•ืึธืจืงื‘ืขื ื˜ืฉ ืคึฟืึทืจ STM32.

ื›ึผื“ื™ ื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ื–ืึธืœ ืœืึธื“ืŸ ืคื™ืจืžื•ื•ืึทืจืข ื’ืœื™ื™ืš ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ ืื™ืŸ Eclipse, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ firmware=null ืฆื• ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืงืึทื˜ืขืจ ื‘ืึทืคึฟืขืœ:

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

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ื‘ืึทื’ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ

ืื™ืŸ Eclipse, ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ื™ ืžืขื ื™ื• ืœื•ื™ืคืŸ - ื“ื™ื‘ืึทื’ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ... ืื™ืŸ ื“ื™ ืคึฟืขื ืฆื˜ืขืจ ื•ื•ืึธืก ืึธืคึผืขื ืก, ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ GDB ื”ืึทืจื“ื•ื•ืึทืจืข ื“ื™ื‘ืึทื’ื™ื ื’ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ื ื™ื™ึทืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื“ืขืžืึธืœื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืงืจืึทื ื˜ ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ื‘ืึทื’ื™ื ื’ ืื•ื™ืฃ ื“ื™ "ื”ื•ื™ืคึผื˜" ืงื•ื•ื™ื˜ืœ:

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื•ื™ืฃ ื“ื™ "ื“ืขื‘ื•ื’ื’ืขืจ" ืงื•ื•ื™ื˜ืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ GDB ื‘ืึทืคึฟืขืœ:
${openstm32_compiler_path}arm-none-eabi-gdb

ืื•ืŸ ืื•ื™ืš ืึทืจื™ื™ึทืŸ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคึฟืึทืจ ืงืึทื ืขืงื˜ื™ื ื’ ืฆื• ื“ื™ GDB ืกืขืจื•ื•ืขืจ (ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ืคึผืึธืจื˜):

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืื•ื™ืฃ ื“ื™ "ืกื˜ืึทืจื˜ืึทืคึผ" ืงื•ื•ื™ื˜ืœ, ืื™ืจ ืžื•ื–ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • ื’ืขื‘ืŸ ื˜ืฉืขืงืงื‘ืึธืงืก ืœืึธื“ืŸ ื‘ื™ืœื“ (ืึทื–ื•ื™ ืึทื– ื“ื™ ืึทืกืขืžื‘ืึทืœื“ ืคื™ืจืžื•ื•ืึทืจืข ื‘ื™ืœื“ ืื™ื– ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ);
  • ื’ืขื‘ืŸ ื˜ืฉืขืงืงื‘ืึธืงืก ืžืึทืกืข ืกื™ืžื‘ืึธืœืก;
  • ืœื™ื™ื’ ืงืึทื˜ืขืจ ื‘ืึทืคึฟืขืœ: set $pc = *0x08000004 (ืฉื˜ืขืœืŸ ื“ื™ ืคึผื™ืกื™ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืฆื• ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืื™ืŸ ืึทื“ืจืขืก 0x08000004 - ื“ื™ ืึทื“ืจืขืก ืื™ื– ืกื˜ืึธืจื“ ื“ืึธืจื˜ ResetHandler).

ืฆื•ืงื•ืงื  ื–ื™ืš, ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ื˜ืขืงืข ืคึฟื•ืŸ Eclipse, ื“ื™ ืึธืคึผืฆื™ืขืก ืœืึธื“ืŸ ื‘ื™ืœื“ ะธ ืœื•ื™ืคืŸ ืงืึทืžืึทื ื“ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื•ื•ื™ื™ึทื–ืŸ.

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื ืึธืš ืงืœื™ืงื™ื ื’ Debug, ืื™ืจ ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ื“ื™ื‘ื•ื’ื’ืขืจ ืžืึธื“ืข:

  • ืฉืจื™ื˜ ื“ื•ืจืš ืฉืจื™ื˜ ืงืึธื“ ื“ื•ืจื›ืคื™ืจื•ื ื’
    ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ
  • ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื‘ืจืขืึทืงืคึผืึธื™ื ืฅ
    ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ื˜ืึธืŸ. ืขืงืœื™ืคึผืกืข ื”ืื˜, ื”ืžืž ... ืขื˜ืœืขื›ืข ืงื•ื•ืขืจืงืก ... ืื•ืŸ ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ืœืขื‘ืŸ ืžื™ื˜ ื–ื™ื™. ืฆื•ื ื‘ื™ื™ืฉืคึผื™ืœ, ืื•ื™ื‘ ื“ืขืจ ืึธื ื–ืึธื’ "ืงื™ื™ืŸ ืžืงื•ืจ ื‘ื ื™ืžืฆื ืคึฟืึทืจ "0x0โ€ณ" ื•ื•ืขืŸ ืื™ืจ ืึธื ื”ื™ื™ื‘ ื“ื™ ื“ื™ื‘ื•ื’ื’ืขืจ, ื•ื™ืกืคื™ืจืŸ ื“ื™ ืกื˜ืขืคึผ ื‘ืึทืคึฟืขืœ (F5)

ืจื”ื™ื ืึธืกืขืจืึธืก ืื™ืŸ ืึท ืงืึทืฅ - ืœื•ื™ืคืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืื™ืŸ ื“ื™ Kopycat ืขืžื•ืœืึทื˜ืึธืจ

ืึธื ืฉื˜ืึธื˜ ืึท ืžืกืงื ื

ืขืžื•ืœืึทื˜ื™ื ื’ ื’ืขื‘ื•ื™ืจืŸ ืงืึธื“ ืื™ื– ืึท ื–ื™ื™ืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ื–ืึทืš. ืขืก ืื™ื– ืžืขื’ืœืขืš ืคึฟืึทืจ ืึท ืžื™ื˜ืœ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืฆื• ื“ื™ื‘ืึทื’ื™ื ื’ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืึธืŸ ืึท ืคืึทืงื˜ื™ืฉ ืžื™ื˜ืœ. ืคึฟืึทืจ ืึท ืคืึธืจืฉืขืจ, ืขืก ืื™ื– ืึท ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ื ืึทืžื™ืฉ ืงืึธื“ ืึทื ืึทืœื™ืกื™ืก, ื•ื•ืึธืก ืื™ื– ื ื™ื˜ ืฉื˜ืขื ื“ื™ืง ืžืขื’ืœืขืš ืืคื™ืœื• ืžื™ื˜ ืึท ืžื™ื˜ืœ.

ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืกืคึผืขืฉืึทืœืึทืกืฅ ืึท ื’ืขืฆื™ื™ึทื’ ื•ื•ืึธืก ืื™ื– ื‘ืึทืงื•ื•ืขื, ืžืึทื“ืขืจืึทื˜ืœื™ ืคึผืฉื•ื˜ ืื•ืŸ ื˜ื•ื˜ ื ื™ืฉื˜ ื ืขืžืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืžื™ ืื•ืŸ ืฆื™ื™ื˜ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืœื•ื™ืคืŸ.

ืฉืจื™ื™ื‘ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื•ื•ืขื’ืŸ ื“ื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืžื™ื˜ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืขืžื•ืœืึทื˜ืึธืจืก. ืžื™ืจ ืœืึทื“ืŸ ืื™ืจ ืฆื• ื“ื™ืกืงื•ื˜ื™ืจืŸ ืื•ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ืขื ื˜ืคึฟืขืจืŸ ืฉืืœื•ืช.

ื‘ืœื•ื™ื– ืจืขื’ื™ืกื˜ืจื™ืจื˜ ื ื™ืฆืขืจืก ืงืขื ืขืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ื™ ื™ื‘ืขืจื‘ืœื™ืง. ืกื™ื™ืŸ ืืจื™ื™ืŸื‘ื™ื˜ืข.

ืคึฟืึทืจ ื•ื•ืึธืก ื ื•ืฆืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ?

  • ืื™ืš ืึทื ื˜ื•ื•ื™ืงืœืขืŸ (ื“ื™ื‘ืึทื’) ืคื™ืจืžื•ื•ืึทืจืข

  • ืื™ืš ื‘ื™ืŸ ืจื™ืกืขืจื˜ืฉื™ื ื’ ืคื™ืจืžื•ื•ืึทืจืข

  • ืื™ืš ืงืึทื˜ืขืจ ืฉืคึผื™ืœืขืจื™ื™ึท (Dendi, Sega, PSP)

  • ืขืคึผืขืก ืึทื ื“ืขืจืฉ (ืฉืจื™ื™ื‘ืŸ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ)

7 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 2 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ื•ื•ืึธืก ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื˜ืึธืŸ ืื™ืจ ื ื•ืฆืŸ ืฆื• ืขืžื™ืึทืœื™ื™ื˜ ื’ืขื‘ื•ื™ืจืŸ ืงืึธื“?

  • QEMU

  • ื™ื™ื ื”ืึธืจืŸ ืžืึธื˜ืึธืจ

  • ืคึผืจืึธื˜ืขื•ืก

  • ืขืคึผืขืก ืึทื ื“ืขืจืฉ (ืฉืจื™ื™ื‘ืŸ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ)

6 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 2 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ื•ื•ืึธืก ื•ื•ืึธืœื˜ ืื™ืจ ื•ื•ื™ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ ืื™ืจ ื ื•ืฆืŸ?

  • ืื™ืš ื•ื•ื™ืœืŸ ื’ื™ื›ืงื™ื™ึทื˜

  • ืื™ืš ื•ื•ื™ืœืŸ ื™ื– ืคื•ืŸ ืกืขื˜ืึทืคึผ / ืงืึทื˜ืขืจ

  • ืื™ืš ื•ื•ื™ืœืŸ ืžืขืจ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื“ื™ ืขืžื•ืœืึทื˜ืึธืจ (ืึทืคึผื™, ื›ื•ืงืก)

  • ืื™ืš ื‘ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืžื™ื˜ ืึทืœืฅ

  • ืขืคึผืขืก ืึทื ื“ืขืจืฉ (ืฉืจื™ื™ื‘ืŸ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ)

8 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 1 ื‘ืื ื•ืฆืขืจ ื”ืื˜ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’