Mari kita ambil Dashen apk sebagai contoh Melalui analisis skrip lua penyahsulitan aplikasi sebelumnya, kita boleh menyahsulit skrip lua apk Dashen Sekarang mari kita menyahsulit sumbernya (fail dan gambar konfigurasi, dsb.). Mari kita ambil fail konfigurasi yang lebih penting sebagai contoh, sebelum penyahsulitan:
Pengepala fail juga mempunyai nilai tandatangan: fuckyou!. Melihat ini, kami mula-mula memikirkan sama ada ia juga disulitkan dengan xxtea Kami menggunakan kaedah di atas untuk menyahsulitnya dengan xxtea, dan kemudian menyahmampatnya Kami mendapati bahawa ia masih bercelaru terpaksa menafikan apa yang kita katakan tadi. Kami terus menyahsulit fail konfigurasi langkah demi langkah.
Fikirkan sejenak, pengepala fail ialah: fuckyou! Jika anda ingin menyahsulit fail, anda semestinya perlu memproses rentetan: fuckyou! , jadi kita sepatutnya boleh mencari rentetan fuckyou dalam idaPro, dan kemudian menggunakan analisis fungsi, nyahpepijat dan penyahsulitan dalam segmen kod di mana rentetan fuckyou berada. Buka idaPro dan buka paparan rentetan, cari "fuckyou" untuk mengesahkan hipotesis kami
Tiada apa-apa! Tekaan saya ialah pengoptimuman telah dilakukan dan rentetan telah dioptimumkan di suatu tempat.
Petunjuk telah rosak, tetapi rasa ingin tahu masih membolehkan kami meneruskan Pada masa ini, kami boleh menyemak imbas kod sumber rangka kerja cocos2d, digabungkan dengan beberapa maklumat di Internet, dan mendapati bahawa pemprosesan fail cocos2d dirangkumkan ke dalam. kelas CCFileUtils:
Pergi ke idaPro, dalam tetingkap eksport, cari getData:
Masukkan dua fungsi ini, nyahkompilasi dan mempunyai lihat, mereka tidak kelihatan sama, jadi langkau, tetapi tuliskannya dahulu semasa penyahpepijatan dinamik, kita boleh berehat di sini.
Mari lihat getFileData:
Tengok gambar di atas, rasa macam ni je, haha! Tetapi kita masih perlu terus menganalisis dan mengesahkan. Apabila fungsi memproses tanda dalam pengepala fail, ia tidak membandingkannya secara langsung dengan aksara tetapi membandingkannya satu demi satu dengan nilai ASCII mereka, jadi kami tidak dapat mencari fuckyou dalam tetingkap rentetan! daripada. Kemudian lihat ke bawah, apabila fungsi menentukan bahawa teks itu mematuhi format yang disulitkan, ia akan mengalih keluar 8 bait pertama (sialan anda!), dan kemudian melakukan operasi XOR dengan nilai dalam jadual XOR, menggelungkan setiap 256 bait .
Kita boleh lihat byte_A1C55F:
Pada ketika ini, pada asasnya kita boleh menentukan fungsi dan proses penyahsulitan fail. Kita boleh nyahpepijat dan mengesahkan secara dinamik sekali lagi. Selepas apl memanggil fungsi ini, mesti ada kandungan teks yang jelas dalam ingatan. Apabila kami nyahpepijat, kami mengganggu pada permulaan dan penghujung fungsi getData dan CCFileUtilsAndroid:doGetFileData Fungsi GetData mengganggu:
.
Walaupun kedua-dua fungsi terganggu, ia hanya berhenti seketika pada titik putus doGetFileData, menunjukkan bahawa fungsi doGetFileData digunakan semasa proses penyahsulitan, yang selaras dengan jangkaan kami Lihat daftar dan ingatan:
Baiklah, sekarang, kita boleh menyalin jadual XOR byte_A1C55F, dan kemudian meniru proses penyahsulitan apl (anda boleh mencari skrip penyahkodan xor daripada GitHub dan mengubah suainya sedikit) dan menulis alat kecil ke Semua sumber daripada Dashen.apk telah dinyahsulit:Atas ialah kandungan terperinci Cara menyahsulit sumber apl dalam kejuruteraan terbalik cocos2d-LUA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!