RETracker adalah kerangka kerja rekayasa terbalik untuk pelacak poliend yang ditulis dalam Python. Ini didasarkan pada tambalan tidak resmi yang diterapkan pada firmware saham vendor. Patch -patch ini memperkenalkan pawang USB khusus dengan mengganti pelacak yang sudah ada tetapi tidak digunakan, pawang Rawhid.
Tonton video scroller teks di pembalut pelacak
Penangan USB kustom RETracker's memperkenalkan fitur baru yang tidak resmi ke Polyend Tracker yang dapat dikontrol dari komputer melalui USB. Salah satu fitur baru ini adalah fungsionalitas transfer file searah dan berfungsi secara khusus, karena fungsionalitas transfer file resmi pelacak poliend telah rusak dan karenanya telah dihapus oleh poliend dengan pengenalan firmware v1.4.0.

Setelah ditambal, fitur baru firmware terdiri dari yang berikut:
Fitur-fitur ini adalah basis yang solid untuk menambahkan fungsi lebih lanjut secara dinamis ke Polyend Tracker , dengan merakit kode posisi-independend pada host, mentransfernya ke pelacak dan meminta penangan USB baru menjalankan kode yang baru ditanamkan. Ada beberapa demo intial yang tersedia yang dapat ditransfer secara dinamis ke perangkat.
Menambahkan itu, fungsi membaca/menulis memori memungkinkan host USB untuk memeriksa memori Tracker's dengan membuat dump hex atau dengan membongkar kode dalam mode lengan atau ibu jari.
Akhirnya, fungsi transfer file baru memungkinkan file sewenang -wenang, seperti pembaruan firmware atau NES ROM untuk disalin ke pelacak, tanpa harus melalui proses yang dimaksudkan untuk menukar kartu SD antara Tracker dan komputer. Namun, saat ini satu -satunya arah yang didukung adalah dari host USB ke kartu SD Tracker's .
Selamat peretasan!
Pertama -tama, di atas instalasi Python 3, retracker membutuhkan sejumlah dependensi untuk diinstal. Silakan periksa dan pastikan Anda menginstal semuanya sebelum Anda melanjutkan.
Setelah semua dependensi diinstal, firmware yang ditambal dapat dibuat dengan menjalankan fwtool.py.
# python fwtool.py
usage: fwtool.py [-h] [-b | -u | -p] infile outfile
positional arguments:
infile name/path of input file
outfile name/path of output file
optional arguments:
-h, --help show this help message and exit
-b, --build apply RETracker patches to Tracker firmware
-u, --unpack unpack Tracker firmware (.ptf) to binary format
-p, --pack create Tracker firmware (.ptf) from binary
Contoh:
# python fwtool.py -b ..PolyendTracker_1.5.0.ptf ..PolyendTracker_1.5.0_retracker.ptf
Opening ..PolyendTracker_1.5.0.ptf
MD5: ce894299bc35996186528364951c901e
Found 1 patch
Assembling patch #1
Description: "Memory dumping/patching/code execution/file transfer via USB"
Decoding input file
Applying patch
Creating output file: ..PolyendTracker_1.5.0_retracker.ptf
Done
Setelah firmware berhasil dibangun, itu harus disalin ke folder "/firmware/" pelacak pada akar kartu SD -nya. Nama file gambar firmware harus dimulai dengan PolyendTracker_ dan diakhiri dengan .ptf atau sebaliknya, pelacak tidak akan menemukannya. Prosedur flashware flashing lurus ke depan dan tidak berbeda dari proses biasa.
Di perangkat
configFirmwareFirmware updatePolyend TrackerAchtung !!!
Diharapkan untuk UI berperilaku berbeda ketika mem -flash firmware yang ditambal. Ini mungkin karena perbedaan dalam format Intelhex yang diciptakan
fwtool.py, yang belum dilihat, namun (hanya karena masih mengarah pada firmware flash yang berhasil).Harap dengan sabar menunggu pembaruan selesai sampai perangkat reboot. Jika masih ada yang salah, silakan berkonsultasi dengan manual pengguna
Polyend Tracker, yang menjelaskan langkah -langkah tentang cara memasukiemergency update procedure.NB: Saya telah melalui berbagai prosedur pembaruan yang gagal selama pengembangan sendiri dan belum memiliki satu masalah tunggal dengan memulihkan firmware yang baik menggunakan
emergency update procedure. Namun, saya tidak akan merekomendasikan menggunakanRETrackersebelum membuat cadangan kartu SD pelacak (proyek, sampel, ...).
Retracker saat ini mendukung Polyend Tracker di Firmware versi 1.5.0. Ada versi pribadi untuk firmware 1.6.0 yang belum dirilis ke publik karena Polyend sepenuhnya menghapus kode yang digunakan untuk mengimplementasikan tambalan untuk retracker pada firmware 1.5.0, yang membuat porting mereka ke firmware 1.6.0 lebih sulit.
Gambar firmware pelacak polyend dikirimkan dalam format Intelhex. fwtool.py mengonversi firmware ke format binernya yang sederhana, yang menyimpan semua kode dan data firmware. Kemudian berlaku tambalan ke biner yang dikonversi sesuai dengan informasi yang ditemukan di pelacak/firmware.py sebelum mengonversi file kembali ke format Intelhex lagi. Dari sana, Polyend Tracker dapat dikomunikasikan dengan dengan memasukkannya ke port USB komputer yang menjalankan retracker.py.
Pekerja keras utama proyek ini mungkin adalah retracker.py , yang menyediakan antarmuka baris perintah untuk pengguna.
# python retracker.py -h
usage: retracker.py [-h] [-b] [-c] [-r ADDRESS SIZE FILE] [-w ADDRESS DATA] [-x ADDRESS SIZE] [-d ADDRESS SIZE]
[-a POLYP] [--polypargs POLYPARGS [POLYPARGS ...]] [-e ADDRESS] [-t SRC_FILENAME DST_FILENAME]
optional arguments:
-h, --help show this help message and exit
-b break
-c continue
-r ADDRESS SIZE FILE, --readmem ADDRESS SIZE FILE
Save memory to local file
-w ADDRESS DATA, --writemem ADDRESS DATA
Write hex-encoded data to memory ADDRESS
-x ADDRESS SIZE, --hexdump ADDRESS SIZE
Create hex-dump of memory
-d ADDRESS SIZE, --disassemble ADDRESS SIZE
Disassemble code at ADDRESS (ARM/Thumb aware)
-a POLYP, --assemble POLYP
Assemble and execute POLYP patchfile
--polypargs POLYPARGS [POLYPARGS ...]
Optional arguments that can be passed to a POLYP
-e ADDRESS, --exec ADDRESS
Execute code at ADDRESS (ARM/Thumb aware)
-t SRC_FILENAME DST_FILENAME, --transfer SRC_FILENAME DST_FILENAME
Transfer SRC_FILENAME to Tracker's DST_FILENAME
Examples:
Dump memory to file: retracker.py -r 70100000 4f0 dump.bin
Write data to memory: retracker.py -w 70100000 "41 EC FA414142c0"
Hex-dump: retracker.py -x 0 ffff
Disassemble: retracker.py -d 3c01 c000
Assemble and run Polyp: retracker.py -a polyp.scroller --polypargs "hi there!"
Run code in Thumb mode: retracker.py -e 70100001
Run code in ARM mode: retracker.py -e 70100000
Transfer file to Tracker: retracker.py -t PolyendTracker_1.5.0.ptf Firmware/PolyendTracker_cstm.ptf
Contoh:
# python retracker.py -d 0002B99d 100
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Disassembling 0002B99C-0002BA9C in Thumb mode
0x0002B99C: push {r4}
0x0002B99E: ldr r4, [pc, #0x6c]
0x0002B9A0: umull ip, r4, r4, r1
0x0002B9A4: lsrs r4, r4, #3
0x0002B9A6: add.w r1, r1, r4, lsl #2
0x0002B9AA: uxtb r1, r1
0x0002B9AC: cmp r3, #0x1f
0x0002B9AE: ite ls
0x0002B9B0: addls r4, r0, r3
0x0002B9B2: addhi.w r4, r0, #0x1f
0x0002B9B6: adds r3, r0, r1
0x0002B9B8: ldrb r4, [r4, #5]
0x0002B9BA: strb.w r4, [r3, #0xc8]
0x0002B9BE: cbz r2, #0x2b9e4
0x0002B9C0: add.w r2, r0, r1, lsr #3
# python retracker.py -x 0002B99d 100
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Dumping 0002B99D-0002BA9D
0002b99d b4 1b 4c a4 fb 01 c4 e4 08 01 eb 84 01 c9 b2 1f |..L.............|
0002b9ad 2b 94 bf c4 18 00 f1 1f 04 43 18 64 79 83 f8 c8 |+........C.dy...|
0002b9bd 40 8a b1 00 eb d1 02 01 23 92 f8 b6 40 01 f0 07 |@.......#...@...|
0002b9cd 01 03 fa 01 f1 21 43 82 f8 b6 10 01 23 5d f8 04 |.....!C.....#]..|
0002b9dd 4b 80 f8 b5 30 70 47 00 eb d1 04 01 22 94 f8 b6 |K...0pG....."...|
0002b9ed 30 01 f0 07 01 02 fa 01 f1 23 ea 01 01 84 f8 b6 |0........#......|
0002b9fd 10 01 23 5d f8 04 4b 80 f8 b5 30 70 47 00 bf ab |..#]..K...0pG...|
0002ba0d aa aa aa 00 eb 01 0c 8c f8 c8 30 82 b1 00 eb d1 |..........0.....|
0002ba1d 02 01 23 92 f8 b6 c0 01 f0 07 01 03 fa 01 f1 41 |..#............A|
0002ba2d ea 0c 01 01 23 82 f8 b6 10 80 f8 b5 30 70 47 00 |....#.......0pG.|
0002ba3d eb d1 0c 01 22 9c f8 b6 30 01 f0 07 01 02 fa 01 |...."...0.......|
0002ba4d f1 23 ea 01 01 01 23 8c f8 b6 10 80 f8 b5 30 70 |.#....#.......0p|
0002ba5d 47 00 bf 0f 49 00 23 30 b5 01 f1 3f 05 1c 46 4f |G...I.#0...?..FO|
0002ba6d f0 01 0e 01 e0 11 f8 01 3f c2 18 00 eb d3 0c 82 |........?.......|
0002ba7d f8 c8 40 9c f8 b6 20 03 f0 07 03 0e fa 03 f3 22 |..@... ........"|
0002ba8d ea 03 03 a9 42 8c f8 b6 30 ec d1 80 f8 b5 e0 30 |....B...0......0|
Sedangkan beberapa opsi baris perintah yang lebih umum memungkinkan memori ditulis, dibaca, dan dibuang hex, fitur yang lebih menarik mungkin adalah opsi -e dan -a . Mereka memungkinkan kode untuk dieksekusi pada perangkat.
Opsi -e memungkinkan kode firmware yang ada bercabang secara langsung, atau kode khusus setelah menulisnya ke memori perangkat menggunakan opsi -w . Bit terendah dari argumen address yang diteruskan ke utilitas baris perintah retracker.py menentukan apakah menggunakan mode ibu jari atau tidak (0: mode lengan, 1: mode ibu jari).
Argumen baris perintah -a menerima apa yang disebut Polyps , yang merupakan modul Python yang berisi tambalan untuk Polyend Tracker dalam bentuk rutinitas perakitan dan offset dan data khusus versi.
Memuat salah satu modul ini menggunakan opsi baris perintah -a menyebabkan rutinitas perakitan mereka
Contoh:
# python retracker.py -a polyp.scroller
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Assembling patch #1
Description: "Text scroller on the Tracker's pads"
Target address: 70100000
Mode: thumb
Patching memory
Running code...
Done
Ini tidak hanya memungkinkan pengembangan kode dan fitur kustom yang nyaman dan diperpendek, tetapi juga tidak memerlukan firmware baru untuk dilacak ke Tracker untuk menguji fungsionalitas baru (tetapi reboot dalam kasus terburuk).
Silakan lihat modul yang tersedia di polip/ folder, yang berisi beberapa demo awal yang memudar layar Tracker's masuk dan keluar atau menggunakan kembali bantalannya sebagai kanvas scroller teks.
Polyend Tracker diyakini didasarkan pada µC yang mirip dengan Teensy 3.6 di mana lembar data dan info teknologi lainnya tersedia di sini. Pastikan untuk memeriksa manual MK66FX untuk peta memori untuk menghindari lari ke perangkat crash saat membuang memori.
Gambar firmware Tracker berada dalam format Intelhex dan dapat dibongkar menggunakan fwtool.py atau dimuat secara langsung oleh pembongkaran yang mendukung format Intelhex, seperti Ida Pro Disassembler dan mungkin yang lain seperti Ghidra atau ninja biner. Modul prosesor yang harus dipilih adalah ARM / Little-Endian. Firmware harus dimuat pada alamat 0. Alamat/Offset 4 adalah vektor reset dengan pointer ke handler vektor reset (mulai membongkar di sana). Sebagian besar, jika tidak semua kodenya berjalan dalam mode jempol. Saya telah menemukan alamat 0x70100000 dan di atas menjadi alamat yang dapat diandalkan untuk menanam Polyp ke dalam dan menjalankan kodenya dari sana.
Jika Anda ingin melakukan pengembangan firmware, ambil salinan Arduino dan Teensyduino Addon, bangun beberapa contoh dan kembalikan file .hex yang dihasilkan ke pelacak (pastikan untuk memilih Teensy 3.6 dan mengubah nama file .hex yang dihasilkan menjadi sesuatu seperti PolyendTracker_teensy.ptf ). Kembali ke firmware Polyend Tracker asli akan dimungkinkan kapan saja menggunakan prosedur pembaruan darurat pelacak, karena berada pada chip terpisah yang tidak terpengaruh/ditimpa oleh pembaruan firmware.

Wiki retracker dapat ditemukan di sini.
Harap ambil bagian dalam diskusi dan beri tahu semua orang tentang pengalaman Anda dengan retracker dan bagaimana Anda menggunakannya!
Penulis tidak bertanggung jawab atas kerusakan apa pun yang dapat ditimbulkan oleh proyek ini kepada pelacak poliend Anda. Dengan menggunakan retracker atau informasi apa pun yang diperoleh, Anda setuju bahwa Anda menggunakan salah satu kode proyek, data, dan informasi lainnya dengan risiko Anda sendiri.