Omar P. Vilela Neto

40 papers B 1C 5Journal 10Unranked 24
YearRankTypeTitle / Venue / Authors
2025 conf
SBCCI
Emanuel V. C. Ruella, João Gabriel O. Bicalho, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2025 conf
LASCAS
Emanuel V. C. Ruella, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2025 conf
LASCAS
João V. C. Teixeira, Poliana A. C. Oliveira, Renan A. Marks, Omar P. Vilela Neto
2025 conf
LASCAS
Ruan Evangelista Formigoni, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2024 conf
SBCCI
Luís Fernando Miki, Laysson Oliveira Luz, José Augusto Miranda Nacif, Ricardo S. Ferreira, Omar P. Vilela Neto
2024 conf
SBCCI
Bernardo N. Gomes, Marco T. D. Sousa, Jeferson F. Chaves, Omar P. Vilela Neto
2024 J jnl
Comput. Appl. Eng. Educ.
Ricardo S. Ferreira, Michael Canesche, Peter Jamieson, Omar P. Vilela Neto, José A. M. Nacif
2024 conf
SBCCI
Arthur M. Fortini, João Gabriel O. Bicalho, Omar P. Vilela Neto, Maria D. Vieira, José Augusto Miranda Nacif, Ricardo S. Ferreira
2023 conf
SBCCI
Stefan T. Couperus Leal, Michael Canesche, Omar P. Vilela Neto, Ricardo S. Ferreira, José A. M. Nacif
2023 conf
LASCAS
Poliana A. C. Oliveira, Renan A. Marks, João V. C. Teixeira, Marcos V. Guterres, Omar P. Vilela Neto
2023 conf
ISVLSI
Ruan Evangelista Formigoni, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2022 conf
LASCAS
Laysson Oliveira Luz, José Augusto Miranda Nacif, Ricardo S. Ferreira, Omar P. Vilela Neto
2022 J jnl
IEEE Des. Test
Maria D. Vieira, Samuel S. H. Ng, Marcel Walter, Robert Wille, Konrad Walus, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2021 J jnl
IEEE Des. Test
Renan A. Marks, Daniel K. S. Vieira, Marcos V. Guterres, Poliana A. C. Oliveira, Maria C. O. Fonte Boa, Omar P. Vilela Neto
2021 C conf
ISCAS
Laysson Oliveira Luz, José Augusto Miranda Nacif, Ricardo S. Ferreira, Omar P. Vilela Neto
2021 J jnl
IEEE Des. Test
Lucas A. Lascasas Freitas, João G. Nizer Rahmeier, Omar P. Vilela Neto
2020 conf
SBCCI
Poliana A. C. Oliveira, Maria C. O. Fonte Boa, Renan A. Marks, Marcos V. Guterres, Omar P. Vilela Neto
2020 J jnl
Nano Commun. Networks
Thiago F. Cesar, Luiz Filipe M. Vieira, Marcos Augusto M. Vieira, Omar P. Vilela Neto
2020 C conf
DSD
L. E. Pedraza Caballero, Michelle Povinelli, Jhonattan Córdoba Ramírez, Paulo Guimarães, Omar P. Vilela Neto
2020 conf
SBCCI
Joao N. C. Fiche, Marco T. D. Sousa, Jeferson F. Chaves, Marco A. Ribeiro, Leandro Maia Silva, Luiz Filipe M. Vieira, Omar P. Vilela Neto
2020 J jnl
IET Circuits Devices Syst.
Luiz G. L. Vieira, Luiz Filipe M. Vieira, Marcos Augusto M. Vieira, Omar P. Vilela Neto
2020 J jnl
IEEE Des. Test
Marco A. Ribeiro, Iago A. Carvalho, Omar P. Vilela Neto, Jeferson F. Chaves
2019 conf
SBCCI
Renan A. Marks, Daniel K. S. Vieira, Marcos V. Guterres, Poliana A. C. Oliveira, Omar P. Vilela Neto
2019 conf
SBCCI
Lucas A. Lascasas Freitas, Omar P. Vilela Neto, João G. Nizer Rahmeier, Luiz G. C. Melo
2018 C conf
ISCAS
Pedro Arthur R. L. Silva, Juliana Rezende S. B. Alves, Ricardo S. Ferreira, Omar P. Vilela Neto, José Augusto Miranda Nacif
2018 conf
SBCCI
Ruan Evangelista Formigoni, Omar P. Vilela Neto, José Augusto Miranda Nacif
2018 C conf
ISCAS
Jeferson F. Chaves, Marco A. Ribeiro, Frank Sill Torres, Omar P. Vilela Neto
2018 B conf
CEC
Marco A. Ribeiro, Iago A. Carvalho, Jeferson F. Chaves, Gisele L. Pappa, Omar P. Vilela Neto
2018 conf
SBCCI
Marco A. Ribeiro, Iago A. Carvalho, Jeferson F. Chaves, Omar P. Vilela Neto
2018 C conf
ISCAS
Geraldo Fontes, Pedro Arthur R. L. Silva, José Augusto Miranda Nacif, Omar P. Vilela Neto, Ricardo Ferreira
2017 conf
SBCCI
Amanda F. Fonseca, Douglas L. Willian, Thiago Rodrigues B. S. Soares, Luiz G. C. Melo, Omar P. Vilela Neto
2016 conf
SBCCI
Alyson Trindade, Ricardo S. Ferreira, José Augusto Miranda Nacif, Douglas Sales, Omar P. Vilela Neto
2016 conf
LASCAS
Thiago Rodrigues B. S. Soares, Isaias F. Silva, Luiz G. C. Melo, Omar P. Vilela Neto
2016 conf
CCNC
Antonio Maia, Leandro T. C. Melo, Fernando Magno Quintão Pereira, Omar P. Vilela Neto, Leonardo B. Oliveira
2016 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Caio Araujo T. Campos, Abner Luis Panho Marciano, Omar P. Vilela Neto, Frank Sill Torres
2015 J jnl
Microelectron. J.
Luiz H. B. Sardinha, Douglas S. Silva, Marcos Augusto M. Vieira, Luiz Filipe M. Vieira, Omar P. Vilela Neto
2015 conf
LASCAS
Jeferson F. Chaves, Douglas S. Silva, Victor V. Camargos, Omar P. Vilela Neto
2014 conf
SBCCI
Elverton C. Fazzion, Osvaldo L. H. M. Fonseca, José Augusto Miranda Nacif, Omar P. Vilela Neto, Antônio Otávio Fernandes, Douglas S. Silva
2013 conf
SBCCI
Abner Luis Panho Marciano, Andre B. Oliveira, José Augusto Miranda Nacif, Omar P. Vilela Neto
2013 J jnl
IEEE J. Sel. Areas Commun.
Luiz H. B. Sardinha, Artur Melo Mota Costa, Omar P. Vilela Neto, Luiz Filipe M. Vieira, Marcos Augusto M. Vieira
redb/extractors/decompiler/bninja/analysis/medium_level.py
← Index redb/extractors/decompiler/bninja/analysis/medium_level.py python
import time

from binaryninja import (
    MediumLevelILOperation as MLIL_OP,
)

try:
    from ..function_type import FunctionTypeAnalysis
    from ..similarity.minhasher import MinHasher, TokenKind
    from ..utils.hashes import calculate_sha256, calculate_tlsh
    from .medium_level_normalization import MediumLevelNormalization
except ImportError:
    from redb.extractors.decompiler.bninja.analysis.medium_level_normalization import MediumLevelNormalization
    from redb.extractors.decompiler.bninja.similarity.minhasher import MinHasher
    from redb.extractors.decompiler.bninja.function_type import FunctionTypeAnalysis
    from redb.extractors.decompiler.bninja.utils.hashes import calculate_sha256, calculate_tlsh


_MLIL_CALL_OPS = (
    MLIL_OP.MLIL_CALL,
    MLIL_OP.MLIL_CALL_SSA,
    MLIL_OP.MLIL_CALL_UNTYPED,
    MLIL_OP.MLIL_CALL_UNTYPED_SSA,
    MLIL_OP.MLIL_TAILCALL,
    MLIL_OP.MLIL_TAILCALL_SSA,
    MLIL_OP.MLIL_TAILCALL_UNTYPED,
    MLIL_OP.MLIL_TAILCALL_UNTYPED_SSA,
)

_MLIL_CONTROL_FLOW_OPS = (
    MLIL_OP.MLIL_IF,
    MLIL_OP.MLIL_GOTO,
    MLIL_OP.MLIL_JUMP,
    MLIL_OP.MLIL_JUMP_TO,
    MLIL_OP.MLIL_RET,
    MLIL_OP.MLIL_RET_HINT,
    MLIL_OP.MLIL_NORET,
) + _MLIL_CALL_OPS


class MediumLevelAnalysis:
    def __init__(self, function, bv, logger):
        self.function = function
        self.name = function.name
        self.start = function.start
        self.mlil_func = function.mlil
        self.bv = bv
        self.logger = logger
        self.errors = []

    def log_error(self, message, function_name, address, exception=None, error_location="unknown"):
        error_msg = f"Error in function {function_name} at {address}: {message}"
        if exception:
            error_msg += f" - {str(exception)}"
        self.logger.error(error_msg)

        error = {
            "function_name": function_name,
            "function_address": str(address),
            "error_location": error_location,
            "error_message": message,
            "error_details": str(exception) if exception else "",
            "error_type": type(exception).__name__ if exception else "Unknown",
            "timestamp": int(time.time() * 1000),
        }
        self.errors.append(error)

    def _collect_mlil_skeleton_and_typed(self):
        mlil = self.mlil_func
        if not mlil:
            return [], [], [], []

        start = self.start
        norm = MediumLevelNormalization()

        skeleton = []
        skeleton_with_addr = []
        typed = []
        typed_with_addr = []

        for il in mlil.instructions:
            skel_norm = norm.normalize_instruction_all_levels(il)
            typed_norm = norm.normalize_instr_with_operands(il)

            skeleton.append(skel_norm)
            typed.append(typed_norm)

            offset = il.address - start
            if offset < 0:
                offset = 0

            skeleton_with_addr.append((offset, skel_norm))
            typed_with_addr.append((offset, typed_norm))

        return skeleton, skeleton_with_addr, typed, typed_with_addr

    def analyze(self):
        (
            instr_skeleton,
            body_mlil_skeleton_vector,
            instr_typed,
            body_mlil_typed_vector,
        ) = self._collect_mlil_skeleton_and_typed()

        instr_skeleton_str = str(instr_skeleton)
        sha256_skeleton = calculate_sha256(instr_skeleton_str)
        tlsh_skeleton = calculate_tlsh(instr_skeleton_str)

        instr_typed_str = str(instr_typed)
        sha256_typed = calculate_sha256(instr_typed_str)
        tlsh_typed = calculate_tlsh(instr_typed_str)

        seed = 0xdeadbeef
        minhash_mlil_skeleton = MinHasher(seed, self.mlil_func, TokenKind.MLIL).calculateMinHash()
        minhash_mlil_typed = MinHasher(seed, self.mlil_func, TokenKind.TYPED_MLIL).calculateMinHash()

        medium_level_json = {
            "function_address": self.start,
            "body_mlil_skeleton_vector": body_mlil_skeleton_vector,
            "sha256_mlil_skeleton": sha256_skeleton,
            "tlsh_mlil_skeleton": tlsh_skeleton,
            "minhash_mlil_skeleton": minhash_mlil_skeleton,
            "body_mlil_typed_vector": body_mlil_typed_vector,
            "sha256_mlil_typed": sha256_typed,
            "tlsh_mlil_typed": tlsh_typed,
            "minhash_mlil_typed": minhash_mlil_typed,
        }

        return medium_level_json, self.errors