Oswaldo Morales Matamoros

27 papers Journal 21Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
Syst.
Blanca Alhely Ceballos Chávez, José Guillermo Takeo Nava, Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros
2024 J jnl
Syst.
Ana Lilia Coria Páez, Brenda Lorena Flores Hidalgo, Oswaldo Morales Matamoros, Jesús Jaime Moreno Escobar, Hugo Quintana Espinosa
2023 J jnl
Computación y Sistemas (CyS)
Jesús Jaime Moreno Escobar, Verónica de Jesús Pérez-Franco, Ana Lilia Coria Páez, Oswaldo Morales Matamoros, Erika Yolanda Aguilar del Villar, Mauro Daniel Castillo-Perez
2023 J jnl
Computación y Sistemas (CyS)
Erika Yolanda Aguilar del Villar, Mario Alberto Sánchez Flores, Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla
2023 J jnl
Syst.
Ana Gabriela Ramírez Gutiérrez, Pavel Solano García, Oswaldo Morales Matamoros, Jesús Jaime Moreno Escobar, Ricardo Tejeida Padilla
2021 J jnl
Sensors
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Ixchel Lina Reyes, Hugo Quintana Espinosa
2021 J jnl
Multim. Tools Appl.
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ixchel Lina Reyes, Ricardo Tejeida Padilla, Liliana Chanona-Hernández
2021 conf
IntelliSys (1)
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ana Lilia Coria Páez, Ricardo Tejeida Padilla
2021 J jnl
Computación y Sistemas
Oswaldo Morales Matamoros, Jesús Jaime Moreno Escobar, Ricardo Tejeida Padilla, Ana Gabriela Ramírez Gutiérrez, Pedro Flores Jiménez
2021 J jnl
Sensors
Francisco Javier García Fierros, Jesús Jaime Moreno Escobar, Gabriel Sepúlveda-Cervantes, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla
2020 J jnl
Sensors
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Liliana Chanona-Hernández, Juan Pablo Francisco Posadas-Durán, Ana Karen Pérez Martínez, Ixchel Lina Reyes, Hugo Quintana Espinosa
2020 J jnl
Computación y Sistemas
Jesús Jaime Moreno Escobar, Jonatan Mireles Hernández, Oswaldo Morales Matamoros, Guillermo Urriolagoitia-Sosa, Guillermo Urriolagoitia-Calderón
2020 J jnl
Sensors
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ixchel Lina Reyes, Ricardo Tejeida Padilla, Liliana Chanona-Hernández, Juan Pablo Francisco Posadas-Durán
2020 J jnl
Res. Comput. Sci.
Jaime Moreno, Oswaldo Morales Matamoros, Ana Lilia Coria Páez, Ricardo Tejeida-Padilla, Liliana Chanona-Hernández
2020 J jnl
Int. J. Distributed Sens. Networks
Jaime Moreno, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Hugo Quintana, Grigori Sidorov
2020 conf
IntelliSys (3)
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Jhonatan Castañón Martínez, Mario Mendieta López
2019 conf
CVC (1)
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Juan Pablo Francisco Posadas-Durán
2019 J jnl
Res. Comput. Sci.
Jaime Moreno, Oswaldo Morales Matamoros, Liliana Chanona-Hernández, Ricardo Tejeida Padilla, Pedro Flores, Víctor Calderón
2019 J jnl
Sensors
Jaime Moreno, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Juan Pablo Posadas-Durán, Hugo Quintana, Grigori Sidorov
2019 conf
IntelliSys (2)
Oswaldo Morales Matamoros, Jesús Jaime Moreno Escobar, Ixchel Lina Reyes, Teresa Ivonne Contreras Troya, Ricardo Tejeida Padilla
2019 J jnl
Computación y Sistemas
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Hugo Quintana Espinosa
2019 J jnl
Res. Comput. Sci.
Alberto Carlos Pérez Cadena, Oswaldo Morales Matamoros, Diego Alfredo Padilla Pérez, Jesús Jaime Moreno Escobar
2018 J jnl
Res. Comput. Sci.
Jesús Jaime Moreno Escobar, Joshua Romero-Tapia, Oswaldo Morales Matamoros
2018 conf
MICAI (1)
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla, Juan Pablo Posadas-Durán
2018 conf
IntelliSys (2)
Jesús Jaime Moreno Escobar, Joshua Romero, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla
2018 J jnl
Res. Comput. Sci.
Jesús Jaime Moreno Escobar, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla
2016 J jnl
Res. Comput. Sci.
Jesús Jaime Moreno Escobar, Edgar Antonio Domínguez Ramírez, Jesús Cruz Hernández, Oswaldo Morales Matamoros, Ricardo Tejeida Padilla
redb/extractors/decompiler/apk/apktool_wrapper.py
← Index redb/extractors/decompiler/apk/apktool_wrapper.py python
"""Apktool disassembler subprocess wrapper.

Manages apktool subprocess execution for smali disassembly,
following the CAPA extractor subprocess pattern.
"""

import os
import signal
import subprocess
from typing import List, Optional


class ApktoolDisassembler:
    """Subprocess wrapper for apktool smali disassembly."""

    def __init__(
        self, apktool_path: str = None, timeout: int = None, log=None
    ):
        self.apktool_path = apktool_path or os.getenv("APKTOOL_PATH", "apktool")
        self.timeout = timeout or int(os.getenv("APKTOOL_TIMEOUT", "120"))
        self.log = log

    def disassemble(self, apk_path: str, output_dir: str) -> bool:
        """Run apktool disassembly on an APK file.

        Returns True on success, False on failure.
        """
        cmd = [
            self.apktool_path,
            "d",
            "--no-res",
            "--force",
            "--output", output_dir,
            apk_path,
        ]

        try:
            process = subprocess.Popen(
                cmd,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                text=True,
                preexec_fn=os.setsid,
            )

            try:
                stdout, stderr = process.communicate(timeout=self.timeout)
                if process.returncode != 0:
                    if self.log:
                        self.log.warning(
                            f"apktool returned non-zero exit code {process.returncode}: "
                            f"{stderr[:500] if stderr else 'no stderr'}"
                        )
                    return False
                return True

            except subprocess.TimeoutExpired:
                if self.log:
                    self.log.error(
                        f"apktool timed out after {self.timeout}s"
                    )
                try:
                    os.killpg(os.getpgid(process.pid), signal.SIGTERM)
                    process.wait(timeout=3)
                except (ProcessLookupError, subprocess.TimeoutExpired):
                    try:
                        os.killpg(os.getpgid(process.pid), signal.SIGKILL)
                    except ProcessLookupError:
                        pass
                return False

        except FileNotFoundError:
            if self.log:
                self.log.error(
                    f"apktool not found at '{self.apktool_path}'. "
                    "Install apktool or set APKTOOL_PATH env var."
                )
            return False
        except Exception as e:
            if self.log:
                self.log.error(f"apktool execution error: {e}")
            return False

    def get_smali_directories(self, output_dir: str) -> List[str]:
        """Return paths to all smali output directories.

        Handles multi-DEX: smali/, smali_classes2/, smali_classes3/, etc.
        """
        smali_dirs = []
        if not os.path.isdir(output_dir):
            return smali_dirs

        for entry in sorted(os.listdir(output_dir)):
            if entry == "smali" or entry.startswith("smali_classes"):
                full_path = os.path.join(output_dir, entry)
                if os.path.isdir(full_path):
                    smali_dirs.append(full_path)

        return smali_dirs