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.