
JAR / WAR / APK 애플리케이션에 사용되는 구성 파일과 어노테이션에서 URL, 경로, 시크릿을 찾아내고 원시 HTTP 요청 및 OpenApi 명세를 생성하는 도구입니다.
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
}

지원되는 라이브러리를 사용하지만 코드가 난독화된 애플리케이션을 분석하는 경우, 매핑 파일을 만들어 클래스 이름을 대체할 수 있습니다.
이렇게 하려면 jadx-gui에서 디컴파일된 코드의 "Rename" 기능을 수동으로 사용한 다음 생성된 매핑 파일을 저장(File > Save mappings)하면 됩니다. 또는 Retrofit용 예제 매핑 파일을 사용하여 애플리케이션에 맞게 수정하세요.

매핑 파일을 사용하여 클래스 이름을 변경하면서 애플리케이션을 분석하는 예입니다.
java -jar BFScan.jar ./tests/example.apk -r ./tests/mapping.txt
이 프로젝트는 다음을 사용합니다: