Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž‡αž»αŸ† 0x0A DC7831 DEF CON Nizhny Novgorod αž“αŸ…αžαŸ’αž„αŸƒαž‘αžΈ 16 αžαŸ‚αž€αž»αž˜αŸ’αž—αŸˆ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžŸαŸ’αžαžΈαž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš αž“αž·αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžœαŸαž‘αž·αž€αžΆαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„ αž†αŸ’αž˜αžΆαž…αž˜αŸ’αž›αž„.

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž§αž”αž€αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž”αž„αŸ’αž αžΆαž‰αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αžαžΆαž˜αžœαž“αŸ’αžαžαžΌαž…αž˜αž½αž™αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αŸ”

αžŸαž˜αŸαž™αž”αž»αžšαŸαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš

αž€αžΆαž›αž–αžΈαž™αžΌαžšαž™αžΆαžšαžŽαžΆαžŸαŸ‹αž˜αž€αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαž‘αžΆαž€αŸ‹αžŸαŸŠαžΈαž†αŸ’αž„αžΆαž™

αž–αžΈαžšαž”αžΈαž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž“αŸ’αž‘αžΈαžšαž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸŠαžΎαž”αž’αž„αŸ’αž€αŸαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸƒαž§αž”αž€αžšαžŽαŸαž˜αž½αž™αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž”αŸ‹ αž“αž·αž„αž–αž“αŸ’αž›αžΆαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž‚αžΆαžαŸ‹β€‹αž’αŸ’αžœαžΎβ€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡β€‹αž€αŸ’αž“αž»αž„β€‹αžœαž·αž’αžΈβ€‹αžŠαŸβ€‹αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αžŠαŸ„αž™β€‹αž”αŸ’αžαžΌαžšβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž€αŸ’αž“αž»αž„β€‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†β€‹αž…αŸ’αžšαžΎαž“β€‹αžŠαž„αŸ” αž αžΎαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžαŸ’αž›αž½αž“αžœαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž‚αŸ’αžšαžΏαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαŸ” αž αžΎαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž“αŸ…αž›αžΎαžŸαŸ’αž“αžΌαž› MIPS αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž‚αŸ„αž›αž”αŸ†αžŽαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ‚αž›αž˜αžΆαž“αž˜αž·αž“αžŸαž˜αž“αžΉαž„αž™αžΎαž„αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αŸ…αžαŸ‚αž…αž„αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αž“αžΉαž„αž’αŸ’αžœαžΎαž’αž”αŸ’αž”αž”αžšαž˜αžΆ αž“αž·αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž–αž“αŸ’αž›αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αž™αžΎαž„αž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αžœαžΆαž αžΎαž™αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž™αžΎαž„αž”αžΆαž“αž‚αž·αžαžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αž“αŸ’αžαŸ‚αž˜αž‚αŸ’αžšαžΏαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αžœαžΆαž˜αž·αž“αžˆαžΊαž…αžΆαž”αŸ‹αžαŸ’αž›αžΆαŸ†αž„αž‘αŸ - αž αžΎαž™αžœαžΆαž€αŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αž„αžŠαŸ‚αžšαŸ” αž™αžΎαž„αž‚αž·αžαž˜αŸ’αžαž„αž‘αŸ€αž αž αžΎαž™αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž–αŸαž‰αž›αž€αŸ’αžαžŽαŸˆαŸ”

αž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš αž†αŸ’αž˜αžΆαž…αž˜αŸ’αž›αž„.

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat
αž αŸαžαž»αž’αŸ’αžœαžΈ Kopycat?

αž˜αžΆαž“αž€αžΆαžšαž›αŸαž„αž“αŸ…αž›αžΎαž–αžΆαž€αŸ’αž™αŸ”

  1. copycat (αž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ noun [ˈkΙ’pΙͺkΓ¦t]) - αž’αŸ’αž“αž€αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜, αž’αŸ’αž“αž€αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜
  2. αž†αŸ’αž˜αžΆ (αž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ noun [ˈkΓ¦t]) - cat, cat - αžŸαžαŸ’αžœαžŸαŸ†αžŽαž–αŸ’αžœαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž‚αž˜αŸ’αžšαŸ„αž„
  3. αž’αž€αŸ’αžŸαžš "K" αž‚αžΊαž˜αž€αž–αžΈαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Kotlin

αž†αŸ’αž˜αžΆαž…αž˜αŸ’αž›αž„

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž‚αŸ„αž›αžŠαŸ…αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αŸ–

  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‚αŸ’αžšαžΏαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžαŸ’αž˜αžΈ αž˜αŸ‰αžΌαžŒαž»αž› αžŸαŸ’αž“αžΌαž›αžαž½αžšαž€αŸ’αž”αžΆαž›
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αžαž–αžΈαž˜αŸ‰αžΌαžŒαž»αž›αž•αŸ’αžŸαŸαž„αŸ—αŸ”
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αŸ„αž›αž–αžΈαžš (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹) αž‘αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αžαŸ”
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžšαžΌαž”αžαž (αžšαžΌαž”αžαžαž“αŸƒαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ’αžšαž–αŸαž“αŸ’αž’);
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™;
  • αž—αžΆαžŸαžΆαž‘αŸ†αž“αžΎαž”αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› Kotlin αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‘αžΆαž“αž€αŸ’αžšαž»αž„ (αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž–αŸαž›αžŠαŸ‚αž›αž˜αŸ‰αžΌαžŒαž»αž›αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžαžΆαž˜αžšαž™αŸˆαž‘αžΆαž“αž€αŸ’αžšαž»αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αž·αž˜αŸ’αž˜αž·αž) JSON αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž–αž·αž–αžŽαŸŒαž“αžΆαž§αž”αž€αžšαžŽαŸ αž“αž·αž„ GDB RSP αž‡αžΆαž–αž·αž’αžΈαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αžΆαž“αž”αž“αŸ’αžαž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž„αž–αžΈαžšαž†αŸ’αž“αžΆαŸ† αž αžΎαž™αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸαŸ‡ αžŸαŸ’αž“αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš MIPS, x86, V850ES, ARM αž“αž·αž„ PowerPC αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž€αŸ†αž–αž»αž„αžšαžΈαž€αž…αž˜αŸ’αžšαžΎαž“ αž αžΎαž™αžŠαž›αŸ‹αž–αŸαž›αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž αžΆαž‰αžœαžΆαžŠαž›αŸ‹αžŸαžΆαž’αžΆαžšαžŽαž‡αž“αž€αžΆαž“αŸ‹αžαŸ‚αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αŸ” αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Kopycat αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αž·αž“αž…αŸαŸ‡αž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹αž”αŸ†αž•αž»αž αž€αŸ†αžŽαŸ‚αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž”αžΆαž“αž–αžΈ αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹.

Rhino αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜

αž…αžΌαžšαž™αžΎαž„αž…αžΆαŸ†αžαžΆαž˜αž»αž“αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘ SMARTRHINO-2018 αž§αž”αž€αžšαžŽαŸαžŸαžΆαž€αž›αŸ’αž”αž„ "រមអស" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž‡αŸ†αž“αžΆαž‰αžœαž·αžŸαŸ’αžœαž€αž˜αŸ’αž˜αž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαŸ” αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž‹αž·αžαž·αžœαž“αŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡.

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž“αŸ’αžαŸ‚αž˜ "αžœαžΆαž‚αŸ’αž˜αž·αž“" αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αŸ”

αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš:
1) Java 1.8
2) Python αž“αž·αž„αž˜αŸ‰αžΌαžŒαž»αž› αž‡ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ Python αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΌαžŒαž»αž› WHL Jep αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows αž‘αžΆαž‰αž™αž€αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΈαž“αžŠαžΌαŸ–
1) com0com
2) PuTTY

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αžΈαž“αž»αž…αŸ–
1) socat

αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎ Eclipse, IDA Pro ឬ radare2 αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ GDB αŸ”

αžαžΎαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…?

αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžš "αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†" αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αž αžŠαŸ‚αž›αž‡αžΆ analogue αž“αŸƒαž§αž”αž€αžšαžŽαŸαž–αž·αžαŸ”

αž§αž”αž€αžšαžŽαŸαž–αž·αž ("រមអស") αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž”αŸ’αž›αž»αž€αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ 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"]
  ]
}

αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ αž•αŸ’αž“αŸ‚αž€ αž”αŸ‰αžΆαžšαŸ‰αžΆαžŸαŸŠαžΈαž αž‚αžΊαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž•αŸ’αž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αžαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αŸ”

αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αž αž“αž·αž„αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αžœαžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž…αž˜αŸ’αž”αž„αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ†αžŽαžΆαž„αžŠαŸ„αž™αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž…αŸ’αžšαž€ COM αž“αŸƒ OS αž…αž˜αŸ’αž”αž„ (αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ UART αž“αž·αž„ UART αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸ) αŸ” αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαž…αŸ’αžšαž€αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹ αž¬αž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αž (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžš com0com/socat).

αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“αžœαž·αž’αžΈαžŸαŸ†αžαžΆαž“αŸ‹αž–αžΈαžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ…αŸ–

  • αž–αž·αž’αžΈαž€αžΆαžš GDB RSP (αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαž–αž·αž’αžΈαž€αžΆαžšαž“αŸαŸ‡αž‚αžΊ Eclipse / IDA / radare2);
  • αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαžΆαž„αž€αŸ’αž“αž»αž„ (Argparse ឬ Python) αŸ”

αž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αž

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ UART αž“αŸƒαž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αžαžΆαž“αžΈαž™ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αžαž˜αž½αž™αž‚αžΌαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž…αŸ’αžšαž€αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž αžΎαž™αž‘αžΈαž–αžΈαžšαžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ’αžαžΆαž“αžΈαž™ (PuTTY αž¬αž’αŸαž€αŸ’αžšαž„αŸ‹)αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ com0com

αž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžŠαŸ†αž‘αžΎαž„αž–αžΈαž§αž”αž€αžšαžŽαŸ com0com (αž€αŸ†αžŽαŸ‚αž€αž»αž„αžŸαžΌαž› - C: αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (x86)com0comsetupс.exe, αž¬αž€αŸ†αžŽαŸ‚ GUI - C: αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (x86)com0comsetupg.exe):

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž’αž”αŸ‹ αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αŸ’αžšαž€αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž‘αŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž–αžΈαž…αŸ’αžšαž€ COM αŸ”

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ socat

αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž™αžΌαž“αžΈαž€ αž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ socat αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αž»αž–αŸ’αžœαž”αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžˆαŸ’αž˜αŸ„αŸ‡αž…αŸ’αžšαž€αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ socat:.

αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αž“αž»αž„ (Argparse ឬ Python)

αžŠαŸ„αž™αžŸαžΆαžš Kopycat αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αž„αžŸαžΌαž› αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž•αŸ’αžαž›αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αžœαžαŸ’αžαž» αž“αž·αž„αž’αžαŸαžšαžšαž”αžŸαŸ‹αžœαžΆαŸ– Argparse αž“αž·αž„ Python αŸ”

Argparse αž‚αžΊαž‡αžΆ CLI αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ Kopycat αž αžΎαž™αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαŸ”

CLI αž‡αŸ†αž“αž½αžŸαž‚αžΊαž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚ Python αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαžœαžΆ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΌαžŒαž»αž› Jep Python αž αžΎαž™αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Python (αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚ Python αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ) αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Python module Jep

αž“αŸ…αž€αŸ’αžšαŸ„αž˜ Linux Jep αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαžΆαž˜αžšαž™αŸˆ pip:

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.

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš emulator batch αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (copycat.bat - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows, αž†αŸ’αž˜αžΆαž…αž˜αŸ’αž›αž„ - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αžΈαž“αž»αž…) αž‘αŸ…αž”αž‰αŸ’αž‡αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš DEFAULT_JVM_OPTS αž”αž“αŸ’αžαŸ‚αž˜αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž“αŸ’αžαŸ‚αž˜ Djava.library.path - αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΌαžŒαž»αž› Jep αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αŸ”

αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows αž‚αž½αžšαžαŸ‚αž‡αžΆαž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Kopycat

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αž„αžŸαžΌαž› JVM αŸ” αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš (sh/cmd) αŸ”

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αžšαŸ„αž˜αžœαžΈαž“αžŠαžΌ

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

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž›αžΈαž“αž»αž…αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ socatαŸ–

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

  • -g 23646 - αž…αŸ’αžšαž€ TCP αžŠαŸ‚αž›αž“αžΉαž„αž”αžΎαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ GDB αŸ”
  • -n rhino - αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹ (αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž‚αž»αŸ†);
  • -l user - αžˆαŸ’αž˜αŸ„αŸ‡αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸ‰αžΌαžŒαž»αž›αž˜αŸαŸ”
  • -y library - αž•αŸ’αž›αžΌαžœαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαŸ”
  • firmwarerhino_pass.bin - αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹;
  • COM26 αž“αž·αž„ COM28 αž‚αžΊαž‡αžΆαž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αžαŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž”αŸ’αžšαž’αž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž˜αž½αž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰ Python > (ឬ Argparse >):

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

αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ IDA Pro

αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž™αžΎαž„αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ Rhino αž‡αžΆαž―αž€αžŸαžΆαžšαž”αŸ’αžšαž—αž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αŸ’αž“αž»αž„ IDA αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ αž―αž€αžŸαžΆαžš ELF (αž–αŸαžαŸŒαž˜αžΆαž“αž˜αŸαžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡) αŸ”

αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž…αž˜αŸ’αž”αž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž˜αŸαžαžΆαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Kopycat αž“αŸ…αž€αŸ’αž“αž»αž„ IDA Pro αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΊαž“αž»αž™ Debugger αžŸαžΌαž˜αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžαž» "αž”αŸ’αžŠαžΌαžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž”αŸ†αž”αžΆαžαŸ‹β€‹αž€αŸ†αž αž»αžŸ..."αž αžΎαž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ"αž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ GDB αž–αžΈαž…αž˜αŸ’αž„αžΆαž™"αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αŸ– αž˜αŸ‰αžΊαž“αž»αž™ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ - αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš...

αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαŸ–

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ - αžαž˜αŸ’αž›αŸƒαžŽαžΆαž˜αž½αž™αŸ”
  • αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ– 127.0.0.1 (αž¬αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αžŠαŸ‚αž› Kopycat αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš)
  • αž…αŸ’αžšαž€: 23946

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž”αŸŠαžΌαžαž»αž„αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“ (αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… F9)αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž…αž»αž…αžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΌαžŒαž»αž›αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αŸ” IDA αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž”αž„αŸ’αž’αž½αž…αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαž…αžšαž€αž”αžΆαž“αŸ– αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ αž’αŸ†αž–αžΈαž‡αž„αŸ‹αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž›αž€αŸ’αžαžŽαŸˆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ–

  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž‡αžΆαž‡αŸ†αž αžΆαž“ αŸ— (αž”αŸ„αŸ‡β€‹αž‡αŸ†αž αžΆαž“β€‹αž…αžΌαž›β€‹αž‘αŸ…β€‹αž€αŸ’αž“αž»αž„ ΠΈ αž”αŸ„αŸ‡αž‡αŸ†αž αžΆαž“αž‘αŸ…αž˜αž»αž - αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… F7 αž“αž·αž„ F8 αžšαŸ€αž„αž‚αŸ’αž“αžΆ);
  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αž·αž„αž•αŸ’αž’αžΆαž€αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž;
  • αž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαž»αž…αž”αŸ†αž”αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž€αžΌαžŠ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™ (αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… F2) αŸ”

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž˜αž·αž“αž˜αžΆαž“αž“αŸαž™αžαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž‘αžΈαžαžΆαŸ†αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x08006A74 - αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž˜αž»αžαž„αžΆαžš Reset_Handler. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαž˜αžΌαžšαž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž…αž»αŸ‡αž”αž‰αŸ’αž‡αžΈ αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš αžŸαŸ†αžαžΆαž“αŸ‹. αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΆαž€αŸ‹αž‘αžŸαŸ’αžŸαž“αŸαž‘αŸ’αžšαž“αž·αž…αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸαŸ‡ (αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x08006ABE) αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αžšαžαŸ‹αžšαž αžΌαžαžŠαž›αŸ‹αž‘αžŸαŸ’αžŸαž“αŸαž‘αŸ’αžšαž“αž·αž… (αž‚αž“αŸ’αž›αžΉαŸ‡ F4) αŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž’αžΆαž…αž…αž»αž… F7 αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž›αž˜αž»αžαž„αžΆαžš αžŸαŸ†αžαžΆαž“αŸ‹.

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Esli vypolnit αž”αž“αŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… F9) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž„αŸ’αž’αž½αž… "αžŸαžΌαž˜αžšαž„αŸ‹αž…αžΆαŸ†" αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αžŠαŸ„αž™αž”αŸŠαžΌαžαž»αž„αžαŸ‚αž˜αž½αž™ αž•αŸ’αž’αžΆαž€:

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž…αž»αž… αž•αŸ’αž’αžΆαž€ αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž’αžΆαž€ αž αžΎαž™αž’αžΆαž…αž”αž“αŸ’αžαž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αžαžΆαž“αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž“αŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠ αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž”αž“αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αžΈαž™αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž…αŸ’αžšαž€ COM αž“αž·αž˜αŸ’αž˜αž·αžαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹ "αž•αŸ’αž›αžΌαžœαžœαžΆαž„αžšαžŠαŸ’αž‹" αž”αž„αŸ’αž αžΆαž‰αžαžΆαž˜αŸ‰αžΌαžŒαž»αž›αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸαž“αž·αž˜αŸ’αž˜αž·αžαž”αžΆαž“αž”αŸ’αžαžΌαžšαž‘αŸ…αžšαž”αŸ€αž”αž‘αž‘αž½αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž…αŸ’αžšαž€ COM αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αžΈαž™αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸ (COM29 αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–) αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ„αž™αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž–αž·αž’αžΈαž€αžΆαžš Rhino αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ "MEOW" αž“αžΉαž„αžαŸ’αžšαž‘αž”αŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš "mur-mur" αž‘αŸ…αžŸαŸ’αžαžΆαž“αžΈαž™αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž’αŸ’αžœαžΎαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž‘αŸαŸ”

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž’αŸ’αž“αž€αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αž˜αŸ’αžšαž·αžαž›αž˜αŸ’αž’αž·αž/αž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž§αž”αž€αžšαžŽαŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž˜αŸ‰αžΌαžŒαž»αž›αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαžΆαž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ–

  • αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž»αŸ†αž–αŸαž‰αž›αŸαž‰αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ;
  • αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ AT αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž αžΎαž™αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž–αžΈαž…αŸ’αžšαž€ COM αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αŸαŸ”
  • αž§αž”αž€αžšαžŽαŸαž“αž·αž˜αŸ’αž˜αž·αžαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αŸαž‰αž›αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αž§αž”αž€αžšαžŽαŸαž–αž·αžαŸ”
  • αž‡αžΆβ€‹αžŠαžΎαž˜β€‹αž’αž˜αŸ’αž˜αžαžΆβ€‹αžŠαŸ‚αž›β€‹αžαŸ‚αž„αžαŸ‚β€‹αžαŸ’αžšαž‘αž”αŸ‹ "αž™αž›αŸ‹αž–αŸ’αžšαž˜"αŸ”

αž€αŸ†αžŽαŸ‚αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΈαž–αžΈαžš - αž˜αŸ‰αžΌαžŒαž»αž›αž”αŸŠαŸ’αž›αžΌαž’αžΌαžŸαž“αž·αž˜αŸ’αž˜αž·αžαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžœαžΆαž”αŸ’αžαžΌαžšαž‘αŸ…αžšαž”αŸ€αž” "αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ" αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž…αŸ’αžšαž€ COM αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αŸαž‘αŸ…αž…αŸ’αžšαž€ UART αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž…αžΌαžšαž™αžΎαž„αž–αž·αž…αžΆαžšαžŽαžΆαž–αžΈαž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž§αž”αž€αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž€αžΌαžŠαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž•αŸ’αž“αŸ‚αž€αžαŸ’αž›αŸ‡αž“αŸƒαž”αžšαž·αž˜αžΆαžαŸ’αžšαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž•αŸ’αž‘αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ… DMA αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αŸ (αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš ws2812b_αžšαž„αŸ‹αž…αžΆαŸ†, raspolojennoy po adresu 0x08006840) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αž‡αžΆαž“αž·αž…αŸ’αž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰ αžšαžœαž›αŸ‹αž˜αžΆαž“β€‹αž‘αžΈβ€‹αžαžΆαŸ†αž„β€‹αž“αŸ… 0x200004C4αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž“αŸƒαžαŸ’αžŸαŸ‚αž‘αž·αž“αŸ’αž“αž“αŸαž™ DMAαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž™αžΎαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž‡αž»αŸ†αžœαž·αž‰αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž‘αž„αŸ‹αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžŠαŸƒ αžšαžœαž›αŸ‹ αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αžœαžΆαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ IDA Pro αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž˜αž»αžαž„αžΆαžš Python αž αžΎαž™αž αŸ…αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ breakpoint αž αžΎαž™αžŠαžΆαž€αŸ‹ breakpoint αžαŸ’αž›αž½αž“αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ code αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαžšαžŸαŸαžšαžαž˜αŸ’αž›αŸƒ 1 αž‘αŸ…αž€αžΆαž“αŸ‹ flag αžšαžœαž›αŸ‹.

αž§αž”αž€αžšαžŽαŸαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αžŽαž»αž…αž”αŸ†αž”αŸ‚αž€

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž˜αž»αžαž„αžΆαžš Python αž“αŸ…αž€αŸ’αž“αž»αž„ IDAαŸ” αž˜αŸ‰αžΊαž“αž»αž™ αž―αž€αžŸαžΆαžš - αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž”...

αž”αž“αŸ’αžαŸ‚αž˜β€‹αž’αžαŸ’αžαž”αž‘β€‹αžαŸ’αž›αžΈβ€‹αžαŸ’αž˜αžΈβ€‹αž˜αž½αž™β€‹αž€αŸ’αž“αž»αž„β€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž“αŸ…β€‹αžαžΆαž„β€‹αž†αŸ’αžœαŸαž„ αž•αŸ’αžαž›αŸ‹β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αžœαžΆ (αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸŠαžΈαŸ” αž”αŸŠαžΈαŸ” αž’αžΈ),
αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž›αž’αžαŸ’αžαž”αž‘αž“αŸ…αžαžΆαž„αžŸαŸ’αžαžΆαŸ† αž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠαž˜αž»αžαž„αžΆαžšαŸ–

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

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž…αž»αž… αžšαžαŸ‹ αž αžΎαž™αž”αž·αž‘αž”αž„αŸ’αž’αž½αž…αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ”

αž₯αž‘αžΌαžœβ€‹αž™αžΎαž„β€‹αž…αžΌαž›β€‹αž‘αŸ…β€‹αž€αžΆαž“αŸ‹β€‹αž›αŸαžβ€‹αž€αžΌαžŠ 0x0800688Aαž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹ (αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… F2) αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžœαžΆ (αž˜αŸ‰αžΊαž“αž»αž™αž”αžšαž·αž”αž‘ αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹...) αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž—αŸαž‘αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‘αŸ… PythonαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat
Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαž˜αŸ’αž›αŸƒαž‘αž„αŸ‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αžšαžœαž›αŸ‹ αžŸαŸ’αž˜αžΎαž“αžΉαž„ 1 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž˜αž»αžαž„αžΆαžš αžšαŸ†αž›αž„_dma αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž€αžΆαžšαž€αŸαŸ‡αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž„αŸ’αž’αž½αž… IDA αž‘αž·αž“αŸ’αž“αž•αž› αžαžΆαž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹ Skipping wait ws2812.... αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αžΉαž„αž˜αž·αž“αžšαž„αŸ‹αž…αžΆαŸ†αž±αŸ’αž™αž‘αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αž‘αŸαŸ” αžšαžœαž›αŸ‹.

αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αžΆαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‘αŸ†αž“αž„αž‡αžΆαž˜αž·αž“αž”αž„αŸ’αž€αž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αžšαžΈαž€αžšαžΆαž™ αž“αž·αž„αžšαžΈαž€αžšαžΆαž™αž“αŸ„αŸ‡αž‘αŸαŸ” αžœαžΆαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‡αž½αž™αž±αŸ’αž™αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž˜αžΎαž›αžƒαžΎαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž· αž¬αž”αž„αŸ’αž€αžΎαžαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αŸ”

αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αžšαžœαžΆαž„αž€αž·αž…αŸ’αž…αž€αžΆαžš RTOS αŸ” αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž•αŸ’αž’αžΆαž€αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΌαžŠαž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αž»αžαž„αžΆαžš bluetooth_task_entry αž‘αŸ…αžŸαžΆαžαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ "LED" (αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x080057B8) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αž”αžΌαž„αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž•αŸ’αž‰αžΎαž‘αŸ…αž‡αž½αžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’ ledControlQueueHandle αžŸαžΆαžšαžαŸ’αž›αŸ‡αŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž”αŸ’αžšαžΎαž’αžαŸαžš ledControlQueueHandle, raspolojennoy po adresu 0x20000624 αž αžΎαž™αž”αž“αŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž€αžΆαžšαžˆαž”αŸ‹αž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αžŠαŸ†αž”αžΌαž„αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x080057CA αž˜αž»αž“αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžš osMailAllocαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x08005806 αž˜αž»αž“αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžš osMailPutαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αž½αž™αžŸαž“αŸ’αž‘αž»αŸ‡ - αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x08005BD4 (αž˜αž»αž“αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžš osMailGet) αžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž˜αž»αžαž„αžΆαžš leds_task_entry (LED-task) αž“αŸ„αŸ‡αž‚αžΊ αž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αžΆαž“αž”αŸ’αžαžΌαžš αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡ LED-task αž”αžΆαž“αž‘αž‘αž½αž›αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αžαžΆαž˜αžšαž”αŸ€αž”αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αž·αž…αŸ’αž…αž€αžΆαžš RTOS αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ”

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž’αžΆαž…αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸαŸ‡αž€αžΆαž“αŸ‹αžαŸ‚αž–αž·αž”αžΆαž€αŸ”

αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžœαžΈαžŠαŸαž’αžΌαžαŸ’αž›αžΈαž“αŸƒαž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ αž“αž·αž„αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ IDA ProαŸ”

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Radare2

αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž–αŸ’αžšαž„αžΎαž™αž€αž“αŸ’αžαžΎαž™αž…αŸ†αž–αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαžŸαž€αž›αžŠαžΌαž…αž‡αžΆ Radare2 αž“αŸ„αŸ‡αž‘αŸαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎ r2 αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž₯αž‘αžΌαžœαž“αŸαŸ‡ (dc) αž“αž·αž„αž•αŸ’αž’αžΆαž€αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· (Ctrl+C)αŸ”

αž‡αžΆαž’αž€αž»αžŸαž› αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ r2 αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ hardware gdb server αž“αž·αž„ memory layout αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž…αŸ†αž“αž»αž…αž”αŸ†αž”αŸ‚αž€ αž“αž·αž„αž‡αŸ†αž αžΆαž“αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ ds) αž™αžΎαž„αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αž½αžŸαž‡αž»αž›αž€αŸ’αž“αž»αž„αž–αŸαž›αž†αžΆαž”αŸ‹αŸ—αž“αŸαŸ‡αŸ”

αžšαžαŸ‹αž‡αžΆαž˜αž½αž™ Eclipse

αž‡αž˜αŸ’αžšαžΎαžŸαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‡αž˜αŸ’αžšαžΎαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž™αžΎαž„αž€αŸαž“αžΉαž„αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ Rhino αž•αž„αžŠαŸ‚αžšαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž”αŸ’αžšαž—αž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ αž–αžΈαž‘αžΈαž“αŸαŸ‡.

αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎ 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 αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž›αžΎαž•αŸ’αž‘αžΆαŸ†αž„ "មេ" αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž“αŸ…αž›αžΎαž•αŸ’αž‘αžΆαŸ†αž„ "αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ" αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ GDBαŸ–
${openstm32_compiler_path}arm-none-eabi-gdb

