Rafael Morales Bueno

53 papers A* 1A 2B 9C 8Misc 1Journal 23Unranked 9
YearRankTypeTitle / Venue / Authors
2024 J jnl
Eng. Appl. Artif. Intell.
José del Campo-Ávila, Javier Ramos-Martín, Carlos Gómez-Sánchez-Lafuente, Johanna García-Pedrosa, Saúl García-Martín, Ana I. Martínez-García, José Guzmán-Parra, Rafael Morales Bueno, Berta Moreno-Küstner
2018 B conf
SMC
Marlon Núñez, Raul Fidalgo-Merino, Rafael Morales Bueno
2016 J jnl
Knowl. Based Syst.
Isvani Inocencio Frías Blanco, José del Campo-Ávila, Gonzalo Ramos-Jiménez, André C. P. L. F. de Carvalho, Agustín Alejandro Ortiz Díaz, Rafael Morales Bueno
2015 J jnl
Int. J. Interact. Multim. Artif. Intell.
José del Campo-Ávila, Ricardo Conejo, Francisco Triguero Ruiz, Rafael Morales Bueno
2015 J jnl
IEEE Trans. Knowl. Data Eng.
Isvani Inocencio Frías Blanco, José del Campo-Ávila, Gonzalo Ramos-Jiménez, Rafael Morales Bueno, Agustín Alejandro Ortiz Díaz, Yailé Caballero Mota
2014 J jnl
Computación y Sistemas
Isvani Inocencio Frías Blanco, José del Campo-Ávila, Gonzalo Ramos-Jiménez, Rafael Morales Bueno, Agustín Alejandro Ortiz Díaz, Yailé Caballero Mota
2014 J jnl
J. Comput. Syst. Sci.
Manuel Baena-García, José M. Carmona-Cejudo, Rafael Morales Bueno
2013 J jnl
Knowl. Based Syst.
José M. Carmona-Cejudo, Gladys Castillo, Manuel Baena-García, Rafael Morales Bueno
2012 J jnl
Knowl. Based Syst.
Manuel Baena-García, Rafael Morales Bueno
2011 B conf
DaWaK
José Luis Triviño-Rodriguez, Amparo Ruiz-Sepúlveda, Rafael Morales Bueno
2011 C conf
ISDA
José M. Carmona-Cejudo, Gladys Castillo, Manuel Baena-García, Rafael Morales Bueno
2011 C conf
CIDM
José M. Carmona-Cejudo, Manuel Baena-García, José del Campo-Ávila, Rafael Morales Bueno
2011 C conf
ISDA
Manuel Baena-García, Rafael Morales Bueno
2011 B conf
IDA
José M. Carmona-Cejudo, Manuel Baena-García, José del Campo-Ávila, Albert Bifet, João Gama, Rafael Morales Bueno
2011 C conf
ISDA
José M. Carmona-Cejudo, Manuel Baena-García, Gladys Castillo, Rafael Morales Bueno
2011 conf
HIMA
Pedro Antonio Gutiérrez, Manuel Baena-García, Rafael Morales Bueno, César Hervás-Martínez
2011 conf
IWANN (2)
José del Campo-Ávila, Gonzalo Ramos-Jiménez, Jesús Pérez-García, Rafael Morales Bueno
2011 C conf
ISDA
Manuel Baena-García, José M. Carmona-Cejudo, Gladys Castillo, Rafael Morales Bueno
2011 conf
WAPA
José M. Carmona-Cejudo, Manuel Baena-García, Rafael Morales Bueno, João Gama, Albert Bifet
2010 J jnl
Inteligencia Artif.
Isvani Inocencio Frías Blanco, Agustín Alejandro Ortiz Díaz, Gonzalo Ramos-Jiménez, Rafael Morales Bueno, Yailé Caballero Mota
2010 A conf
ECAI
José M. Carmona-Cejudo, Manuel Baena-García, José del Campo-Ávila, Rafael Morales Bueno, Albert Bifet
2010 conf
IEA/AIE (1)
Manuel Baena-García, Rafael Morales Bueno
2009 B conf
Discovery Science
Amparo Ruiz-Sepúlveda, José Luis Triviño-Rodriguez, Rafael Morales Bueno
2009 C conf
ISDA
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2008 B conf
DaWaK
José Luis Triviño-Rodriguez, Amparo Ruiz-Sepúlveda, Rafael Morales Bueno
2008 J jnl
Intell. Data Anal.
José del Campo-Ávila, Gonzalo Ramos-Jiménez, João Gama, Rafael Morales Bueno
2007 B conf
IDA
José del Campo-Ávila, Gonzalo Ramos-Jiménez, Rafael Morales Bueno
2007 J jnl
J. Mach. Learn. Res.
Marlon Núñez, Raúl Fidalgo, Rafael Morales Bueno
2006 C conf
ADMA
Marlon Núñez, Rafael Morales Bueno
2006 J jnl
Int. J. Syst. Sci.
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2006 B conf
Discovery Science
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2006 J jnl
Inteligencia Artif.
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2005 J jnl
Bull. EATCS
Manuel Baena-García, Rafael Morales Bueno, José-Luis Pérez-de-la-Cruz, Inmaculada Fortes Ruiz, Llanos Mora López
2005 C conf
ADMA
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2005 Misc conf
IWANN
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2005 conf
RSFDGrC (2)
Gonzalo Ramos-Jiménez, José del Campo-Ávila, Rafael Morales Bueno
2005 J jnl
Environ. Model. Softw.
Llanos Mora López, Juan Mora, Rafael Morales Bueno, Mariano Sidrach de Cardona
2005 conf
MICAI
Marlon Núñez, Raúl Fidalgo, Rafael Morales Bueno
2005 J jnl
Inteligencia Artif.
Rafael Morales Bueno, José Luis Triviño-Rodriguez
2004 A conf
AAMAS
Marlon Núñez, Rafael Morales Bueno
2004 J jnl
Theor. Comput. Sci.
Stephan J. Eidenbenz, Matthew Hennessy, Rafael Morales Bueno, Francisco Triguero Ruiz, Peter Widmayer, Ricardo Conejo
2002 A* ed.
ICALP
Peter Widmayer, Francisco Triguero Ruiz, Rafael Morales Bueno, Matthew Hennessy, Stephan J. Eidenbenz, Ricardo Conejo
2002 J jnl
IEEE J. Sel. Areas Commun.
Marlon Núñez, Rafael Morales Bueno, Francisco Triguero Ruiz
2001 B conf
Discovery Science
Inmaculada Fortes Ruiz, José L. Balcázar, Rafael Morales Bueno
2001 J jnl
Fuzzy Sets Syst.
Rafael Morales Bueno, Ricardo Conejo, José-Luis Pérez-de-la-Cruz, Francisco Triguero Ruiz
2001 B conf
IDA
José Luis Triviño-Rodriguez, Rafael Morales Bueno
2001 J jnl
Comput. Music. J.
José Luis Triviño-Rodriguez, Rafael Morales Bueno
2000 conf
IWPT
José Luis Triviño-Rodriguez, Rafael Morales Bueno
2000 conf
ECML
Llanos Mora López, Inmaculada Fortes Ruiz, Rafael Morales Bueno, Francisco Triguero Ruiz
1999 conf
EUSFLAT-ESTYLF Joint Conf.
Rafael Morales Bueno, José-Luis Pérez-de-la-Cruz, Francisco Triguero Ruiz, Ricardo Conejo
1998 J jnl
Theor. Comput. Sci.
Gonzalo Ramos-Jiménez, J. López-Muñoz, Rafael Morales Bueno
1997 J jnl
Fuzzy Sets Syst.
Rafael Morales Bueno, José-Luis Pérez-de-la-Cruz, Ricardo Conejo, Buenaventura Clares
1995 J jnl
Artif. Intell. Eng.
José-Luis Pérez-de-la-Cruz, Ricardo Conejo Muñoz, Rafael Morales Bueno, J. Puy-Huarte
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