
Einführung
Hallo Habr! Ich möchte meine Erfahrungen mit dem Schreiben einer Anwendung für einen sehr alten Handheld-Computer teilen, der seiner Zeit weit voraus ist, nämlich die Version Cybiko Xtreme 2001. Für diejenigen, die daran interessiert sind, wie ein mobiler Entwickler in den frühen 2000er Jahren lebte, willkommen bei cat.
Über Cybiko Xtreme
So kam dieses Gerät im fernen 2002 zu mir und sorgte für völlige Freude. Ich konnte die Kommunikationsfähigkeiten nicht schätzen, da ich in meiner Stadt nie Leute mit solchen PDAs getroffen habe, aber im Allgemeinen war die Fähigkeit, viele Spiele zu spielen, ohne an einem Computer sitzen zu müssen, fantastisch. In vielerlei Hinsicht konzentrierten sich die Entwickler des Geräts auf die Netzwerkfunktionen des PDA. Die Entwickler wählten ein Funknetz, um die Geräte miteinander zu verbinden. Direkt wurden die Geräte in einer Entfernung von bis zu 100 Metern miteinander verbunden, es war jedoch möglich, über ein anderes Gerät eine Verbindung miteinander herzustellen, und theoretisch war die Entfernung bei einer dichten Netzwerkabdeckung unbegrenzt. Das Gerät hatte die Möglichkeit, Ihr Profil auszufüllen (es scheint sogar ein Foto anzuhängen, obwohl die Graustufenanzeige wenig Sinn macht), mit anderen Benutzern mit ähnlichen Interessen zu chatten, nach neuen Freunden zu suchen usw. Es ähnelt all diesem sozialen Netzwerk, obwohl es damals meines Wissens noch keinen solchen Begriff gab. Wenn es viele Geräte gäbe, würde das Projekt wahrscheinlich starten, aber leider ist bei den Entwicklern ein Fehler aufgetreten.
Als ich diesen PDA in meinen alten Sachen fand, wollte ich ponostalisieren. Es war nicht sehr interessant, alte Spiele zu spielen (dennoch sehen sie im Vergleich zu neuen nicht besonders aus), aber zu versuchen, eine Anwendung zu entwickeln und zu spüren, wie die ersten mobilen Entwickler lebten, war viel interessanter.
Anwendungsidee
Da ich aufgrund meiner Tätigkeit mit Informationssicherheit verbunden bin und dieses Thema für mich äußerst interessant ist, habe ich beschlossen, eine Anwendung in demselben Bereich zu erstellen. Das einfachste (und zumindest etwas Nützliches?) Schien mir die Anwendung "Passwort-Manager". Mit dieser Anwendung können Sie sehen, wie eine grafische Benutzeroberfläche entwickelt wird, und mit dem Dateisystem arbeiten (Speicherung eines verschlüsselten Containers mit Kennwörtern).
Als Kryptographie zum Schutz des Containers habe ich mich für die sogenannte
XOR-Verschlüsselung entschieden . Der Schlüssel ist das Hauptkennwort. Die kryptografische Stärke dieser Verschlüsselung hängt stark von der Schlüssellänge ab, und es wird nicht empfohlen, sie in seriösen Systemen zu verwenden. Diese Verschlüsselung hat jedoch ein schwerwiegendes Plus: Sie ist sehr einfach zu implementieren. Da die Anwendung ausschließlich zu Unterhaltungszwecken erstellt wurde, ist eine solche Verschlüsselung ideal.
Emulator
Das Verbinden von Cybiko Xtreme mit einem modernen Computer ist ein ziemlich komplizierter Prozess, daher habe ich beschlossen, an Teststarts der Anwendung auf dem Emulator zu arbeiten (zum Glück).
Das Aussehen ist in der folgenden Abbildung dargestellt.

