
Ferramenta para encontrar URLs, caminhos, segredos e gerar requisições HTTP brutas e especificações OpenApi a partir de arquivos de configuração e anotações usados em aplicações JAR / WAR / APK.
Ferramenta para processamento inicial de aplicações 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/
Para esta classe usando anotações Spring, os seguintes resultados serão gerados.
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("createUser")
public String create(@RequestParam Optional<String> someParamName, @RequestBody User user) {
return "response";
}
Método: 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
}

Se você estiver analisando uma aplicação que usa uma biblioteca suportada, mas seu código estiver ofuscado, você pode criar um arquivo de mapeamento para substituir os nomes das classes.
Para isso, você pode usar manualmente a função "Renomear" no código decompilado no jadx-gui e, em seguida, salvar o arquivo de mapeamento gerado (Arquivo > Salvar mapeamentos). Ou use um arquivo de mapeamento de exemplo para Retrofit e modifique-o de acordo com a sua aplicação.

Exemplo de análise de uma aplicação com renomeação de classes usando um arquivo de mapeamento.
java -jar BFScan.jar ./tests/example.apk -r ./tests/mapping.txt
Este projeto usa: