Repositori ini meng -host alat analisis aliran data flowdroid. Flowdroid secara statis menghitung aliran data dalam aplikasi Android dan program Java. Tujuannya adalah untuk memberi para peneliti dan praktisi dengan alat dan perpustakaan di mana mereka dapat mendasarkan proyek penelitian mereka sendiri dan implementasi produk. Kami senang melihat bahwa flowdroid sekarang banyak digunakan di dunia akademis dan juga industri.
Anda dapat membangun flowdroid sendiri menggunakan Maven, atau Anda dapat mengunduh rilis dari sini di GitHub.
Flowdroid sekarang dapat ditemukan di Maven Central. Untuk menggunakan FlowDroid di Maven Build Anda, sertakan yang berikut ini dalam file pom.xml Anda. Kami sarankan menggunakan versi terbaru dan terhebat kecuali Anda memiliki masalah spesifik yang mencegah Anda melakukannya. Dalam hal ini, beri tahu kami (lihat kontak di bawah).
<dependencies>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-summaries</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-android</artifactId>
<version>2.12.0</version>
</dependency>
</dependencies>
Untuk awal yang cepat dengan FlowDroid, lihat "Menggunakan Pelacak Aliran Data" di bawah ini. Jika Anda hanya ingin menggunakan alat baris perintah, yang Anda butuhkan hanyalah file "" jelaga-infoflow-cmd-jar-with-dependencies.jar ".
Halaman rilis berisi semua file JAR yang sudah dibangun untuk setiap rilis yang secara resmi kami terbitkan. Kami sarankan menggunakan versi terbaru dan terhebat kecuali Anda memiliki masalah spesifik yang mencegah Anda melakukannya. Dalam hal ini, beri tahu kami (lihat kontak di bawah).
Untuk awal yang cepat dengan FlowDroid, lihat "Menggunakan Pelacak Aliran Data" di bawah ini. Jika Anda hanya ingin menggunakan alat baris perintah, yang Anda butuhkan hanyalah file "" jelaga-infoflow-cmd-jar-with-dependencies.jar ".
Persyaratan:
Pada pertama kalinya, flowdroid perlu dibangun dari modul induk, yaitu folder root proyek. Suite tes penuh membutuhkan waktu sekitar 30 menit, jadi kami sarankan untuk menonaktifkan tes saat membangun:
mvn install -DskipTestsUntuk menjalankan build dengan tes yang diaktifkan, beberapa langkah tambahan diperlukan:
rt.jar harus berada di lokasi default (sebagai alternatif, tempatkan rt.jar di dalam $JAVA_HOME/lib/ )--recursive )ANDROID_JARS harus diatur ke direktori platform android (biasanya $HOME/Android/Sdk/platforms/ )Kami bekerja di Flowdroid menggunakan IDE ECLIPSE. Semua modul adalah proyek gerhana dan dapat diimpor ke IDE ECLIPSE. Mereka akan muncul sebagai proyek Maven di sana dan Eclipse harus mengurus semua dependensi yang diperlukan untuk Anda.
Anda dapat menggunakan flowdroid baik melalui antarmuka baris perintahnya (modul soot-infoflow-cmd) atau sebagai perpustakaan. Secara umum, jika Anda ingin menerapkan sesuatu dan membutuhkan pelacak aliran data sebagai komponen, Anda lebih baik dengan mengintegrasikan modul flowdroid sebagai file jar. Jika Anda hanya membutuhkan hasilnya dengan cepat, cukup jalankan antarmuka baris perintah.
FlowDroid didukung pada Windows, Mac OS, dan Linux.
Jika Anda ingin menggunakan alat baris perintah untuk menjalankan pelacak aliran data, Anda dapat menggunakan perintah berikut:
java -jar soot-infoflow-cmd/target/soot-infoflow-cmd-jar-with-dependencies.jar
-a <APK File>
-p <Android JAR folder>
-s <SourcesSinks file>
Folder Jar Android adalah direktori "Platform" di dalam folder instalasi Android SDK Anda. File definisi untuk sumber dan wastafel menentukan apa yang harus diperlakukan sebagai sumber informasi sensitif dan apa yang harus diperlakukan sebagai wastafel yang mungkin dapat membocorkan data sensitif ke dunia luar. Definisi ini khusus untuk kasus penggunaan Anda. Namun, jika Anda mencari masalah privasi, Anda dapat menggunakan file default kami "SourcesandSinks.txt" di folder "Soot-Infoflow-Android" sebagai titik awal.
Untuk mencari tahu tentang opsi lain dari alat baris perintah, Anda dapat menjalankan alat dengan opsi "--help" atau melihat metode MainClass.InitializeCommandLineOptions () "dalam kode sumber (modul soot-infoflow-cmd).
Untuk beberapa aplikasi, FlowDroid akan membutuhkan waktu lama untuk aplikasi besar. Ada berbagai opsi yang dapat Anda konfigurasikan pertukaran antara kinerja, presisi dan penarikan.
-ns tidak melacak noda di bidang statis dan mengabaikan inisialisasi statis.-ne tidak melacak aliran yang luar biasa.Anda juga dapat menentukan batas waktu:
-dt N membatalkan analisis aliran data setelah n detik dan mengembalikan hasil yang diperoleh sejauh ini.-ct N membatalkan koleksi callback selama konstruksi callgraph setelah n detik dan berlanjut dengan callgraph (tidak lengkap) yang dibangun sejauh ini.-rt N membatalkan koleksi hasil setelah n detik dan mengembalikan hasil yang diperoleh sejauh ini.Perhatikan bahwa waktu tunggu adalah aditif. Ketiga tahap harus menyelesaikan atau mengalami batas waktu untuk alat untuk mengembalikan dan memberikan hasil.
Jika Anda ingin memasukkan flowdroid sebagai perpustakaan ke dalam solusi Anda sendiri, Anda dapat secara langsung merujuk file JAR masing -masing. Jika Anda menggunakan Maven, Anda dapat menambahkan FlowDroid sebagai referensi dan memiliki Maven menyelesaikan semua komponen yang diperlukan. Bergantung pada apa yang ingin Anda analisis (aplikasi Android atau program Java), dependensi Anda dapat bervariasi.
Di bagian ini, kami akan mengumpulkan cuplikan kode dan konfigurasi untuk tugas umum dengan flowdroid.
Untuk menjalankan analisis aliran data sederhana, Anda dapat menggunakan kode berikut. Anda perlu mengganti placeholder androidJarFolder dengan lokasi direktori platforms di instalasi Android SDK Anda. Placeholder apkPath mengacu pada jalur file lengkap dari file APK. Hasil aliran data dapat diakses melalui kelas InfoflowResults .
SetupApplication app = new SetupApplication(androidJarFolder, apkPath);
app.setTaintWrapper(new SummaryTaintWrapper(new LazySummaryProvider("summariesManual")));
InfoflowResults results = app.runInfoflow();
Analisis aliran data menggunakan ringkasan perpustakaan stubdroid default. Dalam konfigurasi default, ringkasan ini disimpan di folder summariesManual dan tidak perlu mengubahnya.
Jika Anda ingin membaca detail tentang cara kerja flowdroid, tesis PhD Steven Arzt adalah tempat yang baik untuk memulai.
Kontribusi selalu diterima. Flowdroid adalah proyek open source yang kami terbitkan dengan harapan bahwa itu akan berguna bagi komunitas penelitian secara keseluruhan. Jika Anda memiliki fitur baru atau perbaikan bug yang ingin Anda lihat di repositori kode resmi, buka permintaan gabungan di sini di GitHub dan hubungi kami (lihat di bawah) dengan deskripsi singkat tentang apa yang telah Anda lakukan.
Flowdroid dilisensikan di bawah lisensi LGPL, lihat file lisensi. Ini pada dasarnya berarti bahwa Anda bebas menggunakan alat ini (bahkan dalam proyek komersial, sumber tertutup). Namun, jika Anda memperluas atau memodifikasi alat, Anda harus membuat perubahan tersedia di bawah LGPL juga. Ini memastikan bahwa kita dapat terus meningkatkan alat sebagai upaya masyarakat.
Jika Anda mengalami masalah apa pun, Anda dapat meminta bantuan pada milis jelaga. Anda juga dapat menghubungi kami di [email protected].