Cataldo Basile

63 papers A 2B 5C 9Misc 3Journal 31Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Netw.
Cataldo Basile, Gabriele Gatti, Francesco Settanni
2026 J jnl
Comput. Secur.
Leonardo Regano, Daniele Canavese, Cataldo Basile, Marco Torchiano
2026 J jnl
CoRR
Chiara Bonfanti, Davide Colaiacomo, Luca Cagliero, Cataldo Basile
2025 J jnl
CoRR
Chiara Bonfanti, Alessandro Druetto, Cataldo Basile, Tharindu Ranasinghe, Marcos Zampieri
2025 J jnl
Clust. Comput.
Alessio Viticchié, Alberto Salvatore Colletto, Giulio Sunder, Cataldo Basile, Alessandro Aliberti
2025 J jnl
CoRR
Daniele Canavese, Leonardo Regano, Bjorn De Sutter, Cataldo Basile
2025 J jnl
CoRR
Leonardo Regano, Daniele Canavese, Cataldo Basile, Marco Torchiano
2025 J jnl
IEEE Access
Gabriele Gatti, José María Jorquera Valero, Manuel Gil Pérez, Cataldo Basile
2025 conf
ARES (Workshops 1)
Francesco Settanni, Giuseppe Lisena, Cataldo Basile
2024 J jnl
CoRR
Cataldo Basile, Gabriele Gatti, Francesco Settanni
2024 B conf
COMPSAC
Gabriele Gatti, Marco Civera, Cataldo Basile, Massimiliano Masi, Michele La Manna
2024 Misc conf
CSR
Francesco Settanni, Alessandro Zamponi, Cataldo Basile
2024 J jnl
Sensors
Daniele Canavese, Luca Mannella, Leonardo Regano, Cataldo Basile
2023 B conf
NetSoft
Francesco Settanni, Leonardo Regano, Cataldo Basile, Antonio Lioy
2023 B conf
COMPSAC
Gabriele Gatti, Cataldo Basile, Guido Perboli
2023 Misc conf
CSR
George Hatzivasilis, Sotiris Ioannidis, Grigoris Kalogiannis, Manolis Chatzimpyrros, George Spanoudakis, Guillermo Jiménez Prieto, Araceli Rojas Morgan, Miguel Juaniz Lopez, Cataldo Basile, José Francisco Ruiz
2023 J jnl
CoRR
Cataldo Basile, Bjorn De Sutter, Daniele Canavese, Leonardo Regano, Bart Coppens
2023 J jnl
Comput. Secur.
Cataldo Basile, Bjorn De Sutter, Daniele Canavese, Leonardo Regano, Bart Coppens
2022 B conf
NetSoft
Cataldo Basile, Daniele Canavese, Leonardo Regano, Ignazio Pedone, Antonio Lioy
2022 J jnl
Comput. Electr. Eng.
Daniele Canavese, Leonardo Regano, Cataldo Basile, Gabriele Ciravegna, Antonio Lioy
2022 J jnl
IEEE Secur. Priv.
Daniele Bringhenti, Fulvio Valenza, Cataldo Basile
2020 J jnl
Empir. Softw. Eng.
Alessio Viticchié, Leonardo Regano, Cataldo Basile, Marco Torchiano, Mariano Ceccato, Paolo Tonella
2020 J jnl
CoRR
Daniele Canavese, Leonardo Regano, Cataldo Basile, Bart Coppens, Bjorn De Sutter
2019 J jnl
J. Syst. Softw.
Cataldo Basile, Daniele Canavese, Leonardo Regano, Paolo Falcarin, Bjorn De Sutter
2019 J jnl
IEEE/ACM Trans. Netw.
Cataldo Basile, Fulvio Valenza, Antonio Lioy, Diego R. López, Antonio Pastor Perales
2019 J jnl
CoRR
Alberto Carelli, Cataldo Basile, Alessandro Savino, Alessandro Vallero, Stefano Di Carlo
2019 J jnl
Empir. Softw. Eng.
Mariano Ceccato, Paolo Tonella, Cataldo Basile, Paolo Falcarin, Marco Torchiano, Bart Coppens, Bjorn De Sutter
2018 J jnl
J. Wirel. Mob. Networks Ubiquitous Comput. Dependable Appl.
Alessio Viticchié, Cataldo Basile, Fulvio Valenza, Antonio Lioy
2018 conf
AQTR
Alberto Carelli, Carlo Alberto Cristofanini, Alessandro Vallero, Cataldo Basile, Paolo Prinetto, Stefano Di Carlo
2017 J jnl
Comput. Electr. Eng.
Cataldo Basile, Daniele Canavese, Christian Pitscheider, Antonio Lioy, Fulvio Valenza
2017 J jnl
CoRR
Alessio Viticchié, Leonardo Regano, Marco Torchiano, Cataldo Basile, Mariano Ceccato, Paolo Tonella, Roberto Tiella
2017 J jnl
CoRR
Fulvio Valenza, Cataldo Basile, Daniele Canavese, Antonio Lioy
2017 J jnl
IEEE/ACM Trans. Netw.
Fulvio Valenza, Cataldo Basile, Daniele Canavese, Antonio Lioy
2017 conf
STM
Daniele Canavese, Leonardo Regano, Cataldo Basile, Alessio Viticchié
2017 J jnl
CoRR
Mariano Ceccato, Paolo Tonella, Cataldo Basile, Bart Coppens, Bjorn De Sutter, Paolo Falcarin, Marco Torchiano
2017 A conf
ICPC
Mariano Ceccato, Paolo Tonella, Cataldo Basile, Bart Coppens, Bjorn De Sutter, Paolo Falcarin, Marco Torchiano
2017 C conf
CRiSIS
Alessio Viticchié, Cataldo Basile, Antonio Lioy
2017 C conf
QRS
Leonardo Regano, Daniele Canavese, Cataldo Basile, Antonio Lioy
2016 conf
WICSA
Bjorn De Sutter, Paolo Falcarin, Brecht Wyseur, Cataldo Basile, Mariano Ceccato, Jérôme d'Annoville, Michael Zunke
2016 C conf
SCAM
Alessio Viticchié, Leonardo Regano, Marco Torchiano, Cataldo Basile, Mariano Ceccato, Paolo Tonella, Roberto Tiella
2016 J jnl
Int. J. Netw. Manag.
Cataldo Basile, Daniele Canavese, Antonio Lioy, Christian Pitscheider, Fulvio Valenza
2016 conf
SPRO@CCS
Alessio Viticchié, Cataldo Basile, Andrea Avancini, Mariano Ceccato, Bert Abrath, Bart Coppens
2016 conf
SPRO@CCS
Bjorn De Sutter, Cataldo Basile, Mariano Ceccato, Paolo Falcarin, Michael Zunke, Brecht Wyseur, Jérôme d'Annoville
2016 C conf
WISTP
Leonardo Regano, Daniele Canavese, Cataldo Basile, Alessio Viticchié, Antonio Lioy
2015 C conf
PDP
Cataldo Basile, Antonio Lioy, Christian Pitscheider, Shilong Zhao
2015 conf
RTSI
Fulvio Valenza, Serena Spinoso, Cataldo Basile, Riccardo Sisto, Antonio Lioy
2015 B conf
NetSoft
Cataldo Basile, Antonio Lioy, Christian Pitscheider, Fulvio Valenza, Marco Vallini
2015 J jnl
IEEE/ACM Trans. Netw.
Cataldo Basile, Antonio Lioy
2015 conf
SPRO@ICSE
Cataldo Basile, Daniele Canavese, Jérôme d'Annoville, Bjorn De Sutter, Fulvio Valenza
2015 conf
CSP Forum
Cataldo Basile, Christian Pitscheider, Fulvio Risso, Fulvio Valenza, Marco Vallini
2015 J jnl
IEEE Commun. Mag.
Diego Montero, Marcelo Yannuzzi, Adrian L. Shaw, Ludovic Jacquin, Antonio Pastor, René Serral-Gracià, Antonio Lioy, Fulvio Risso, Cataldo Basile, Roberto Sassu, Mario Nemirovsky, Francesco Ciaccia, Michael Georgiades, Savvas Charalambides, Jarkko Kuusijärvi, Francesca Bosco
2014 C conf
CRiSIS
Cataldo Basile, Daniele Canavese, Antonio Lioy, Fulvio Valenza
2013 C conf
PDP
Cataldo Basile, Daniele Canavese, Antonio Lioy, Christian Pitscheider
2013 A conf
ICPC
Cataldo Basile, Mariano Ceccato
2012 J jnl
IEEE Trans. Syst. Man Cybern. Part C
Cataldo Basile, Stefano Di Carlo, Alberto Scionti
2012 J jnl
IEEE/ACM Trans. Netw.
Cataldo Basile, Alberto Cappadonia, Antonio Lioy
2012 conf
ISSE
Cataldo Basile, Antonio Lioy, Stefano Paraboschi
2010 C conf
PDP
Cataldo Basile, Antonio Lioy, Marco Vallini
2009 Misc conf
CISIS
Cataldo Basile, Antonio Lioy, Salvatore Scozzi, Marco Vallini
2008 conf
POLICY
Cataldo Basile, Alberto Cappadonia, Antonio Lioy
2008 C conf
PDP
Cataldo Basile, Paolo Carlo Pomi, Piervito Scaglioso
2007 conf
POLICY
Cataldo Basile, Antonio Lioy, Gregorio Martínez Pérez, Félix J. García Clemente, Antonio Fernandez Gómez-Skarmeta
2004
Cataldo Basile
docs/apk-code-schema.md
← Index docs/apk-code-schema.md markdown
# APK Code Analysis — ClickHouse Schema

All tables follow the `ReplacingMergeTree(analysis_date)` pattern from
`docs/new-code-binja-schema.md`, except `code_apk_analysis_errors` which
uses `MergeTree()`.

**Companion PDD:** `APK_CODE_ANALYSIS_PDD-Tech_Annex.md` §7

---

## Table overview

| # | Table | Analog (Binja) | Engine | Key |
|---|-------|----------------|--------|-----|
| 1 | `code_apk_decompiled_methods_content` | `code_binja_decompiled_functions_content` | ReplacingMergeTree | `decompiled_method_hash` |
| 2 | `code_apk_decompiled_methods_references` | `code_binja_decompiled_functions_references` | ReplacingMergeTree | `(sha256, decompiled_method_hash)` |
| 3 | `code_apk_smali_methods_content` | `code_binja_disassembled_functions_content` | ReplacingMergeTree | `smali_method_hash` |
| 4 | `code_apk_smali_methods_references` | `code_binja_disassembled_functions_references` | ReplacingMergeTree | `(sha256, smali_method_hash)` |
| 5 | `code_apk_method_similarity_metrics` | `code_binja_function_similarity_metrics` | ReplacingMergeTree | `smali_method_hash` |
| 6 | `code_apk_cfg_methods` | `code_binja_cfg_functions` | ReplacingMergeTree | `smali_method_hash` |
| 7 | `code_binja_strings_raw` *(shared)* | — | Null (→ MV) | — |
| 8 | `code_apk_analysis_errors` | `function_analysis_errors_binja` | MergeTree | `(sha256, error_location, error_hash)` |

---

## Table 1: `code_apk_decompiled_methods_content`

**Analog:** `code_binja_decompiled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_content (
    decompiled_method_hash FixedString(64),          -- SHA-256 of normalized Java source
    decompiled_method String CODEC(ZSTD(3)),          -- Full Java method source
    decompiled_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    decompiled_has_string_encryption UInt8 DEFAULT 0,
    decompiled_has_reflection_calls UInt8 DEFAULT 0,
    decompiled_excessive_goto_count UInt8 DEFAULT 0,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_method_content_token lower(decompiled_method) TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY decompiled_method_hash;
```

## Table 2: `code_apk_decompiled_methods_references`

**Analog:** `code_binja_decompiled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_references (
    sha256 FixedString(64),
    decompiled_method_hash FixedString(64),
    smali_method_hash Nullable(FixedString(64)),
    decompiled_class_name LowCardinality(String),
    decompiled_method_name LowCardinality(String),
    decompiled_method_signature String,               -- Dalvik descriptor: (Landroid/os/Bundle;)V
    decompiled_method_prototype String,               -- Java-style: void onCreate(Bundle)
    functions_caller Array(String),
    functions_call Array(String),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_decompiled_class_name decompiled_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_decompiled_method_name decompiled_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_caller functions_caller TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_call functions_call TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, decompiled_method_hash);
```

