TAPs erstellen/JailBreak

aus TopfWiki, der freien Wissensdatenbank

JailBreak für TAP TMS

In der Firmware des TMS befindet sich eine Liste mit verbotenen Linux-Systembefehlen. Verwendet ein TAP einen dieser Befehle, unterbindet der TMS den Start des TAPs. Diese Prüfung wird mit dem JailBreak ausgehebelt.

Achtung: Im Normalfall reichen die Befehle der API aus. Es sollte also dringend der Readme.txt in dem ausgepackten JailBreak Ordner gelesen werden.

Die JailBreak.zip (http://www.topfield.cc/files/Firebird/JailBreak.zip) wird heruntergeladen und im Ordner c:/Topfield gespeichert und mit „Entpacken nach Hier\“ ausgepackt.

JailBreak installieren

JailBreak.exe modifiziert ein kompiliertes TAP so, dass es trotz eingebauter Linux-Systembefehle vom Betriebssystem des TMS gestartet wird. Die im Paket mitgelieferte ausführbare Datei läuft unter DOS und der cygwin bash. Da der Source-Code beiliegt, lässt sich JailBreak auf jedem System übersetzen. Um ein TAP zu patchen, genügt es, Jailbreak mit dem Namen des TAPs aufzurufen, z.B.:

JailBreak FireClock.tap

Da dies zu mühsam ist, lässt sich der JailBreak auch automatisieren. Eine theoretische Möglichkeit ist das Einbinden in die im nächsten Punkt beschriebene "build_TMS.bat". Da diese Batch-Datei den TAP-Namen aber nicht kennt, muss man jede "build_TMS.bat" selbst anpassen. Daher ist es ratsam, den JailBreak direkt in den make-Prozess einzubinden.

Dazu sind 3 Schritte notwendig:

  • JailBreak.exe nach "C:\Work\cygwin\opt\crosstool\bin" kopieren.
  • Bei C:\Work\API\TMS\include\tool.mk wird mit einem Unix-fähigen Editor wie MetaPad hinter der AWK-Zeile die JB-Zeile angefügt, so dass der Bereich der Datei so aussieht:
TOUCH = touch
AWK = awk
JB = JailBreak.exe
# Option for quiet builds
  • Bei jedem Projekt muss die Datei "Makefile" geändert werden. Hier wird diese Datei wieder mit einen Unix-fähigen Editor geöffnet, nach dem Text "Linking" gesucht und die markierte Zeile aus diesen Block eingefügt. Die 3. Zeile ist hier gekürzt dargestellt.
$(TAP_APP): ${TAP_OBJS}
@echo "[Linking... $@]"
$(Q_)$(LD) -shared --no-undefined --allow-shlib-undefined -o $@ …
$(Q_)$(JB) $(TAP_APP)
'Persönliche Werkzeuge