Carlos A. Astudillo

48 papers B 3C 6Misc 1Journal 17Unranked 21
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Geosci. Remote. Sens. Lett.
Fernando G. Marques, Carlos A. Astudillo, Alan Souza, Daniel Miranda, Edson Borin
2025 C conf
ISCC
Víctor Vilchez, Edward Hinojosa, Robson E. De Grande, Carlos A. Astudillo
2025 conf
QSW
Arthur Barata, Roberto Rodrigues Filho, Carlos A. Astudillo, Luiz F. Bittencourt
2025 J jnl
CoRR
Gabriela N. Caspa H., Carlos A. Astudillo, Nelson L. S. da Fonseca
2025 C conf
ISCC
Lucas Barbosa, Yuri Santo, Júlio Oliveira, Carlos A. Astudillo, Weverton Cordeiro, André Riker, Glaucio H. S. Carvalho
2025 J jnl
CoRR
Giancarlo Maldonado Cardenas, Diana C. Gonzalez, Judy C. Guevara, Carlos A. Astudillo, Nelson L. S. da Fonseca
2025 conf
WD
Edison A. Arteaga López, Gustavo A. Ramírez González, Carlos A. Astudillo
2025 J jnl
IEEE Netw.
Oscar J. Ciceri, Carlos A. Astudillo, Gustavo B. Figueiredo, Zuqing Zhu, Nelson L. S. da Fonseca
2025 C conf
SBAC-PAD
João Seródio, Júlio César Faracco, Fernando Gubitoso, Otávio O. Napoli, Alan Souza, Daniel Miranda, Carlos A. Astudillo, Edson Borin
2025 conf
WD
Gabriel S. Enoki, Carlos A. Astudillo
2024 conf
ICC
Oscar J. Ciceri, Carlos A. Astudillo, Zuqing Zhu, Nelson L. S. da Fonseca
2024 B conf
GLOBECOM
Carlos A. Astudillo, Nelson L. S. da Fonseca
2024 C conf
ISCC
Bruno S. Martins, Allan Mariano de Souza, Denis Rosário, Carlos A. Astudillo, Eduardo Cerqueira, Leandro Villas
2024 conf
LATINCOM
Bruno Monteiro Pires, Carlos A. Astudillo, Alex Roschildt Pinto, Alexandro Baldassin
2024 conf
WF-IoT
Eduardo E. P. Mosca, Silvio E. S. B. Ribeiro, Nelson Luis Saldanha da Fonseca, Carlos A. Astudillo
2024 Misc conf
UCC
Carlos Eduardo Millani, Carlos A. Astudillo, Edson Borin
2023 conf
CCNC
Aissa Hadj Mohamed, Nícolas R. G. Assumpçáo, Carlos A. Astudillo, Allan Mariano de Souza, Luiz F. Bittencourt, Leandro A. Villas
2023 conf
SBAC-PADW
Nícolas Hecker, Otávio O. Napoli, Carlos A. Astudillo, João Paulo Navarro, Alan Souza, Daniel Miranda, Leandro A. Villas, Edson Borin
2023 J jnl
IEEE Netw.
Oscar J. Ciceri, Carlos A. Astudillo, Zuqing Zhu, Nelson L. S. da Fonseca
2022 J jnl
Photonic Netw. Commun.
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2022 J jnl
Photonic Netw. Commun.
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2021 J jnl
CoRR
Oscar J. Ciceri, Carlos A. Astudillo, Zuqing Zhu, Nelson L. S. da Fonseca
2021 J jnl
CoRR
Oscar J. Ciceri, Carlos A. Astudillo, Gustavo B. Figueiredo, Zuqing Zhu, Nelson L. S. da Fonseca
2021 J jnl
CoRR
Carlos A. Astudillo, Ekram Hossain, Nelson L. S. da Fonseca
2021 J jnl
IEEE Wirel. Commun. Lett.
Carlos A. Astudillo, Ekram Hossain, Nelson L. S. da Fonseca
2020 conf
ICC
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2020 conf
LATINCOM
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2019 conf
LATINCOM
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2019 conf
ICC
Carlos A. Astudillo, H. S. Fernando Pereira, Nelson L. S. da Fonseca
2019 J jnl
IEEE Netw. Lett.
H. S. Fernando Pereira, Carlos A. Astudillo, Nelson L. S. da Fonseca
2018 C conf
ISCC
Oscar J. Ciceri, Carlos A. Astudillo, Nelson L. S. da Fonseca
2018 C conf
ISCC
H. S. Fernando Pereira, Carlos A. Astudillo, Nelson L. S. da Fonseca
2018 conf
RTSI
Carlos A. Astudillo, Tiago P. C. de Andrade, Eduardo S. Gama, Luiz F. Bittencourt, Leandro A. Villas, Edmundo R. M. Madeira, Nelson L. S. da Fonseca
2018 conf
CAMAD
Paulo Marques, Alexandre Pereira do Carmo, Valerio Frascolla, Carlos F. M. Silva, Emanuel D. R. Sena, Raphael Braga, Joao F. N. Pinheiro, Carlos A. Astudillo, Tiago P. C. de Andrade, Eduardo S. Gama, Luiz F. Bittencourt, Leandro A. Villas, Edmundo R. M. Madeira, Nelson L. S. da Fonseca, Cristiano Both, Gabriel Lando, Matias Artur Klafke Schimuneck, Juliano Araújo Wickboldt, Ana P. V. Trevisan, Rafael de Jesus Martins, Raquel Frizera Vassallo, Felippe Mendonça de Queiroz, Rodolfo Picoreti, Roberta L. Gomes, Cristina K. Dominicini, Victor M. Garcia Martinez, Rafael S. Guimarães, Rodolfo da Silva Villaça, Magnos Martinello, Moisés R. N. Ribeiro, Daniel F. Macedo, Vinicius F. e Silva, Julio C. T. Guimaraes, Carlos Colman Meixner, Reza Nejabati, Dimitra Simeonidou, Yi Zhang, Frank Slyne, Pedro Alvarez, Diarmuid Collins, Marco Ruffini, Luiz A. DaSilva, Johann M. Márquez-Barja
2018 conf
LATINCOM
H. S. Fernando Pereira, Carlos A. Astudillo, Tiago P. C. de Andrade, Nelson L. S. da Fonseca
2017 conf
ICC
Carlos A. Astudillo, Tiago P. C. de Andrade, Nelson L. S. da Fonseca
2017 conf
VTC Fall
Carlos A. Astudillo, Tiago P. C. de Andrade, Nelson L. S. da Fonseca
2017 J jnl
IEEE Commun. Mag.
Tiago P. C. de Andrade, Carlos A. Astudillo, Luiz R. Sekijima, Nelson L. S. da Fonseca
2016 J jnl
IEEE Internet Things J.
Tiago P. C. de Andrade, Carlos A. Astudillo, Nelson L. S. da Fonseca
2015 conf
LATINCOM
Tiago P. C. de Andrade, Carlos A. Astudillo, Nelson L. S. da Fonseca
2015 conf
ICC
Tiago P. C. de Andrade, Carlos A. Astudillo, Nelson L. S. da Fonseca
2014 B conf
WCNC
Carlos A. Astudillo, Nelson L. S. da Fonseca, Juliana Freitag Borin
2014 J jnl
IEEE Wirel. Commun.
Carlos A. Astudillo, Nelson L. S. da Fonseca
2014 conf
LATINCOM
Tiago P. C. de Andrade, Carlos A. Astudillo, Nelson L. S. da Fonseca
2013 B conf
GLOBECOM
Carlos A. Astudillo, Juliana Freitag Borin, Nelson L. S. da Fonseca
2011 conf
NTMS
Carlos A. Astudillo, Oscar J. Calderón, Jesús H. Ortiz
2011 J jnl
CoRR
Carlos A. Astudillo, Oscar J. Calderón, Jesús H. Ortiz
2011 J jnl
CoRR
Carlos A. Astudillo, Adriana M. Gustin, Oscar J. Calderón
redb/extractors/decompiler/bninja/analysis/scores.py
← Index redb/extractors/decompiler/bninja/analysis/scores.py python
from collections import deque
from binaryninja import highlevelil
from binaryninja.enums import HighLevelILOperation


class ObfuscationScores:
    def __init__(self, hlil_function):
        self.function = hlil_function
        self._basic_blocks = list(hlil_function.basic_blocks) if hlil_function and hlil_function.basic_blocks else []
        self._block_count = len(self._basic_blocks)

    def flattened_score(self):
        """
        A heuristic for detecting control flow flattening from Tim Blazytko.
        Source: https://www.synthesis.to/2021/03/03/flattening_detection.html
        """
        if self._block_count == 0:
            return 0.0

        max_flattening_ratio = 0.0

        for basic_block in self._basic_blocks:
            dominated = get_dominated_by(basic_block)
            if not any(edge.source in dominated for edge in basic_block.incoming_edges):
                continue
            ratio = len(dominated) / self._block_count
            if ratio > max_flattening_ratio:
                max_flattening_ratio = ratio

        return max_flattening_ratio

    def MBA_score(self):
        """
        Score for MBA is obtained by the number of instructions that have at least one arithmetic operation and
        one logic operation DIVIDED by the number of instructions.
        """
        total = 0
        mba_count = 0

        for ins in self.function.instructions:
            total += 1
            if uses_mba(ins):
                mba_count += 1

        if total == 0:
            return 0.0

        return mba_count / total

def get_dominated_by(dominator):
    """
    Get the dominators that are dominated by the given dominator.
    (To recall the theory, a basic block B is called dominator for A if every path from START
    to A must include B)
    """
    result = set()
    worklist = deque([dominator])

    while worklist:
        block = worklist.popleft()
        if block in result:
            continue
        result.add(block)
        worklist.extend(block.dominator_tree_children)

    return result

_ARITHMETIC_OPS = frozenset({
    HighLevelILOperation.HLIL_ADD,
    HighLevelILOperation.HLIL_NEG,
    HighLevelILOperation.HLIL_SUB,
    HighLevelILOperation.HLIL_MUL,
    HighLevelILOperation.HLIL_DIVS,
    HighLevelILOperation.HLIL_MODS,
})

_LOGIC_OPS = frozenset({
    HighLevelILOperation.HLIL_NOT,
    HighLevelILOperation.HLIL_AND,
    HighLevelILOperation.HLIL_OR,
    HighLevelILOperation.HLIL_XOR,
    HighLevelILOperation.HLIL_LSR,
    HighLevelILOperation.HLIL_LSL,
})

_MBA_OPS = _ARITHMETIC_OPS | _LOGIC_OPS

def uses_mba(hlil_instruction):
    uses_logic = False
    uses_arithmetic = False
    stack = [hlil_instruction]

    while stack:
        instruction = stack.pop()

        if not isinstance(instruction, highlevelil.HighLevelILInstruction):
            continue

        op = instruction.operation

        if op not in _MBA_OPS:
            for operand in instruction.operands:
                if isinstance(operand, highlevelil.HighLevelILInstruction):
                    stack.append(operand)
            continue

        if op in _ARITHMETIC_OPS:
            uses_arithmetic = True
        else:
            uses_logic = True

        if uses_logic and uses_arithmetic:
            return True

        for operand in instruction.operands:
            if isinstance(operand, highlevelil.HighLevelILInstruction):
                stack.append(operand)

    return False