Kisah bagaimana ketel Autoplay Media Studio 8.5.3.0 pecah

gambar

Karena tidak sulit ditebak, teko adalah saya.

Suatu hari saya ingin melihat ke sumber satu utilitas, jelas dibuat menggunakan alat AMS (file .cdd di sebelah .exe dan beberapa lua * .dll). Beberapa tahun yang lalu saya menganalisis secara rinci satu program yang dibuat dengan cara yang serupa dan gagasan pengemasan .cdd, yang merupakan arsip zip biasa dengan kata sandi, tersedia. Yah, tanpa ragu-ragu, saya mendorong AMSUnpacker dan menerima kesalahan pembongkaran. Nah, sejak saat ini kesenangan dimulai ...

Pikiran pertama yang terpikir oleh saya adalah bahwa file itu dikemas dengan sesuatu selain UPX (yang secara alami saya bongkar). Yah, saya hanya tidak memeriksanya (DIE, Exeinfo PE, Nauz File Detector) dan semua orang meyakinkan saya bahwa tidak, itu tidak dikemas. Yah, saya pikir saya akan membandingkan .exe dangkal menggunakan Total Commander dengan program yang sebelumnya dibongkar dan yang ini, dan ternyata .exe sangat berbeda (saya dulu membandingkan program lain pada AMS dan perbedaannya hanya dalam satu byte, pada kenyataannya, dalam kata sandi yang ditulis dengan teks biasa hanya di .exe itu sendiri dan di bagian sumber daya). Menjadi jelas bahwa ini adalah semacam modifikasi dan hanya versi baru AMS. Saya percaya pada yang terakhir dengan susah payah, mengetahui (well, awalnya saya pikir saya tahu) bahwa pengembang telah mengalahkan program untuk waktu yang lama, tetapi tidak mulai memeriksa apakah ini atau tidak, dan hampir tidak akan memberikan apa-apa.

Saya mulai mempelajari lebih detail, entah bagaimana di x64dbg, yang saya gunakan di “You”, menemukan dalam versi lama program tempat di mana kata sandi “dibaca”. Setelah mencari-cari di x64dbg yang sama dalam versi "baru", ternyata mereka tidak begitu berbeda, tetapi ada lebih banyak fungsi di dalamnya daripada yang lama. Saya menemukan tempat yang sama di mana alih-alih push <address yang didambakan tempat kata sandi disimpan> ada beberapa jenis mov <sesuatu di sana> dan beberapa panggilan ke beberapa fungsi lain, dan beberapa baris di bawah kode ini mirip dengan yang ada di versi lama.

gambar
(di sebelah kiri adalah versi lama, di sebelah kanan adalah yang baru)

Dan di sini saya sedih, karena pengetahuan debugger saya jelas tidak cukup untuk memahami ini semua.
Ada satu pemikiran - untuk menemukan beberapa program serupa lainnya yang bisa dibongkar dan membandingkan .exe mereka. Program seperti itu ditemukan oleh penulis yang sama dengan yang saya coba bongkar. Dan perbandingan file memberikan hasilnya. Selain perbedaan kecil, seluruh blok berbagai data ditemukan:

gambar

Dan kegembiraan yang saya temukan tempat unik di mana ternyata kata sandi itu terkandung, dan kekecewaan bahwa itu jelas bukan kata sandi, dalam bentuk seperti di versi sebelumnya.

Tidak ada pilihan selain memahami debugger. Seluruh "masalah" adalah bahwa saya mengetahui assembler pada level beberapa perintah, dengan representasi yang sangat dangkal dari apa yang mereka lakukan, dan debugger itu sendiri berada pada level beberapa video yang ditonton di youtube dan dengan sedikit pengalaman dalam menggunakannya, terutama oleh "metode poke".

Setelah satu jam menjalankan debugger dan jumlah restart yang tak terhitung, saya entah bagaimana menemukan tempat di mana byte yang didambakan dibaca dan sedikit kemudian saya menemukan sepotong kode yang melakukan manipulasi dari byte ini:

gambar

Butuh banyak waktu untuk memahami apa yang sedang dilakukan di sana.

Entah bagaimana saya menemukan bahwa ini adalah semacam cipherpad, di mana ada dua tabel, satu adalah kata sandi terenkripsi, di mana karakter yang sesuai hanya menunjukkan posisi di notepad kedua.

gambar

Secara umum, mengganti nilai-nilai tabel bawah dengan nilai-nilai yang sesuai dari tabel atas, kita mendapatkan array byte: 7B 10 DD 5A 4D 26 72 EE B2 2A 04 2B 6E F7 14 E2 F9 14 F8 9E 8A 99 28 AE B8 4B C0 D7 42 DA AD .

Untuk apa array unik byte lainnya, sebelum dan sesudah kata sandi perlu di-decrypt, saya tidak mengerti, tapi saya tidak terlalu berlebihan. Saya menduga ada beberapa checksum ...

Dan kemudian terserah Anda untuk mengubahnya menjadi string dan unzip arsip .cdd yang dihargai dengan kata sandi ini. Masalah kecil adalah bahwa garis yang dihasilkan tidak dapat dimasukkan ke dalam pengarsipan melalui Ctrl + C -> Ctrl-V, karena karakter "istirahat" di clipboard (terutama tidak mempelajari esensi). Pembongkaran hanya dimungkinkan secara program. Untungnya, ada beberapa pengetahuan tentang C # (tingkat yang secara umum tidak jauh berbeda dari tingkat pengetahuan debugger) dan sedikit pengalaman dalam mempelajari prinsip operasi AMSUnpacker yang disebutkan sebelumnya, yang juga ditulis dalam C # dan tidak sulit untuk melihat apa yang ada di sana dan bagaimana.

Hampir di atas lutut ia menumpuk utilitas untuk memeriksa operabilitas dari algoritma yang dipelajari sebelumnya, dan voila, itu berhasil.

Anda dapat mengunduhnya di sini .

gambar

Program, mirip dengan AMSUnpacker yang disebutkan sebelumnya, membuat folder extracted_cdd di sebelah .exe dengan isi arsip .cdd.

Setelah berhasil membongkar file .cdd yang diidam-idamkan, saya mengetahui bahwa ini adalah versi "baru" (dari akhir 2018) AMS 8.5.3.0. Dan di situs web mereka membaca tentang versi baru: Fitur: Meningkatkan keamanan file data versi komersial. . Ya, ternyata itu tidak berhasil dengan baik ...

Saya punya pertanyaan untuk mereka yang tahu, seperti algoritma untuk menyembunyikan kata sandi, apakah itu bagian dari beberapa algoritma enkripsi standar (maksud saya sekarang dapat diterapkan dalam program, dan tidak secara historis), atau apakah itu, kemungkinan besar, para pengembang memikirkannya?

PS Saya tahu bahwa paling mudah untuk mendapatkan kode sumber untuk program lua (yang menggunakan AMS) melalui lua * .dll yang ditambal, yang menjelajahi Internet dan / atau kait eksternal fungsi lua_load () dalam lua * .dll yang sama. Ini semua yang pernah saya lakukan. Dalam situasi ini, adalah murni minat olahraga untuk mencari tahu cara mendapatkan kata sandi untuk .cdd. Dan saya juga mengerti betul bahwa tidak mungkin ada orang yang akan membutuhkannya dan tidak memiliki nilai praktis.

Saya mungkin berlebihan tentang "teko", karena ada sedikit pengalaman dalam pemrograman dan membalikkan, tetapi ini hanyalah hobi kecil "untuk diriku sendiri" dan tidak ada banyak waktu atau keinginan untuk mempelajari secara mendalam hal ini.

PPS Ini adalah artikel pertama saya tentang Habré, karena, mungkin, umumnya yang pertama dari jenis ini.

Source: https://habr.com/ru/post/id451524/


All Articles