Banyak yang melihat video demo asisten pribadi Hound, yang sekuat mungkin dan bahkan di depan aplikasi terkenal seperti Google Now dan Siri. Hound juga tersedia untuk diunduh gratis di Google Play (di AS), tetapi, sayangnya, sedang dikembangkan dan memerlukan undangan saat startup.Segera tangan saya disisir untuk segera menguji keajaiban ini, dan, lelah menunggu undangan melalui pos (sekitar satu menit kemudian), saya mengambil debugger ... yang tidak pernah saya butuhkan, karena semuanya ternyata lebih sederhana, tetapi tentang hal ini secara berurutan.Catatan: Saya bukan pengembang Android profesional, cracker, dll., Semuanya dilakukan untuk memuaskan rasa ingin tahu saya sendiri dan dengan risiko saya sendiri. Laporkan ketidakakuratan dalam komentar atau pesan pribadi.Pertama-tama, Anda perlu mendapatkan file apk dengan aplikasi tersebut. Anda dapat mencari di internet, tetapi kami tidak mencari cara yang mudah. Saya mengunduh versi terbaru dari Google Play dan mengeluarkan aplikasi dari folder /data/app/com.hound.android.app-1 (diperlukan hak administrator, root, root).Aplikasi apa pun untuk Andoid adalah file apk, yang sebenarnya merupakan arsip zip berganti nama. Jika Anda membukanya dengan pengarsipan apa pun, kita akan melihat gambar berikut:
Pertimbangkan isinya lebih detail:- assets — , , ,
- lib — .so .
- META-INF — apk , SHA1 . , , . , , Android , .
- res — , xml , .
- AndroidManifest.xml — , , .
- classes.dex — , (), Java.
- resources.arsc — , , , res, .
Kami beruntung bahwa hampir seluruh aplikasi, dengan pengecualian perpustakaan pihak ketiga, ditulis dalam Java, yang berarti kita tidak perlu duduk di debugger dan membongkar kode tingkat rendah.Sekarang Anda perlu membuka paket class.dex dan mencoba mengeluarkan kode darinya. Untuk ini kami menggunakan Apktool . Dari halaman "Instal", unduh file jar yang dapat dieksekusi, serta pembungkus untuk menggunakannya dari baris perintah. Cukup menyalin kedua file ke folder aplikasi (atau tambahkan ke variabel lingkungan) dan jalankan perintah berikut:apktool -r decode _.apk
The opsi-r adalah diperlukan agar tidak membuang-buang waktu membongkar sumber daya yang kita tidak akan mengedit.Sekarang di folder dengan nama yang sama dengan nama aplikasi, kita sudah melihat sedikit lebih banyak daripada di pengarsipan. File class.dex sekarang hilang, dan sebagai gantinya folder smali muncul, di mana kelas disimpan sebagai file teks. Tapi hei, dimana Java? Di sekitar ada beberapa file dengan ekstensi .smali, yang menyimpan sesuatu yang mirip dengan assembler.Ini adalah bahasa opcode Dalvik ke mana kode Java dikompilasi. Ada aplikasi yang dapat mencoba mengembalikan kode sumber dari file-file ini, tetapi kemudian Anda perlu mengubah kode ini nanti, dan membangun kembali dari kode Java adalah tugas tanpa pamrih. Oleh karena itu, kita akan memahami kode smali, karena cukup dimengerti, dan juga nama fungsi tetap utuh. Yang akan kita gunakan.Temukan kode yang bertanggung jawab untuk mengakses aplikasi. Mengetahui nama aplikasi dan bahasa Inggris, menjadi jelas bahwa kelas utama aplikasi berada di folder smali / com / hound / android / appcommon . Masalahnya adalah menemukan tempat di mana undangan diperiksa. Pencarian file akan membantu kami, misalnya, di Windows Anda dapat menggunakan perintah:findstr /s /i /m _ *.*
Kode dapat berisi "undangan" atau "undangan", jadi kami akan menghapus huruf terakhir dari kata dan mencari "undangan". Bingo, ini dia, metode isInvitationComplete () di file smali / com / hound / android / appcommon / app / Config.smali :.method public isInvitationComplete()Z
.locals 2
.prologue
.line 578
const v0, 0x7f080174
const v1, 0x7f0b001f
invoke-direct {p0, v0, v1}, Lcom/hound/android/appcommon/app/Config;->getBoolean(II)Z
move-result v0
return v0
.end method
Ia meminta variabel Boolean dari parameter aplikasi dan mengembalikan nilainya. Tetapi mengapa kita membutuhkan kesulitan seperti itu! Mari selalu kembali benar . Ganti "move-result v0" dengan "const / 4 v0, 0x1" dan simpan file. Mari berharap seluruh aplikasi bergantung pada fungsi kecil ini, yang mulai sekarang akan menganggap kami penguji beta lengkap.Tetap hanya untuk merakit kembali aplikasi. Kami menggunakan utilitas Apktool yang luar biasa lagi:apktool -r build _
Jangan lupa bahwa kita perlu seluruh folder dibongkar sebelum itu, dan bukan hanya smali . Setelah apktool selesai bekerja, buka folder ini, lalu ke dist , di mana file apk berkumpul berada.Dan itu tidak akan berfungsi, atau lebih tepatnya, itu tidak akan diinstal. Kami mengubah konten aplikasi, yang berarti tanda tangan sekarang tidak valid. Anda harus menandatangani ulang aplikasi. Jika Anda seorang pengembang Android, Anda dapat menggunakan tanda tangan dan SDK Android Anda sendiri. Tetapi banyak yang tidak memiliki keduanya, mereka dapat menggunakan tanda tangan tes, dan secara terpisah diambil dari signapk.jar utilitas SDK. Ada juga utilitas sign.jar yang sudah memiliki tanda tangan bawaan . Cukup menjalankan perintah berikut:java -jar sign.jar _.apk
Selanjutnya muncul file file_name.s.apk , yang akan menjadi aplikasi yang ditandatangani. Kami mengunggahnya ke perangkat, menginstalnya, dan menikmati aplikasi yang berfungsi penuh!
Dan Anda bisa menemukan di Internet versi yang ditambal yang baru saja diposkan seseorang .