Es gibt einige Funktionen zum Herunterladen von Anwendungen auf den Emulator. Gemäß den hier enthaltenen Anweisungen
kann die Anwendung über die Schaltfläche "Senden" im Fenster "Konsole" gesendet werden. Unabhängig davon, wie ich es versucht habe, war ich jedoch nicht erfolgreich. Das Planet Cybiko-Forum (leider ist das Forum derzeit geschlossen) enthält einen Link zu einem Tool, mit dem Sie Ihre eigenen Cybiko-RAM-Disks erstellen können. Daher reicht es aus, eine RAM-Disk mit einer kompilierten Anwendung zu erstellen und den Emulator damit neu zu starten.
SDK
Es war nicht sehr schwierig, ein SDK im Internet zu finden. Nachdem ich die Verzeichnisstruktur entpackt und analysiert hatte, machte ich zunächst auf das doc-Verzeichnis aufmerksam, das sich als sehr nützliche Hilfe herausstellte und erklärte, wie die Anwendung im Prinzip kompiliert werden sollte und welche Struktur das Projekt haben sollte.
Ich habe viele Beispielanwendungen im Demo-Verzeichnis gefunden. Besonders interessant waren die Anwendungen aus dem Tutorial-Verzeichnis, in denen Schritt für Schritt die Entwicklungsprinzipien für Cybiko Xtreme erläutert wurden. Alles ist einfach, zugänglich und verständlich.
Code schreiben
Die Struktur eines Projekts, dessen Inhalt minimal ist, wird nachfolgend dargestellt:
Projektstrukturproject res root.inf src source1.c … make.bat
Die Datei root.inf enthält die Metadaten der Anwendung, nämlich Informationen zu Typ (Anwendung, Spiel oder Bibliothek), Version, Mindestversion des Betriebssystems (genau wie in Android), einem eindeutigen Namen usw.
Die Datei make.bat enthält Befehle zum Erstellen der Anwendung mit sdk. Tatsächlich wird die gesamte Assembly mit dem Aufrufbefehl Cybiko C Compiller ausgeführt:
"C:\Program Files (x86)\Cybiko\Cybiko_SDK\bin\vcc" -R0 src/*.c res/*.help res/*.inf -o passwords_master.app
Wichtiger Hinweis: Wenn Sie auf Windows 7 für vcc.exe aufbauen, müssen Sie den Kompatibilitätsmodus auf Windows XP (Service Pack 2) einstellen, da sonst Probleme beim Starten des Compilers auftreten.
Das Verzeichnis src enthält den Quellcode für das Programm. Das Kompilierungsergebnis ist eine * .app-Datei.
Um die Entwicklung der gesamten Anwendung zu beschreiben, reicht ein Artikel definitiv nicht aus, daher werde ich nur den Anfang beschreiben. Wenn jemand Fragen hat, fragen Sie in den Kommentaren oder in PM.
Alles beginnt mit der Initialisierung des Anwendungskontexts in der Hauptfunktion durch Aufrufen von:
Initialisierung long init_module(struct module_t * main_module);
Nach der Initialisierung enthält die main_module-Struktur Zeiger auf den Grafikkontext und den aktuellen Anwendungsprozess.
Als Nächstes müssen Sie das Hauptformular erstellen. Dies geschieht wie folgt:
Erstellen Sie ein Master-Formular struct cFrameForm * ptr_main_form = malloc(sizeof(struct cFrameForm)); cFrameForm_ctor(ptr_main_form, "Passwords Master", main_module.m_process);
Überprüfen Sie, ob sich im Dateisystem ein Kennwortcontainer befindet:
Überprüfung der Verfügbarkeit von Containern int check_database() { struct FileInput * ptr_file_input = (struct FileInput *) malloc(sizeof(struct FileInput)); FileInput_ctor_Ex(ptr_file_input, DATABASE_FILE); if (FileInput_is_good(ptr_file_input)) { FileInput_dtor(ptr_file_input, FREE_MEMORY); return 0; } FileInput_dtor(ptr_file_input, FREE_MEMORY); return -1; }
Wir zeigen das Dialogfeld zur Eingabe des Hauptkennworts. Wenn der Container bereits vorhanden ist, versuchen wir, ihn mit dem eingegebenen Hauptkennwort zu entschlüsseln. Wenn kein Container vorhanden war, verwenden Sie das eingegebene Hauptkennwort, um einen neuen Container zu erstellen.
Geben Sie das Hauptkennwort ein void get_master_password(struct cFrameForm * ptr_form, char * master_password) {
Alle weiteren Arbeiten der Anwendung basieren auf einem Zyklus der Verarbeitung von Nachrichten vom Betriebssystem, bis das Hauptformular geschlossen wird.
Nachrichtenverarbeitung while (ptr_form->ModalResult != mrQuit) { struct Message * ptr_message = cWinApp_get_message(ptr_form->CurrApplication, 0, 1, MSG_USER); switch(ptr_message->msgid) { case MSG_SHUTUP:
Das Ergebnis der Arbeit beim Start im Emulator ist unten dargestellt:

Falls gewünscht, mit dem vollständigen Quellcode
finden Sie auf Github unter dem Link.Starten Sie auf einem realen Gerät
Wie ich bereits sagte, ist das Starten auf einem realen Gerät schwierig, da die Software zum Synchronisieren von Cybiko mit einem Computer moderne Betriebssysteme nicht unterstützt. Gemäß den hier enthaltenen Anweisungen konnte ich Cybiko mit Windows 2000 synchronisieren, das in Virtual Box ausgeführt wird. Von den Nuancen kann ich feststellen, dass das Programm Cybiko nur sah, wenn es über USB verbunden und automatisch an die virtuelle Maschine weitergeleitet wurde. Dies ist wahrscheinlich der Grund, warum der Autor des Handbuchs schreibt, dass er in den Einstellungen der USB Virtual Box als permanentes Gerät für diesen Computer hinzugefügt werden muss.
Das Ergebnis der Synchronisation im Bild unten:

Das Ergebnis meiner Bewerbung ist im folgenden Video dargestellt:
Fazit
Ich habe viele wundervolle Erinnerungen an Cybiko Xtreme, und dieses wundervolle Gerät wieder zu berühren war verdammt schön für mich. Ich möchte mich bei den Machern für die geleistete Arbeit bedanken. Ich möchte auch den Erstellern des Emulators, der Foren und Websites auf Cybiko sowie meiner Frau für ihre Hilfe bei der Aufnahme des Videos und der Bearbeitung dieses Artikels danken.
Vielen Dank für Ihre Aufmerksamkeit!