يستضيف هذا المستودع أداة تحليل تدفق بيانات التدفق. يقوم FlowDroid بحساب تدفقات البيانات بشكل ثابت في تطبيقات Android وبرامج Java. هدفها هو تزويد الباحثين والممارسين بأداة ومكتبة يمكنهم عليها بناء مشاريع البحث الخاصة بهم وتطبيقات المنتجات. يسعدنا أن نرى أن FlowDroid يستخدم الآن على نطاق واسع في الأوساط الأكاديمية وكذلك الصناعة.
يمكنك إما إنشاء FlowDroid بمفردك باستخدام Maven ، أو يمكنك تنزيل إصدار من هنا على Github.
يمكن الآن العثور على FlowDroid على Maven Central. من أجل استخدام FlowDroid في بناء Maven الخاص بك ، قم بتضمين ما يلي في ملف pom.xml الخاص بك. نوصي باستخدام أحدث وأكبر إصدار ما لم يكن لديك مشكلة محددة تمنعك من القيام بذلك. في هذه الحالة ، يرجى إعلامنا (انظر الاتصال أدناه).
<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>
لبداية سريعة مع FlowDroid ، انظر إلى "استخدام متتبع تدفق البيانات" أدناه. إذا كنت ترغب فقط في استخدام أداة سطر الأوامر ، فكل ما تحتاجه هو ملف "SOOT-INFOFLOW-CMD-JAR-JAR-WITH-DEPENDENCIES.JAR".
تحتوي صفحة الإصدار على جميع ملفات JAR تم إنشاؤها مسبقًا لكل إصدار ننشره رسميًا. نوصي باستخدام أحدث وأكبر إصدار ما لم يكن لديك مشكلة محددة تمنعك من القيام بذلك. في هذه الحالة ، يرجى إعلامنا (انظر الاتصال أدناه).
لبداية سريعة مع FlowDroid ، انظر إلى "استخدام متتبع تدفق البيانات" أدناه. إذا كنت ترغب فقط في استخدام أداة سطر الأوامر ، فكل ما تحتاجه هو ملف "SOOT-INFOFLOW-CMD-JAR-JAR-WITH-DEPENDENCIES.JAR".
متطلبات:
في المرة الأولى ، يجب بناء FlowDroid من الوحدة الأصل ، أي مجلد جذر المشروع. يستغرق جناح الاختبار الكامل حوالي 30 دقيقة ، لذلك نوصي بتعطيل الاختبارات عند البناء:
mvn install -DskipTestsلتشغيل الإنشاء مع تمكين الاختبارات ، هناك حاجة إلى بعض الخطوات الإضافية:
rt.jar في الموقع الافتراضي (بدلاً من ذلك ، ضع rt.jar داخل $JAVA_HOME/lib/ )--recursive )ANDROID_JARS على دليل أندرويد منصات (عادةً $HOME/Android/Sdk/platforms/ )نحن نعمل على FlowDroid باستخدام Eclipse IDE. جميع الوحدات هي مشاريع Eclipse ويمكن استيرادها في Eclipse IDE. سيظهرون كمشاريع Maven هناك ويجب أن يهتم Eclipse بتنزيل جميع التبعيات المطلوبة لك.
يمكنك استخدام FlowDroid إما من خلال واجهة سطر الأوامر الخاصة به (الوحدة النمطية SOOT-INFOFLOW-CMD) أو كمكتبة. بشكل عام ، إذا كنت ترغب في تنفيذ شيء ما وتحتاج إلى تعقب تدفق البيانات كمكون ، فأنت أفضل حالًا من خلال دمج وحدات FlowDroid كملفات JAR. إذا كنت بحاجة فقط إلى النتائج بسرعة ، فما عليك سوى تشغيل واجهة سطر الأوامر.
يتم دعم FlowDroid على Windows و Mac OS و Linux.
إذا كنت ترغب في استخدام أداة سطر الأوامر لتشغيل متتبع تدفق البيانات ، فيمكنك استخدام الأمر التالي:
java -jar soot-infoflow-cmd/target/soot-infoflow-cmd-jar-with-dependencies.jar
-a <APK File>
-p <Android JAR folder>
-s <SourcesSinks file>
مجلد Android Jar هو دليل "المنصات" داخل مجلد تثبيت Android SDK. يحدد ملف تعريف المصادر والمصارف ما يجب التعامل معه كمصدر للمعلومات الحساسة وما يجب معاملته على أنه حوض يمكن أن يتسرب البيانات الحساسة إلى العالم الخارجي. هذه التعريفات خاصة بحالة الاستخدام الخاصة بك. ومع ذلك ، إذا كنت تبحث عن مشكلات في الخصوصية ، فيمكنك استخدام ملفنا الافتراضي "SourcesAndSinks.txt" في مجلد "SOOT-INFOFLOW-Android" كنقطة انطلاق.
للتعرف على الخيارات الأخرى لأداة سطر الأوامر ، يمكنك تشغيل الأداة باستخدام خيار "-help" أو إلقاء نظرة على mainclass.initializeCommandlineOptions () "في الكود المصدري (الوحدة النمطية SOOT-INFOFLOW-CMD).
بالنسبة لبعض التطبيقات ، سوف يستغرق FlowDroid وقتًا طويلاً للتطبيقات الكبيرة. هناك العديد من الخيارات التي يمكنك من خلالها تكوين مفاضلة بين الأداء والدقة والاستدعاء.
-ns تتبع Taints على الحقول الثابتة وتجاهل المهيئات الثابتة.-ne تتبع التدفقات الاستثنائية.يمكنك أيضًا تحديد المفيد:
-dt N يعمل على إحباط تحليل تدفق البيانات بعد ثواني n ويعيد النتائج التي تم الحصول عليها حتى الآن.-ct N إحباط مجموعة رد الاتصال أثناء Callgraph Construction بعد ثوانٍ وتواصل مع Callgraph (غير المكتملة) التي تم إنشاؤها حتى الآن.-rt N يجهض مجموعة النتائج بعد ثوانٍ n وإرجاع النتائج التي تم الحصول عليها حتى الآن.لاحظ أن المهلة مضافة. يجب أن تكمل المراحل الثلاث أو تواجه مهلة للأداة للعودة وتقديم النتائج.
إذا كنت ترغب في تضمين FlowDroid كمكتبة في الحل الخاص بك ، فيمكنك الرجوع مباشرة إلى ملفات JAR المعنية. إذا كنت تستخدم Maven ، فيمكنك إضافة FlowDroid كمرجع ولديك Maven حل جميع المكونات المطلوبة. اعتمادًا على ما تريد تحليله (تطبيقات Android أو Java) ، قد تختلف تبعياتك.
في هذا القسم ، سنقوم بجمع قصاصات الرمز والتكوين للمهام الشائعة مع FlowDroid.
لتشغيل تحليل بسيط لتدفق البيانات ، يمكنك استخدام الكود التالي. تحتاج إلى استبدال العنصر النائب androidJarFolder بموقع دليل platforms في تثبيت Android SDK. يشير العنصر النائب apkPath إلى مسار الملف الكامل لملف APK. يمكن الوصول إلى نتائج تدفق البيانات عبر فئة InfoflowResults .
SetupApplication app = new SetupApplication(androidJarFolder, apkPath);
app.setTaintWrapper(new SummaryTaintWrapper(new LazySummaryProvider("summariesManual")));
InfoflowResults results = app.runInfoflow();
يستخدم تحليل تدفق البيانات ملخصات مكتبة StubDroid الافتراضية. في التكوين الافتراضي ، يتم تخزين هذه الملخصات في المجلد summariesManual وليس هناك حاجة لتغيير ذلك.
إذا كنت ترغب في قراءة التفاصيل حول كيفية عمل FlowDroid ، فإن أطروحة الدكتوراه لستيفن أرزت هي مكان جيد للبدء.
المساهمات دائما موضع ترحيب. FlowDroid هو مشروع مفتوح المصدر نشرناه على أمل أن يكون مفيدًا لمجتمع الأبحاث ككل. إذا كان لديك ميزة جديدة أو إصلاح الأخطاء التي ترغب في رؤيتها في مستودع الرمز الرسمي ، فيرجى فتح طلب دمج هنا على Github والاتصال بنا (انظر أدناه) مع وصف قصير لما قمت به.
تم ترخيص FlowDroid بموجب ترخيص LGPL ، انظر ملف الترخيص. هذا يعني في الأساس أنك حر في استخدام الأداة (حتى في المشاريع التجارية المغلقة). ومع ذلك ، إذا قمت بتمديد أو تعديل الأداة ، فيجب عليك إتاحة التغييرات الخاصة بك تحت LGPL أيضًا. هذا يضمن أنه يمكننا الاستمرار في تحسين الأداة كجهد مجتمعي.
إذا واجهت أي مشكلات ، فيمكنك طلب المساعدة في القائمة البريدية للسخام. يمكنك أيضًا الاتصال بنا على [email protected].