
أداة للعثور على عناوين URL والمسارات والأسرار، وتوليد طلبات HTTP خام ومواصفات OpenApi من ملفات الإعدادات والتعليقات التوضيحية المستخدمة في تطبيقات JAR / WAR / APK.
أداة للمعالجة الأولية لتطبيقات APK / XAPK / APKM / DEX / JAR / WAR.
java -jar bfscan.jar <jar_war_apk> <...> [-m <mode>] [-ma <minifiedAnnotationsSupport>] [-r <mappingFile>] [-s <searchString>] [-u <url>] [-v <verbose>]
-m <mode> Mode ([a]ll, [s]ecrets, [h]ttp), default: all
-ma <minifiedAnnotationsSupport> Minified or unknown annotations support (yes, no), default: yes
-r <mappingFile> Deobfuscation mapping file
-s <searchString> Search string
-u <url> API base url (http://localhost/api/)
-v <verbose> Log level (off, error, warn, info, debug, trace)
java -jar bfscan.jar test/*.apk -u https://example.tld/api/
بالنسبة لهذه الفئة التي تستخدم تعليقات Spring التوضيحية، سيتم توليد النتائج التالية.
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("createUser")
public String create(@RequestParam Optional<String> someParamName, @RequestBody User user) {
return "response";
}
الطريقة: com.mycompany.springbootexample.UserController->create
POST /api/createUser?someParamName=value HTTP/1.1
Host: localhost
Connection: close
Content-Type: application/json
{
"name": "name",
"age": 1
}

إذا كنت تحلل تطبيقًا يستخدم مكتبة مدعومة، لكن الكود الخاص به مُعمّى، يمكنك إنشاء ملف تعيين لاستبدال أسماء الفئات.
للقيام بذلك، يمكنك يدويًا استخدام وظيفة "Rename" في الكود المُفكَّك في jadx-gui، ثم حفظ ملف التعيين المُنشأ (File > Save mappings). أو استخدم ملف تعيين مثال لـ Retrofit وقم بتعديله وفقًا لتطبيقك.

مثال على تحليل تطبيق مع إعادة تسمية الفئات باستخدام ملف تعيين.
java -jar BFScan.jar ./tests/example.apk -r ./tests/mapping.txt
يستخدم هذا المشروع: