dependencias.md — bibliotecas, frameworks e ofuscação

1. Stack identificada

Camada Tecnologia Evidência
Linguagem Java (sem Kotlin de app) nenhum .kt, nenhum kotlin.Metadata preservado; classes em Java legível
UI AndroidX + Material Components androidx/appcompat, com/google/android/material
Layouts ConstraintLayout res/layout/*.xml com androidx.constraintlayout.widget.ConstraintLayout
Rede OkHttp 4.9.3 (+ Okio) okhttp3/internal/Util.java:82 → userAgent = "okhttp/4.9.3"
JSON org.json (Android) 22 classes, usado em vo5bwh/vn9w9z8k
NFC APIs nativas android.nfc.* (IsoDep, NfcA, NfcB) ReFragment.java, MainActivity.java, res/xml/nfc_tech_filter.xml
WebView android.webkit.WebView + JavascriptInterface ReFragment.java:139-145, cd.java
Instrumentação de teste androidx.profileinstaller, androidx.startup, androidx.emoji2 manifest + classes
Código nativo nenhum sem lib/, sem loadLibrary
Frameworks multiplataforma nenhum (não é Flutter / React Native / Unity / Xamarin / Cordova) ausência de libflutter.so, libhermes.so, libmonodroid.so, assets/index.android.bundle

2. Inventário de classes por pacote

defpackage (pacote default ofuscado)   2608
okhttp3 (+ internal)                    131
androidx                                111
com.google (material)                    90
okio (+ internal)                        50
org.json                                 22
android / android.app / android.view /
android.window / android.support          8
app.nfcsecurity.vault                     4   ← ReFragment, MainActivity, FirstFragment, R
com.totalsecure.utils                     6   ← UtilZ0Y480, UtilN86To1, UtilXgm023, UtilYeogj5, UtilZ0Y480, UtilZxrfo4
---------------------------------------------
total (arquivos .java do JADX)         3028   (DEX: 3287 class_defs)

Módulos AndroidX presentes (por diretório): activity, appcompat, compose/ui (interface de plataforma do Compose), constraintlayout, coordinatorlayout, core, emoji2, fragment, legacy, lifecycle, navigation, profileinstaller, recyclerview, savedstate, startup, versionedparcelable, viewpager2, window.

3. Código do aplicativo (o que escreveram de fato)

Arquivo Linhas Papel
app/nfcsecurity/vault/ReFragment.java 362 entrypoint, WebView, NFC, relay
app/nfcsecurity/vault/MainActivity.java 454 variante com UI de status + helpers de APDU (morta)
app/nfcsecurity/vault/FirstFragment.java 39 template
app/nfcsecurity/vault/R.java 4508 gerado (recursos)
com/totalsecure/utils/UtilZ0Y480.java 28 decode() = reverter string + 4 helpers numéricos
com/totalsecure/utils/UtilN86To1 / UtilXgm023 / UtilYeogj5 / UtilZ0Y480 / UtilZxrfo4 / UtilAg6Bq2 12-24 cada pequenos utilitários/aritmética obfuscada
defpackage/bs.java 60 cofre de URLs (reversão + base64/XOR)
defpackage/vo5bwh.java 177 cliente WebSocket
defpackage/vn9w9z8k.java ~100 WebSocketListener
defpackage/ye0.java 32 consumer APDU → IsoDep
defpackage/cd.java 40 ponte JS nativa (PIN)
defpackage/bd.java 55 WebViewClient + injeção de JS
defpackage/fm5oo1jxl.java 13 fachada de constantes de rede
defpackage/fo7j85n026dd7yhpnazk / yc / ydyl68w / ydoqc1vayxxe / yc / zc / sk55u / iyfihgk3 — runnables/synthetic lambdas gerados pelo R8

Total de código efetivamente escrito pelo autor: ~1.400 linhas (o resto são 3.028 classes de biblioteca/ofuscadas). Isso é um app pequeno com uma função única: relay + captura de PIN.

4. Ofuscação

Característica Observação Evidência
Renomeação de classes do app e de bibliotecas 2.608 classes no pacote default, nomes aleatórios (a, a0, z68qe, qw3b8qhashqo) decompilado/apktool/smali/*.smali na raiz
Nomes aleatórios com sufixo longo padrão n4nel35z9h8r95w02 (proteção agressiva, estilo DexGuard/Allatori-like) idem
Strings sensíveis ofuscadas inversão (UtilZ0Y480.decode) e base64+XOR com chave {42, 31, 55, 13} bs.java, ReFragment.java:43-46
Metadados removidos 0 anotações kotlin.Metadata embora OkHttp 4.9.3 seja Kotlin grep -c 'Lkotlin/Metadata;' smali → 0
Nomes de membros sem semântica a0i932lzo, a1gfkfn6pmcg4pznxmjj etc. (reaproveitados como nomes de campo) fontes JADX
Ofuscação de fluxo (control flow) não observada: os métodos centrais são legíveis após decompilação ReFragment.java, vo5bwh.java
Criptografia de strings de recursos não — strings.xml em claro (inclusive PT-BR do app) res/values/strings.xml
Packer / VM / .so não ver armazenamento.md §5

Consequência: a renomeação é a única barreira relevante, e ela é contornável porque os pontos de contato do framework (Activity, WebViewClient, JavascriptInterface, WebSocketListener, Consumer) forçam a assinatura a permanecer legível — foi assim que o fluxo foi reconstruído.

Classes de biblioteca reconhecíveis apesar da ofuscação (amostras): aiy8f7asu0y549vxtx = AbstractFuture do Guava (java.util.logging.Logger + executor + RuntimeException while executing runnable … with executor) → Guava também está presente, sem ficar no pacote com.google.common. Isso confirma que o ofuscador achatou libs no pacote default (provável kotlin-stdlib + Guava + utilitários).

5. Configuração de build recuperável

Item Valor Fonte
AGP/compileSdk 34 manifest (compileSdkVersion=34), apktool.yml
minSdk / targetSdk 24 / 34 apktool.yml, manifest
versionCode/versionName 431870 / 7.28.82 apktool.yml
applicationId com.banking.trackerpro manifest
namespace de recursos app.nfcsecurity.vault (package id 0x7f) apktool.yml, R.java
Assinatura de build não é debug keystore padrão (CN=AndroidDebug); é chave própria CN=Android, O=Local inspect-apk-signature
build.gradle / settings.gradle / gradle.properties não existem no APK (nunca são empacotados) —
Versões exatas de AndroidX/Material não recuperáveis (R8 removeu BuildConfig/metadados; sem pom.properties) ver limitacoes.md

Versões inferidas apenas onde há marcador literal: OkHttp 4.9.3 (user-agent), apktool 3.0.3 (ferramenta, não lib), JADX 1.5.6 (ferramenta). Material/AndroidX: versão desconhecida — os nomes de recursos (m3_*, mtrl_*) indicam Material ≥ 1.9 com Material3, mas isso é indício, não versão.