RETracker เป็นกรอบวิศวกรรมย้อนกลับสำหรับตัวติดตาม Polyend ที่เขียนใน Python มันขึ้นอยู่กับแพตช์ที่ไม่เป็นทางการที่ใช้กับเฟิร์มแวร์หุ้นของผู้ขาย แพตช์เหล่านี้แนะนำตัวจัดการ USB แบบกำหนดเองโดยแทนที่ตัวติดตาม USB Rawhid ที่มีอยู่ แต่ไม่ได้ใช้งาน
ดูวิดีโอของตัวเลื่อนข้อความบนแผ่นรองของตัวติดตาม
ตัวจัดการ USB ที่กำหนดเอง RETracker's แนะนำคุณสมบัติใหม่ที่ไม่เป็นทางการให้กับ Polyend Tracker ที่สามารถควบคุมได้จากคอมพิวเตอร์ผ่าน USB หนึ่งในคุณสมบัติใหม่เหล่านี้คือฟังก์ชั่นการถ่ายโอนไฟล์แบบทิศทางเดียวที่กำหนดเองและทำงานได้เนื่องจากฟังก์ชั่นการถ่ายโอนไฟล์อย่างเป็นทางการของ Polyend Tracker ถูกทำลายและด้วยเหตุนี้ Polyend ด้วยการแนะนำเฟิร์มแวร์ v1.4.0

