يحتوي هذا المستودع على (سيحتوي) على العديد من الأمثلة البسيطة لتحليل البرنامج الثابت في Java باستخدام SOOT.
أي شخص يعرف برمجة Java ويريد إجراء بعض التحليلات الثابتة في الممارسة ولكن لا يعرف أي شيء عن التحليل الثابت والتحليل الثابت من الناحية النظرية.
إذا كان لديك بعض المعرفة المسبقة حول تحليل البرنامج الثابت ، أقترح أن تتعلم السخام من هنا.
باختصار ، استخدم Java 8 و Run ./gradlew build . لمزيد من المعلومات وإعداد Docker ، اتبع هذا الرابط.
في هذا الفصل ، ستقوم بزيارة مثال رمز بسيط للغاية لتكون على دراية بهياكل البيانات الأساسية SEOT و Jimple ، تمثيل SOOT الوسيط.
./gradlew run --args="HelloSoot" : تمثيل Jimple لطريقة PrintFizzBuzz جنبًا إلى جنب مع بيان الفرع../gradlew run --args="HelloSoot draw" : تصور الرسم البياني لتدفق PrintFizzBuzz.| عنوان | درس تعليمي | رمز السخام | مثال الإدخال |
|---|---|---|---|
| مرحبا السخام | مستند | Hellosoot.java | fizzbuzz.java |

في هذا الفصل ، تتعرف على بعض الطرق الأساسية ولكن المفيدة في SOOT للمساعدة في قراءة رمز Java وتحليله وحتى تحديثه.
./gradlew run --args="BasicAPI" : تحليل دائرة الفصل../gradlew run --args="BasicAPI draw" : تحليل دائرة الفئة ورسم الرسم البياني للمكالمة.| عنوان | درس تعليمي | رمز السخام | مثال الإدخال |
|---|---|---|---|
| API الأساسي | مستند | basicapi.java | دائرة |

في هذا الفصل ، تتعلم كيفية إدراج التعليمات البرمجية في تطبيقات Android (دون وجود رمز المصدر) باستخدام SOOT. لتشغيل الرمز ، تحتاج إلى Android SDK (تحقق من هذا الرابط).
./gradlew run --args="AndroidLogger" : أدخل استدعاء طريقة تسجيل التسجيل في بداية طرق APK الخاصة بـ Numix Calculator../gradlew run --args="AndroidClassInjector" : قم بإنشاء فئة جديدة من نقطة الصفر وحقنها إلى حاسبة Numix. يقع APK الصك في demo/Android/Instrumented . تحتاج إلى توقيعه من أجل التثبيت على جهاز Android:
cd ./demo/Android
# on Windows, replace 'sign.sh' by 'sign.ps1'
./sign.sh Instrumented/calc.apk key " android "
adb install -r -t Instrumented/calc.apk لمشاهدة السجلات ، قم بتشغيل adb logcat | grep -e "<SOOT_TUTORIAL>"
| عنوان | درس تعليمي | رمز السخام | مثال APK |
|---|---|---|---|
| مكالمات طريقة السجل في APK | مستند | Androidlogger.java | حاسبة Numix (من F-Droid) |
| قم بإنشاء فئة وحقنها في APK | مستند | AndroidClassinjector.java | حاسبة Numix (من F-Droid) |

يمنحك هذا الفصل نظرة عامة موجزة على الرسوم البيانية للاتصال وتحليل PointSto في Android وتعلم كيفية إنشاء الرسوم البيانية للمكالمات باستخدام FlowDroid. رمز المصدر لرمز المثال هنا. لتشغيل الرمز ، تحتاج إلى Android SDK (تحقق من هذا الرابط).
./gradlew run --args="AndroidCallGraph <CG_Algorithm> (draw)" : قم بإنشاء رسم بياني للاتصال لتطبيق العرض التجريبي SOOTTutorial باستخدام خوارزمية <CG_Algorithm> ومعلومات طباعة مثل الطرق القابلة للوصول إليها أو عدد الحواف.<CG_Algorithm> يمكن أن تكون SPARK أو CHAdraw اختيارية ، إذا تم توفير تصور لرسم البياني للمكالمات../gradlew run --args="AndroidCallGraph SPARK draw"./gradlew run --args="AndroidPTA" : إجراء تحليل PointSto و Alias على تطبيق Soottutorial Demo باستخدام FlowDroid.| عنوان | درس تعليمي | رمز السخام | مثال APK |
|---|---|---|---|
| استدعاء الرسوم البيانية في Android | مستند | AndroidCallgraph.java | تطبيق SOOTTUTORIRALD DEMO (رمز المصدر) |
| تحليل PointSto في Android | مستند | AndroidPointStoAnalysis.java | تطبيق SOOTTUTORIRALD DEMO (رمز المصدر) |

./gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream" : ابحث عن استخدام الأسلوب مع subsignature المعطى في جميع طرق usexample.java../gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream" : ابحث عن استخدامات الطريقة مع التضمين المعطى لتوقيع الفئة المعطى في جميع طرق usageExample.java.| عنوان | درس تعليمي | رمز السخام | مثال الإدخال |
|---|---|---|---|
| ابحث عن استخدامات الطريقة | UsageFinder.java | UsageExample.java | |
| تحليل مؤشر فارغ | Nullpointeranalysis | nullpointerxample.java |
| عنوان | درس تعليمي | رمز السخام | مثال الإدخال |
|---|---|---|---|