## Table 3: `code_apk_smali_methods_content`

**Analog:** `code_binja_disassembled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_content (
    smali_method_hash FixedString(64),                -- SHA-256 of normalized smali body
    smali_method String CODEC(ZSTD(3)),               -- Full smali method body
    smali_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    smali_instructions_count UInt32,
    smali_register_count UInt16,
    smali_has_string_encryption UInt8 DEFAULT 0,
    smali_has_reflection_calls UInt8 DEFAULT 0,
    smali_excessive_goto_count UInt8 DEFAULT 0,
    smali_flattened_score Float64 DEFAULT 0.0,       -- Control flow flattening score (0.01.0)
    smali_mba_score Float64 DEFAULT 0.0,             -- Mixed boolean-arithmetic score (0.01.0)
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_ngram smali_method TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_type smali_method_type TYPE set(3) GRANULARITY 1,
    INDEX idx_smali_instr_count smali_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_reg_count smali_register_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_flattened smali_flattened_score TYPE minmax GRANULARITY 4,
    INDEX idx_smali_mba smali_mba_score TYPE minmax GRANULARITY 4
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 4: `code_apk_smali_methods_references`

**Analog:** `code_binja_disassembled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_references (
    sha256 FixedString(64),
    smali_method_hash FixedString(64),
    decompiled_method_hash Nullable(FixedString(64)),
    smali_class_name LowCardinality(String),
    smali_method_name LowCardinality(String),
    smali_method_signature String,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_class_name smali_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_name smali_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, smali_method_hash);