αž αžΎαž™αž”αž‰αŸ’αž…αžΌαž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ GDB (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„αž…αŸ’αžšαž€)αŸ–

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž“αŸ…αž›αžΎαž•αŸ’αž‘αžΆαŸ†αž„ "αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜" αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

  • αž”αžΎαž€αž”αŸ’αžšαž’αž”αŸ‹αž’αžΈαž€ αž•αŸ’αž‘αž»αž€αžšαžΌαž”αž—αžΆαž– (αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžšαžΌαž”αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜);
  • αž”αžΎαž€αž”αŸ’αžšαž’αž”αŸ‹αž’αžΈαž€ αž•αŸ’αž‘αž»αž€αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ;
  • αž”αž“αŸ’αžαŸ‚αž˜αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ– set $pc = *0x08000004 (αž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž‘αŸ…αžαž˜αŸ’αž›αŸƒαž–αžΈαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 0x08000004 - αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ ResetHandler).

αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž…αž„αŸ‹αž‘αžΆαž‰αž™αž€αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž–αžΈ Eclipse αž“αŸ„αŸ‡αž‡αž˜αŸ’αžšαžΎαžŸ αž•αŸ’αž‘αž»αž€αžšαžΌαž”αž—αžΆαž– ΠΈ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž‘αŸαŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αž»αž… Debug αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ–

  • αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž›αŸαžαž€αžΌαžŠαž‡αžΆαž‡αŸ†αž αžΆαž“ αŸ—
    Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat
  • αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹
    Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹. αžŸαžΌαžšαŸ’αž™αž‚αŸ’αžšαžΆαžŸαž˜αžΆαž“ ហ៊ឺម... αž…αž˜αŸ’αž›αŸ‚αž€αžαŸ’αž›αŸ‡... αž αžΎαž™αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αžšαžŸαŸ‹αž“αŸ…αž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŸαžΆαžš "αž‚αŸ’αž˜αžΆαž“αž”αŸ’αžšαž—αž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "0x0" αž›αŸαž…αž‘αžΎαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‡αŸ†αž αžΆαž“ (F5) αŸ”

Rhinoceros αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž˜αžΆ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ Kopycat

αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αž˜αž½αž™

αž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αžΌαžŠαžŠαžΎαž˜αž‚αžΊαž‡αžΆαžšαžΏαž„αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŽαžΆαžŸαŸ‹αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž§αž”αž€αžšαžŽαŸ αžœαžΆαž’αžΆαž…αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž–αž·αžαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœ αžœαžΆαž‚αžΊαž‡αžΆαž±αž€αžΆαžŸαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΌαžŠαžαžΆαž˜αžœαž“αŸ’αž αžŠαŸ‚αž›αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž€αŸαžŠαŸ„αž™αŸ”

αž™αžΎαž„αž…αž„αŸ‹αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž―αž€αž‘αŸαžŸαž“αžΌαžœαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž› αžŸαžΆαž˜αž‰αŸ’αž‰αž›αŸ’αž˜αž˜ αž“αž·αž„αž˜αž·αž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ€αž”αž…αŸ† αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αž’αŸ†αž–αžΈαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αŸ” αž™αžΎαž„αžŸαžΌαž˜αž’αž‰αŸ’αž‡αžΎαž‰αž’αŸ’αž“αž€αž±αŸ’αž™αž–αž·αž—αžΆαž€αŸ’αžŸαžΆ αž αžΎαž™αž“αžΉαž„αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαŸ”

αž˜αžΆαž“αžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž“αŸαŸ‡αŸ” αž…αžΌαž›αžŸαžΌαž˜αŸ”

αžαžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΈ?

  • αžαŸ’αž‰αž»αŸ†αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ (αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ)

  • αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹

  • αžαŸ’αž‰αž»αŸ†αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αŸ’αž‚αŸαž˜ (Dendi, Sega, PSP)

  • αž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹)

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 7 αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ៦៣ αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”

αžαžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αžœαžΈαžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αžΌαžŠαžŠαžΎαž˜?

  • αžαŸαž˜αž™αžΌ

  • αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Unicorn

  • Proteus

  • αž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹)

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 6 αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ៦៣ αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”

αžαžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž€αŸ‚αž›αž˜αŸ’αž’αž’αŸ’αžœαžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ?

  • αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αžΆαž“αž›αŸ’αž”αžΏαž“

  • αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„/αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

  • αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ (API, hooks)

  • αžαŸ’αž‰αž»αŸ†αžŸαž”αŸ’αž”αžΆαž™αž…αž·αžαŸ’αžαž“αžΉαž„αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

  • αž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹)

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 8 αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 1 αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