Rade Stanojevic

54 papers A* 5A 9B 7Misc 2Journal 21Unranked 10
YearRankTypeTitle / Venue / Authors
2021 J jnl
Proc. VLDB Endow.
Sofiane Abbar, Rade Stanojevic, Mashaal Musleh, Mohamed M. Elshrif, Mohamed F. Mokbel
2021 J jnl
Proc. VLDB Endow.
Mashaal Musleh, Sofiane Abbar, Rade Stanojevic, Mohamed F. Mokbel
2021 J jnl
Commun. ACM
Sofiane Abbar, Rade Stanojevic, Shadab Mustafa, Mohamed F. Mokbel
2020 J jnl
CoRR
Mohamed F. Mokbel, Sofiane Abbar, Rade Stanojevic
2020 J jnl
ACM SIGSPATIAL Special
Mohamed F. Mokbel, Sofiane Abbar, Rade Stanojevic
2020 B conf
MDM
Sofiane Abbar, Rade Stanojevic, Mohamed F. Mokbel
2020 J jnl
CoRR
Sofiane Abbar, Rade Stanojevic, Mohamed F. Mokbel
2019 B conf
MDM
Rade Stanojevic, Sofiane Abbar, Mohamed F. Mokbel
2018 conf
LBS
Rade Stanojevic, Sofiane Abbar, Saravanan Thirumuruganathan, Gianmarco De Francisci Morales, Sanjay Chawla, Fethi Filali, Ahid Aleimat
2018 J jnl
CoRR
Rade Stanojevic, Sofiane Abbar, Saravanan Thirumuruganathan, Gianmarco De Francisci Morales, Sanjay Chawla, Fethi Filali, Ahid Aleimat
2018 A conf
SDM
Rade Stanojevic, Sofiane Abbar, Saravanan Thirumuruganathan, Sanjay Chawla, Fethi Filali, Ahid Aleimat
2018 conf
SIGSPATIAL/GIS
Rade Stanojevic, Sofiane Abbar, Mohamed F. Mokbel
2017 conf
PAC
Rade Stanojevic, Mohamed Nabeel, Ting Yu
2017 A conf
CIKM
Rade Stanojevic
2017 J jnl
CoRR
Rade Stanojevic, Sofiane Abbar, Saravanan Thirumuruganathan, Sanjay Chawla, Fethi Filali, Ahid Aleimat
2017 B conf
PAM
Zachary S. Bischof, Fabián E. Bustamante, Rade Stanojevic
2016 J jnl
CoRR
László Gyarmati, Rade Stanojevic
2016 conf
ICDM Workshops
Rade Stanojevic, László Gyarmati
2015 J jnl
Comput. Networks
Andra Lutu, Marcelo Bagnulo, Cristel Pelsser, Kenjiro Cho, Rade Stanojevic
2014 A conf
CoNEXT
Juan Camilo Cardona Restrepo, Rade Stanojevic, Nikolaos Laoutaris
2014 A conf
CoNEXT
Ilias Leontiadis, Antonio Lima, Haewoon Kwak, Rade Stanojevic, David Wetherall, Konstantina Papagiannaki
2014 A conf
Internet Measurement Conference
Zachary S. Bischof, Fabian E. Bustamante, Rade Stanojevic
2014 J jnl
IEEE/ACM Trans. Netw.
Ignacio Castro, Rade Stanojevic, Sergey Gorinsky
2013 A conf
CoNEXT
Claudio Rossi, Narseo Vallina-Rodriguez, Vijay Erramilli, Yan Grunenberger, László Gyarmati, Nikolaos Laoutaris, Rade Stanojevic, Konstantina Papagiannaki, Pablo Rodriguez
2013 J jnl
IEEE/ACM Trans. Netw.
Nikolaos Laoutaris, Georgios Smaragdakis, Rade Stanojevic, Pablo Rodriguez, Ravi Sundaram
2013 A* conf
MobiCom
Jeremy Blackburn, Rade Stanojevic, Vijay Erramilli, Adriana Iamnitchi, Konstantina Papagiannaki
2013 B conf
PAM
Juan Camilo Cardona Restrepo, Rade Stanojevic, Rubén Cuevas
2012 J jnl
Comput. Commun. Rev.
Juan Camilo Cardona Restrepo, Rade Stanojevic
2012 conf
INFOCOM Workshops
Andra Lutu, Marcelo Bagnulo, Rade Stanojevic
2012 Misc conf
HotNets
Rade Stanojevic, Vijay Erramilli, Konstantina Papagiannaki
2012 conf
LANC
Juan Camilo Cardona Restrepo, Rade Stanojevic
2012 A conf
Internet Measurement Conference
László Gyarmati, Rade Stanojevic, Michael Sirivianos, Nikolaos Laoutaris
2012 conf
INFOCOM Workshops
John S. Otto, Rade Stanojevic, Nikolaos Laoutaris
2012 Misc conf
HotNets
Narseo Vallina-Rodriguez, Vijay Erramilli, Yan Grunenberger, László Gyarmati, Nikolaos Laoutaris, Rade Stanojevic, Konstantina Papagiannaki
2011 A conf
CoNEXT
Rade Stanojevic, Ignacio Castro, Sergey Gorinsky
2011 A* conf
SIGCOMM
Eduard Goma Llairo, Marco Canini, Alberto López Toledo, Nikolaos Laoutaris, Dejan Kostic, Pablo Rodriguez, Rade Stanojevic, Pablo Yagüe Valentin
2011 J jnl
IEEE/ACM Trans. Netw.
Lukasz Budzisz, Rade Stanojevic, Arieh Schlote, Fred Baker, Robert Shorten
2010 J jnl
Int. J. Control
Florian Knorn, Rade Stanojevic, Martin J. Corless, Robert Shorten
2010 A* conf
INFOCOM
Rade Stanojevic, Robert Shorten
2010 A conf
Internet Measurement Conference
Rade Stanojevic, Nikolaos Laoutaris, Pablo Rodriguez
2010 J jnl
Comput. Commun.
Rade Stanojevic, Robert Shorten
2009 J jnl
Int. J. Control
Florian Knorn, Rade Stanojevic, Martin J. Corless, Robert Shorten
2009 J jnl
IEEE Commun. Lett.
Lukasz Budzisz, Rade Stanojevic, Robert Shorten, Fred Baker
2009 B conf
IWQoS
Rade Stanojevic, Robert Shorten
2009 conf
ICC
Rade Stanojevic, Robert Shorten
2009 B conf
IWQoS
Lukasz Budzisz, Rade Stanojevic, Arieh Schlote, Robert Shorten, Fred Baker
2008 A* conf
SIGMETRICS
Rade Stanojevic, Robert Shorten
2007 J jnl
Comput. Commun. Rev.
G. Vu-Brugier, Rade Stanojevic, Douglas J. Leith, Robert Shorten
2007 conf
NET-COOP
Rade Stanojevic, Robert Shorten
2007 B conf
IWQoS
Rade Stanojevic, Robert Shorten
2007 conf
NET-COOP
Rade Stanojevic, Robert Shorten
2007 A* conf
INFOCOM
Rade Stanojevic
2006 J jnl
IEEE Commun. Lett.
Rade Stanojevic, Robert N. Shorten, Christopher M. Kellett
2006 J jnl
SIAM J. Matrix Anal. Appl.
Fabian Wirth, Rade Stanojevic, Robert Shorten, Douglas J. Leith
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