```

## Table 5: `code_apk_method_similarity_metrics`

**Analog:** `code_binja_function_similarity_metrics`

Content-based fuzzy matching table. Structural/CFG scalars (block_count, edge_count, etc.)
are in `code_apk_cfg_methods` (Table 6) — this table holds only fuzzy hashes and MinHash.

```sql
CREATE TABLE IF NOT EXISTS code_apk_method_similarity_metrics (
    smali_method_hash FixedString(64),
    -- Raw smali fuzzy hashes (analog: ssdeep_disassembly / tlsh_disassembly)
    ssdeep_smali Nullable(String),
    tlsh_smali Nullable(FixedString(72)),
    -- Semantically normalized smali fuzzy hashes (analog: ssdeep_llil / tlsh_llil)
    ssdeep_smali_normalized Nullable(String),
    tlsh_smali_normalized Nullable(FixedString(72)),
    minhash Array(UInt8),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_ssdeep ssdeep_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh tlsh_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_ssdeep_norm ssdeep_smali_normalized TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh_norm tlsh_smali_normalized TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 6: `code_apk_cfg_methods`

**Analog:** `code_binja_cfg_functions` (see `db_migration/cfg_functions_ddl.sql`)

Structural and topological features computed from smali CFG. All fields mirror
the Binja table with APK-appropriate naming.

```sql
CREATE TABLE IF NOT EXISTS code_apk_cfg_methods (
    -- Identity
    smali_method_hash FixedString(64),

    -- Tier 0: Exact structural match
    cfg_topology_hash FixedString(16),

    -- Tier 1: Structural pre-filtering
    block_count UInt16,
    edge_count UInt16,
    cfg_instructions_count UInt32,            -- Dalvik instruction count (analog: llil_total_operations)
    call_count UInt16,
    cyclomatic_complexity UInt16,
    loop_count UInt16,
    max_depth UInt16,
    max_fan_out UInt16,
    md_index_topdown UInt64,
    md_index_bottomup UInt64,
    prime_product_smali UInt64,              -- Dalvik semantic primes (analog: prime_product_llil)

    -- Tier 2: Fuzzy matching
    cfg_feature_tlsh Nullable(FixedString(72)),
    wl_minhash Array(UInt8),

    -- Embedding-ready storage
    bb_features Array(Array(UInt16)),        -- ACFG block feature vectors
    cfg_adjacency Array(UInt32),             -- Packed (src << 16 | tgt)

    analysis_date DateTime64(3, 'UTC'),

    -- Indexes
    INDEX idx_topology cfg_topology_hash TYPE bloom_filter GRANULARITY 1,
    INDEX idx_complexity cyclomatic_complexity TYPE minmax GRANULARITY 4,
    INDEX idx_block_count block_count TYPE minmax GRANULARITY 4,
    INDEX idx_edge_count edge_count TYPE minmax GRANULARITY 4,
    INDEX idx_call_count call_count TYPE minmax GRANULARITY 4,
    INDEX idx_cfg_instr_count cfg_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_loop_count loop_count TYPE minmax GRANULARITY 4,
    INDEX idx_max_depth max_depth TYPE minmax GRANULARITY 4,
    INDEX idx_max_fan_out max_fan_out TYPE minmax GRANULARITY 4,
    INDEX idx_md_topdown md_index_topdown TYPE minmax GRANULARITY 4,
    INDEX idx_md_bottomup md_index_bottomup TYPE minmax GRANULARITY 4,
    INDEX idx_prime prime_product_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_cfg_tlsh cfg_feature_tlsh TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

**Column mapping (APK → Binja):**

| APK column | Binja column | Notes |
|------------|-------------|-------|
| `smali_method_hash` | `disassembled_function_hash` | Both SHA-256 of normalized code |
| `cfg_instructions_count` | `llil_total_operations` | Dalvik instructions vs LLIL operations |
| `prime_product_smali` | `prime_product_llil` | Same prime algorithm, Dalvik semantic categories |
| All others | Same name | Identical algorithms from shared `cfg_features.py` |

## Table 7: `code_binja_strings_raw` (shared)

APK strings are inserted into the existing `code_binja_strings_raw` Null-engine table,
which feeds materialized views (`code_binja_strings_by_binary`, `mv_string_popularity_public`).
This enables cross-format string correlation between PE/ELF/Mach-O/APK samples.

No new table creation needed — see `docs/new-code-binja-schema.md` for the existing DDL.

## Table 8: `code_apk_analysis_errors`

**Analog:** `function_analysis_errors_binja`

```sql
CREATE TABLE IF NOT EXISTS code_apk_analysis_errors (
    sha256 FixedString(64),
    class_name Nullable(String) CODEC(ZSTD(3)),
    method_name Nullable(String) CODEC(ZSTD(3)),
    error_location LowCardinality(String) CODEC(ZSTD(3)),   -- 'jadx', 'apktool', 'androguard', 'analysis'
    error_message Nullable(String) CODEC(ZSTD(3)),
    error_type Nullable(String) CODEC(ZSTD(3)),
    error_hash FixedString(32),                               -- MD5 for dedup
    status Enum8('new' = 1, 'investigating' = 2, 'fixed' = 3, 'wontfix' = 4) DEFAULT 'new',
    analysis_date DateTime64(3, 'UTC')
) ENGINE = MergeTree()
ORDER BY (sha256, error_location, error_hash);
```