เมื่อแก้ไขแล้วคุณสมบัติใหม่ของเฟิร์มแวร์ประกอบด้วยสิ่งต่อไปนี้:
คุณสมบัติเหล่านี้เป็นฐานที่มั่นคงสำหรับการเพิ่มฟังก์ชั่นเพิ่มเติมแบบไดนามิกไปยัง Polyend Tracker โดยการประกอบรหัสอิสระตำแหน่งบนโฮสต์ถ่ายโอนไปยังตัวติดตามและมีตัวจัดการ USB ใหม่เรียกใช้รหัสที่ฝังสดใหม่ มีการสาธิตแบบไม่กี่แบบที่สามารถถ่ายโอนไปยังอุปกรณ์ได้แบบไดนามิก
การเพิ่มฟังก์ชั่นการอ่าน/การเขียนหน่วยความจำช่วยให้โฮสต์ USB ตรวจสอบหน่วยความจำ Tracker's โดยการสร้าง hex-dumps หรือโดยการแยกรหัสในโหมดแขนหรือโหมดนิ้วหัวแม่มือ
ในที่สุดฟังก์ชั่นการถ่ายโอนไฟล์ใหม่อนุญาตให้มีการคัดลอกไฟล์โดยพลการเช่นการอัปเดตเฟิร์มแวร์หรือ NES ROM ที่จะคัดลอกไปยังตัวติดตามโดยไม่ต้องผ่านกระบวนการที่ตั้งใจจะเปลี่ยนการ์ด SD ระหว่าง Tracker และคอมพิวเตอร์ ปัจจุบันทิศทางเดียวที่รองรับคือ จาก โฮสต์ USB ไปจนถึง การ์ด SD Tracker's
แฮ็คมีความสุข!
ก่อนอื่นเลยที่ด้านบนของการติดตั้ง Python 3 Retracker ต้องการการพึ่งพาจำนวนมากที่จะติดตั้ง โปรดตรวจสอบพวกเขาและตรวจสอบให้แน่ใจว่าคุณติดตั้งทั้งหมดก่อนที่คุณจะไป
เมื่อติดตั้งการพึ่งพาทั้งหมดแล้วเฟิร์มแวร์แพตช์สามารถสร้างได้โดยเรียกใช้ 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
ตัวอย่าง:
# 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
เมื่อสร้างเฟิร์มแวร์สำเร็จแล้วควรคัดลอกไปยังโฟลเดอร์ "/firmware/" ของตัวติดตามบนรูทของการ์ด SD ชื่อไฟล์ของภาพเฟิร์มแวร์ต้องเริ่มต้นด้วย PolyendTracker_ และลงท้ายด้วย .ptf หรืออย่างอื่นตัวติดตามจะไม่พบ ขั้นตอนการกะพริบเฟิร์มแวร์นั้นตรงไปตรงมาและไม่แตกต่างจากกระบวนการธรรมดา
บนอุปกรณ์
configFirmwareFirmware updatePolyend TrackerAchtung !!!
คาดว่า UI จะประพฤติตัวแตกต่างกันเมื่อกระพริบเฟิร์มแวร์แพทช์ นี่อาจเป็นเพราะความแตกต่างในรูปแบบ intelhex ที่
fwtool.pyสร้างซึ่งยังไม่ได้รับการตรวจสอบ แต่ (เพียงเพราะมันยังนำไปสู่เฟิร์มแวร์ที่ประสบความสำเร็จ)โปรดรอการอัปเดตให้เสร็จจนกว่าอุปกรณ์จะรีบูต ในกรณีที่มีบางอย่างผิดพลาดโปรดปรึกษาคู่มือผู้ใช้
Polyend Trackerซึ่งอธิบายขั้นตอนเกี่ยวกับวิธีการเข้าสู่emergency update procedureNB: ฉันผ่านขั้นตอนการอัปเดตที่ล้มเหลวจำนวนมากในระหว่างการพัฒนาด้วยตัวเองและยังไม่มีปัญหาเดียวกับการกู้คืนเฟิร์มแวร์ที่ดีโดยใช้
emergency update procedureอย่างไรก็ตามฉันไม่แนะนำให้ใช้RETrackerก่อนที่จะทำการสำรองข้อมูลการ์ด SD ของตัวติดตาม (โครงการตัวอย่าง ... )
ปัจจุบัน Retacker รองรับ Polyend Tracker ในเฟิร์มแวร์เวอร์ชัน 1.5.0 มีเวอร์ชันส่วนตัวสำหรับเฟิร์มแวร์ 1.6.0 ที่ยังไม่ได้รับการเผยแพร่สู่สาธารณะเนื่องจาก PolyEnd ลบรหัสที่ใช้ในการใช้แพตช์สำหรับ Retracker บนเฟิร์มแวร์ 1.5.0 ซึ่งทำให้การพอร์ตพวกเขาไปยังเฟิร์มแวร์ 1.6.0 ยากขึ้น
ภาพเฟิร์มแวร์ Polyend Tracker จัดส่งในรูปแบบ Intelhex fwtool.py แปลงเฟิร์มแวร์เป็นรูปแบบไบนารีธรรมดาซึ่งถือรหัสและข้อมูลของเฟิร์มแวร์ทั้งหมด จากนั้นจะใช้แพตช์กับไบนารีที่แปลงตามข้อมูลที่พบใน tracker/firmware.py ก่อนที่จะแปลงไฟล์กลับเป็นรูปแบบ intelhex อีกครั้ง จากนั้นเป็นต้นมา Polyend Tracker สามารถสื่อสารได้ด้วยการเสียบเข้ากับพอร์ต USB ของคอมพิวเตอร์ที่ใช้ Retracker.py
workhorse หลักของโครงการนี้น่าจะเป็น retracker.py ซึ่งให้อินเทอร์เฟซบรรทัดคำสั่งให้กับผู้ใช้
# 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
ตัวอย่าง:
# 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|
ในขณะที่ตัวเลือกบรรทัดคำสั่งทั่วไปบางอย่างอนุญาตให้มีการเขียนหน่วยความจำอ่านและ hex -dumped คุณสมบัติที่น่าตื่นเต้นมากขึ้นน่าจะเป็นตัวเลือก -e และ -a พวกเขาอนุญาตให้ใช้รหัสบนอุปกรณ์
ตัวเลือก -e อนุญาตให้รหัสเฟิร์มแวร์ที่มีอยู่ถูกแยกออกเป็นโดยตรงหรือรหัสที่กำหนดเองหลังจากเขียนลงในหน่วยความจำของอุปกรณ์โดยใช้ตัวเลือก -w บิตที่ต่ำที่สุดของ address ที่อยู่ที่ส่งผ่านไปยังยูทิลิตี้บรรทัดคำสั่ง retracker.py ระบุว่าจะใช้โหมดนิ้วหัวแม่มือหรือไม่ (0: โหมดแขน, 1: โหมดนิ้วหัวแม่มือ)
อาร์กิวเมนต์บรรทัดคำสั่ง -a ยอมรับว่าเรียกว่า Polyps ซึ่งเป็นโมดูล Python ที่มีแพตช์สำหรับ Polyend Tracker ในรูปแบบของกิจวัตรการประกอบและออฟเซ็ตและข้อมูลเฉพาะรุ่น
การโหลดโมดูลเหล่านี้โดยใช้ตัวเลือกบรรทัดคำสั่ง -a ทำให้เกิดรูทีนแอสเซมบลีของพวกเขา
ตัวอย่าง:
# 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
สิ่งนี้ไม่เพียง แต่อนุญาตให้มีการพัฒนารหัสและคุณสมบัติที่กำหนดเองได้อย่างสะดวกและเร่งความเร็วเท่านั้น แต่ยังไม่จำเป็นต้องใช้เฟิร์มแวร์ใหม่เข้าสู่ Tracker เพื่อทดสอบฟังก์ชั่นใหม่ (แต่รีบูตในกรณีที่เลวร้ายที่สุด)
โปรดดูที่โมดูลที่มีอยู่ใน Polyp/ Folder ซึ่งมีการสาธิตเริ่มต้นสองสามครั้งที่ทำให้หน้าจอ Tracker's เข้าและออกหรือเปลี่ยนแผ่นรองเป็นผืนผ้าใบตัวเขียนข้อความ
เชื่อว่า Polyend Tracker ขึ้นอยู่กับ µc คล้ายกับ Teensy 3.6 ซึ่งมีแผ่นข้อมูลและข้อมูลเทคโนโลยีอื่น ๆ ที่นี่ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบคู่มือ MK66FX สำหรับแผนที่หน่วยความจำเพื่อหลีกเลี่ยงการทำงานในอุปกรณ์ขัดข้องเมื่อทิ้งหน่วยความจำ
ภาพเฟิร์มแวร์ Tracker อยู่ในรูปแบบ intelhex และสามารถแกะกล่องออกโดยใช้ fwtool.py หรือโหลดโดยตรงโดย disassemblers ที่รองรับรูปแบบ intelhex เช่น disassembler ของ IDA Pro และอาจเป็นสิ่งอื่น ๆ เช่น Ghidra หรือ Binary Ninja โมดูลโปรเซสเซอร์ที่จะเลือกคือ ARM / Little-Endian ควรโหลดเฟิร์มแวร์ตามที่อยู่ 0. ที่อยู่/ออฟเซ็ต 4 คือเวกเตอร์รีเซ็ตพร้อมตัวชี้ไปยังตัวจัดการเวกเตอร์รีเซ็ต (เริ่มแยกชิ้นส่วนที่นั่น) ส่วนใหญ่ถ้าไม่ใช่รหัสทั้งหมดทำงานในโหมดนิ้วหัวแม่มือ ฉันพบที่อยู่ 0x70100000 และสูงกว่าเป็นที่อยู่ที่เชื่อถือได้ในการปลูก Polyp เปี้ยนและเรียกใช้รหัสจากที่นั่น
หากคุณต้องการให้การพัฒนาเฟิร์มแวร์ไปคว้าสำเนาทั้ง Arduino และ Teensyduino addon ให้สร้างตัวอย่างบางส่วนและแฟลชไฟล์ .hex ที่เกิดขึ้นบนตัวติดตาม (อย่าลืมเลือก Teensy 3.6 และเปลี่ยนชื่อ PolyendTracker_teensy.ptf .hex การย้อนกลับไปที่เฟิร์มแวร์ Polyend Tracker ดั้งเดิมจะเป็นไปได้ทุกเวลาโดยใช้ขั้นตอนการอัปเดตฉุกเฉินของตัวติดตามเนื่องจากอยู่ในชิปแยกต่างหากที่ไม่ได้รับผลกระทบ/เขียนทับโดยการอัปเดตเฟิร์มแวร์

Wiki Retracker สามารถพบได้ที่นี่
โปรดมีส่วนร่วมในการสนทนาและบอกทุกคนเกี่ยวกับประสบการณ์ของคุณกับ Retracker และวิธีการใช้งาน!
ผู้เขียนไม่รับผิดชอบใด ๆ ต่อความเสียหายใด ๆ ที่โครงการนี้อาจทำให้ตัวติดตาม Polyend ของคุณ โดยการใช้ Retracker หรือข้อมูลใด ๆ ที่ได้รับคุณยอมรับว่าคุณใช้รหัสข้อมูลและข้อมูลอื่น ๆ ของโครงการนี้ตามความเสี่ยงของคุณเอง