
Pendahuluan
Hai Habr! Saya ingin berbagi pengalaman saya menulis aplikasi untuk komputer genggam yang sangat tua, yang sangat serius, yaitu rilis Cybiko Xtreme 2001. Bagi mereka yang tertarik dengan bagaimana pengembang ponsel hidup di awal tahun 2000-an, selamat datang di cat.
Tentang Cybiko Xtreme
Jadi, perangkat ini datang kepada saya pada tahun 2002 yang jauh dan menyebabkan kegembiraan total. Saya tidak bisa menghargai kemampuan komunikasi, karena di kota saya, saya tidak bertemu orang-orang dengan PDA seperti itu lagi, namun, secara umum, kemampuan untuk bermain banyak permainan tanpa harus duduk di depan komputer sangat fantastis. Dalam banyak hal, pencipta perangkat berfokus pada kemampuan jaringan PDA. Pengembang memilih jaringan radio mesh untuk menghubungkan perangkat satu sama lain. Secara langsung perangkat-perangkat itu saling berhubungan pada jarak hingga 100 meter, namun, dimungkinkan untuk terhubung satu sama lain melalui perangkat lain, dan secara teori, dengan jangkauan jaringan yang padat, jaraknya tidak terbatas. Perangkat memiliki kesempatan untuk mengisi profil Anda (bahkan sepertinya melampirkan foto, meskipun akan ada sedikit arti di layar abu-abu), mengobrol dengan pengguna lain dengan minat yang sama, mencari teman baru, dll. Itu menyerupai semua jejaring sosial ini, walaupun kemudian, sejauh yang saya tahu, istilah seperti itu belum ada. Jika ada banyak perangkat, saya pikir proyek akan lepas landas, namun, sayangnya, ada yang salah dengan pembuatnya.
Menemukan PDA ini dalam hal-hal lama saya, saya ingin menukarkannya. Sangat tidak menarik untuk memainkan game-game lama (namun, mereka tidak terlihat terutama dibandingkan dengan yang baru), tetapi mencoba mengembangkan aplikasi dan merasakan bagaimana pengembang mobile pertama kali hidup jauh lebih menarik.
Ide aplikasi
Karena, berdasarkan sifat kegiatan saya, saya terhubung dengan keamanan informasi dan topik ini sangat menarik bagi saya, saya memutuskan untuk membuat aplikasi di bidang yang sama. Yang paling sederhana (dan setidaknya sesuatu yang berguna?) Menurut saya aplikasi "pengelola kata sandi". Aplikasi ini memungkinkan Anda untuk melihat bagaimana pengembangan antarmuka pengguna grafis, dan bekerja dengan sistem file (penyimpanan wadah terenkripsi dengan kata sandi).
Sebagai kriptografi untuk melindungi wadah, saya memutuskan untuk menggunakan
enkripsi XOR . Kuncinya adalah kata sandi utama. Kekuatan kriptografi dari enkripsi ini sangat tergantung pada panjang kunci, dan tidak dianjurkan untuk menggunakannya dalam sistem yang serius, namun, enkripsi ini memiliki satu kelebihan yang serius - sangat mudah untuk diterapkan. Karena aplikasi dibuat semata-mata untuk tujuan hiburan, enkripsi seperti itu sangat ideal.
Emulator
Menghubungkan Cybiko Xtreme ke komputer modern adalah proses yang agak rumit, jadi saya memutuskan untuk melakukan pekerjaan pada uji peluncuran aplikasi pada emulator (untungnya itu).
Penampilan ditunjukkan pada gambar di bawah ini.

Ada beberapa fitur untuk mengunduh aplikasi ke emulator. Menurut petunjuk yang ditemukan di
sini, aplikasi dapat dikirim menggunakan tombol "Kirim" di jendela "Konsol", namun, tidak peduli bagaimana saya mencoba, saya tidak berhasil. Forum Planet Cybiko (sayangnya forum saat ini ditutup) memiliki tautan ke alat yang memungkinkan Anda membuat disk ram Cybiko Anda sendiri. Oleh karena itu, cukup membuat ram-disk dengan aplikasi yang dikompilasi dan me-restart emulator dengannya.
SDK
Menemukan SDK di Internet tidak terlalu sulit. Setelah membongkar dan menganalisis struktur direktori, saya pertama kali menarik perhatian ke direktori doc, yang ternyata menjadi bantuan yang sangat berguna menjelaskan bagaimana, pada prinsipnya, untuk mengkompilasi aplikasi, dan struktur apa yang seharusnya dimiliki proyek.
Saya menemukan banyak contoh aplikasi di direktori demo. Yang paling menarik adalah aplikasi dari direktori tutorial, yang selangkah demi selangkah menjelaskan prinsip-prinsip pengembangan untuk Cybiko Xtreme. Semuanya sederhana, mudah diakses, dan dapat dimengerti.
Penulisan kode
Struktur proyek yang minim konten disajikan di bawah ini:
Struktur proyekproject res root.inf src source1.c … make.bat
File root.inf berisi meta-data aplikasi, yaitu informasi tentang jenisnya (aplikasi, game atau perpustakaan), versi, versi minimum dari sistem operasi (seperti di Android), nama unik, dll.
File make.bat berisi perintah untuk membangun aplikasi menggunakan SDK. Faktanya, seluruh perakitan dilakukan dengan perintah panggilan Cybiko C Compiller:
"C:\Program Files (x86)\Cybiko\Cybiko_SDK\bin\vcc" -R0 src/*.c res/*.help res/*.inf -o passwords_master.app
Catatan penting: ketika membangun Windows 7 untuk vcc.exe, Anda harus mengatur mode kompatibilitas ke Windows XP (Paket Layanan 2), jika tidak ada masalah dengan penyusun memulai.
Direktori src berisi kode sumber untuk program tersebut. Hasil kompilasi adalah file * .app.
Untuk menggambarkan pengembangan seluruh aplikasi, satu artikel jelas tidak cukup, jadi saya hanya akan menjelaskan awal saja. Jika seseorang memiliki pertanyaan, tanyakan di komentar atau di PM.
Semuanya dimulai dengan menginisialisasi konteks aplikasi dalam fungsi utama dengan memanggil:
Inisialisasi long init_module(struct module_t * main_module);
Setelah inisialisasi, struktur main_module berisi pointer ke konteks grafik dan proses aplikasi saat ini.
Selanjutnya, Anda perlu membuat formulir utama. Ini dilakukan sebagai berikut:
Buat formulir induk struct cFrameForm * ptr_main_form = malloc(sizeof(struct cFrameForm)); cFrameForm_ctor(ptr_main_form, "Passwords Master", main_module.m_process);
Periksa apakah ada wadah kata sandi di sistem file:
Memeriksa Ketersediaan Wadah 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; }
Kami menampilkan kotak dialog input kata sandi utama. Jika wadah sudah ada, maka kami mencoba mendekripsi dengan kata sandi master yang dimasukkan. Jika tidak ada wadah, maka gunakan kata sandi master yang dimasukkan untuk membuat wadah baru.
Masukkan Kata Sandi Utama void get_master_password(struct cFrameForm * ptr_form, char * master_password) {
Semua pekerjaan lebih lanjut dari aplikasi ini dibangun di sekitar siklus pemrosesan pesan dari sistem operasi sampai bentuk utama ditutup.
Pemrosesan pesan 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:
Hasil kerja saat startup di emulator disajikan di bawah ini:

Dengan kode sumber lengkap, jika diinginkan
dapat ditemukan di github di tautan.Luncurkan di perangkat nyata
Seperti yang sudah saya katakan, meluncurkan pada perangkat nyata itu sulit, karena perangkat lunak untuk sinkronisasi Cybiko dengan komputer tidak mendukung sistem operasi modern. Menurut instruksi yang ditemukan di
sini , saya dapat menyinkronkan Cybiko dengan Windows 2000 yang berjalan di Virtual Box. Dari nuansa, saya dapat perhatikan bahwa program melihat Cybiko hanya ketika terhubung melalui USB dan secara otomatis diteruskan ke mesin virtual. Ini mungkin sebabnya penulis manual menulis bahwa ia perlu ditambahkan sebagai perangkat permanen untuk mesin ini dalam pengaturan USB Virtual Box.
Hasil sinkronisasi pada gambar di bawah ini:

Hasil dari aplikasi saya disajikan dalam video berikut:
Kesimpulan
Saya memiliki banyak kenangan indah yang terhubung dengan Cybiko Xtreme, dan sekali lagi menyentuh perangkat yang luar biasa ini sangat bagus untuk saya. Saya ingin mengucapkan banyak terima kasih kepada penciptanya atas pekerjaan yang dilakukan. Saya juga ingin mengucapkan terima kasih kepada pembuat emulator, forum, dan situs di Cybiko, serta istri saya atas bantuan mereka dalam merekam video dan mengedit artikel ini.
Terima kasih atas perhatian Anda!