Jika Anda pernah melihat aplikasi Android, Anda tahu untuk menghargai kemampuan menganalisis target Anda di tingkat paling lanjut. Analisis program dinamis akan memberi Anda gambaran yang cukup baik tentang kegiatan aplikasi dan perilaku umum Anda. Namun terkadang Anda hanya ingin menganalisis aplikasi Anda tanpa menjalankannya. Anda ingin melihat komponennya, menganalisis bagaimana mereka berinteraksi dan bagaimana data ternoda dari satu titik ke titik lainnya.
Ini adalah faktor utama yang mendorong pengembangan Smalisca . Memang ada beberapa alasan bagus untuk analisis kode statis sebelum yang dinamis . Sebelum berinteraksi dengan aplikasi saya ingin tahu bagaimana aplikasi telah dibangun, jika ada API dan menghasilkan semua jenis grafik aliran panggilan . Sebenarnya grafik sangat penting bagi saya karena mereka memvisualisasikan hal -hal. Alih -alih melompat dari file ke file, dari kelas ke kelas, saya hanya melihat grafiknya.
Sementara pembangunan grafik telah menjadi alasan penting bagi saya untuk membuat kode alat seperti itu, Smalisca memiliki beberapa fitur rapi lain yang harus Anda baca.
Saat ini ada beberapa fungsi utama seperti:
penguraian
Anda dapat mengurai seluruh direktori file Smali dan mengekstrak :
Anda kemudian dapat mengekspor hasilnya sebagai JSON atau SQLITE .
Memiliki rampasan di halaman parsing untuk informasi lebih lanjut.
menganalisis
Setelah mengekspor hasil, Anda akan mendapatkan prompt interaktif untuk melihat lebih dekat pada data parsed Anda. Anda dapat mencari kelas, properti, metode, dan bahkan panggilan metode. Anda kemudian dapat menerapkan beberapa filter ke kriteria pencarian Anda seperti:
smalisca> sc -c class_name -p test -r 10 -x path -s class_type
Perintah ini akan mencari 10 (-r 10) kelas yang berisi tes pola (-p) di nama kelas mereka (-c). Setelah itu perintah akan mengecualikan jalur kolom (-x jalur) dari hasil dan mengurutkannya berdasarkan jenis kelas (-s).
Mari kita lihat contoh lain:
smalisca> scl -fc com/android -fm init -r 10
Ini akan mencari semua panggilan metode yang nama kelas panggilannya berisi pola com/android (-fc). Selain itu kita dapat mencari panggilan yang berasal dari metode yang namanya berisi pola init (-fm).
Anda tentu saja dapat membaca perintah Anda dari sebuah file dan menganalisis hasil Anda dengan cara yang sama : seperti:
$ cat cmd.txt sc -c class_name -p com/gmail/xlibs -r 10 -x path berhenti $ ./smalisca.py analyzer -i results.sqlite -f sqlite -c cmd.txt ...
Memiliki rampasan di halaman analisis untuk informasi lebih lanjut.
API Web
Smalisca menyediakan layanan web REST untuk dengan mudah berinteraksi dengan hasil dengan hanya menggunakan klien web. Dengan cara ini Anda dapat mengakses data di aplikasi web Anda sendiri (mewah) dan memiliki pemisahan yang bersih antara backend dan frontend.
Baca lebih lanjut tentang API REST yang tersedia di halaman API Web.
memvisualisasikan
Saya pikir ini fitur Smalisca yang paling berharga. Kemampuan untuk memvisualisasikan hasil Anda dengan cara yang terstruktur membuat hidup Anda lebih nyaman. Bergantung pada apa yang Anda minati, alat ini memiliki beberapa fitur gambar grafik yang ingin saya promosikan.
Pada awalnya Anda dapat menggambar paket Anda termasuk kelas, properti, dan metode mereka:
smalisca> dc -c class_name -p tes -f dot -o /tmp/classes.dot :: info menulis hasil ke /tmp/classes.dot Smalisca>
Ini pertama -tama akan mencari kelas yang nama kelasnya berisi tes dan kemudian mengekspor hasil dalam bahasa graphviz dot . Anda kemudian dapat secara manual menghasilkan grafik menggunakan Dot , Neato , Circo dll. Atau Anda melakukannya dengan menggunakan prompt interaktif:
smalisca> dc -c class_name -p tes -f pdf -o /tmp/classes.pdf --prog neato :: info menulis hasil ke /tmp/classses.pdf Smalisca>
Memiliki jarahan di halaman gambar untuk informasi lebih lanjut.
Hasil output sebagai tabel.
Hubungan dasar antara kelas dan modul.
Lihat halaman tangkapan layar.
Lihat halaman instalasi. Persyaratan:
Setelah menginstal alat, Anda mungkin ingin pertama -tama mengambil aplikasi Android (APK). Gunakan APKTOOL atau alat ADU saya sendiri untuk membuang konten APKS. Demi kesederhanaan, saya akan menggunakan Fakebanker yang telah saya analisis di posting blog sebelumnya.
Tapi pertama -tama mari kita lihat opsi utama alat:
$ Smalisca --help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/', __ /' __` __` /'__ ` / /', __ /'___ /' __` `
/ __, `/ / / / .
/ ____/ _ _ _ __/.
/___//_//_//_//__//_//____//_//___//____//__//_/
--------------------------------------------------------------------------------
:: Penulis: Victor <Syneox> Dorneanu
:: Desc: Alat Analisis Kode Statis untuk File Smali
:: url: http://nullsecurity.net, http: // {blog, www} .dornea.nu
:: Versi: 0.2
--------------------------------------------------------------------------------
Penggunaan: Smalisca (Sub-Komandan ...) [Opsi ...] {Argumen ...}
[-] Alat Analisis Kode Statis (SCA) untuk file Baskmali (SMALI).
Perintah:
penganalisa
[-] menganalisis hasil menggunakan prompt interaktif atau pada baris perintah.
parser
[-] Parse file dan mengekstrak data berdasarkan sintaks Smali.
web
[-] menganalisis hasil menggunakan API Web.
Argumen opsional:
-h, --help menunjukkan pesan bantuan ini dan keluar
--Debug sakelar output debug
--quiet menekan semua output
--log-level {debug, info, peringatkan, kesalahan, kritis}
Ubah Level Logging (Default: Info)
-v, --version menampilkan nomor versi program dan keluar
Pertama -tama saya akan menguraikan beberapa direktori untuk file smali sebelum melakukan hal -hal analisis:
$ smalisca parser -l ~/tmp/falebanker2/dumped/smali -s java -f sqlite -o fakebanker.sqlite ... :: Info Parsing. Java File di/Home/Victor/TMP/FakeBanker2/Dumped/Smali ... :: Info selesai parsing! :: info mengekspor hasil ke sqlite :: Info Kelas Ekstrak ... :: Info Extract Class Properties ... :: Info Metode Kelas Ekstrak ... :: Info Extract Calls ... :: info melakukan perubahan pada sqlite db :: info menulis hasil ke fakebanker.sqlite :: info pemindaian selesai
Juga lihat halaman parsing untuk informasi lebih lanjut.
Sekarang Anda bebas melakukan apa pun yang Anda inginkan dengan ekspor yang Anda hasilkan. Anda dapat memeriksa SQLite DB secara langsung atau menggunakan fitur analisis Smaliscas :
$ smalisca analyzer -f sqlite -i fakebanker.sqlite ... Smalisca> SC -X Path -r 10 +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+ | ID | class_name | class_type | class_package | kedalaman | +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+ | 1 | Landroid/dukungan/v4/net/connectivityManagerCompat | Publik | Landroid.support.v4.net | 5 | | 2 | Landroid/dukungan/v4/view/accessibleDelegateCompat $ accessibleDelegatejellyBeanImpl | | Landroid.support.v4.view | 5 | | 3 | Landroid/Support/V4/View/ViewCompat $ ViewCompatImpl | Antarmuka Abstrak | Landroid.support.v4.view | 5 | | 4 | Landroid/dukungan/v4/app/aktivitasCompathoneycomb | | Landroid.support.v4.app | 5 | | 5 | Landroid/dukungan/v4/app/nosavestateframelayout | | Landroid.support.v4.app | 5 | | 6 | Landroid/dukungan/v4/net/connectivityManagerCompathoneycombMr2 | | Landroid.support.v4.net | 5 | | 7 | Lcom/gmail/xpack/buildConfig | Final Publik | Lcom.gmail.xpack | 4 | | 8 | Landroid/Support/V4/App/BackStackRecord $ OP | Final | Landroid.support.v4.app | 5 | | 9 | Landroid/dukungan/v4/app/fragmentManagerImpl | Final | Landroid.support.v4.app | 5 | | 10 | Landroid/Dukungan/V4/App/ShareCompat $ ShareCompatImpl | Antarmuka Abstrak | Landroid.support.v4.app | 5 | +----+-----------------------------------------------------------------------------------------+--------------------+--------------------------+-------+
Juga lihat halaman analisis untuk lebih banyak perintah dan opsi yang tersedia.
Silakan merujuk ke halaman gambar untuk contoh lengkap.
Smalisca telah dirilis di bawah lisensi MIT . Lihatlah file lisensi .
Alat ini didedikasikan untuk LICĂ . Terima kasih banyak juga untuk:
Stephen McAllister
- Terima kasih banyak atas semua jam yang penuh dengan debugging APK dan ide -ide hebat
Gf saya
- Terima kasih banyak atas kesabaran dan pengertian Anda!
nullsecurity.net
- Retas planet ini!