Imran Raza

31 papers Misc 1Journal 26Unranked 4
YearRankTypeTitle / Venue / Authors
2025 J jnl
Multim. Tools Appl.
Sana Yasin, Alice Othmani, Bouibauan Mohamed, Imran Raza, Syed Asad Hussain
2025 J jnl
Comput. Commun.
Rahima Tanveer, Muhammad Ziad Nayyer, Muhammad Hasan Jamal, Imran Raza, Claude Fachkha
2023 J jnl
Adv. Comput.
Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain
2023 J jnl
Comput. Biol. Medicine
Sana Yasin, Alice Othmani, Imran Raza, Syed Asad Hussain
2022 J jnl
IEEE Trans. Serv. Comput.
Usama Ahmed, Imran Raza, Omer F. Rana, Syed Asad Hussain
2022 J jnl
IEEE Access
Sana Latif, Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain, Muhammad Hasan Jamal, Soojung Hur, Imran Ashraf
2022 J jnl
IEEE Access
Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain, Muhammad Hasan Jamal, Zeeshan Gillani, Soojung Hur, Imran Ashraf
2021 J jnl
IEEE Trans. Intell. Transp. Syst.
Li Feng, Amjad Ali, Muddesar Iqbal, Farman Ali, Imran Raza, Muhammad Hameed Siddiqi, Muhammad Shafiq, Syed Asad Hussain
2021 J jnl
Comput. Methods Programs Biomed.
Sana Yasin, Syed Asad Hussain, Sinem Aslan, Imran Raza, Muhammad Muzammel, Alice Othmani
2021 J jnl
CoRR
Anum Shahid, Imran Raza, Syed Asad Hussain
2020 J jnl
IEEE Trans. Cogn. Commun. Netw.
Amjad Ali, Sikandar Tariq, Muddesar Iqbal, Li Feng, Imran Raza, Muhammad Hameed Siddiqi, Ali Kashif Bashir
2020 J jnl
IEEE Access
Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain
2020 J jnl
IEEE Access
Usama Ahmed, Ioan Petri, Omer F. Rana, Imran Raza, Syed Asad Hussain
2020 J jnl
CoRR
Sana Yasin, Syed Asad Hussain, Sinem Aslan, Imran Raza, Muhammad Muzammel, Alice Othmani
2019 J jnl
ACM Comput. Surv.
Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain
2019 J jnl
Adv. Comput.
Muhammad Ziad Nayyer, Imran Raza, Syed Asad Hussain
2019 Misc conf
FIT
Arif Husen, Imran Raza, Syed Asad Hussain
2019 J jnl
ACM Comput. Surv.
Usama Ahmed, Imran Raza, Syed Asad Hussain
2018 conf
UCC Companion
Usama Ahmed, Ioan Petri, Omer F. Rana, Imran Raza, Syed Asad Hussain
2017 J jnl
Comput. Networks
Muhammad Mohsin Mehdi, Imran Raza, Syed Asad Hussain
2017 J jnl
Mob. Inf. Syst.
Syed Asad Hussain, Muddesar Iqbal, Atif Saeed, Imran Raza, Muhammad H. Raza, Amjad Ali, Ali Kashif Bashir, Adeel Baig
2017 J jnl
IET Softw.
Furkh Zeshan, Radziah Mohamad, Mohammad Nazir Ahmad, Syed Asad Hussain, Adnan Ahmad, Imran Raza, Abid Mehmood, Ikram Ulhaq, Arafat Abdulgader, Imran Babar
2016 J jnl
IET Commun.
Muhammad Talha Gul, Amjad Ali, Deepak Kumar Singh, Umera Imtinan, Imran Raza, Syed Asad Hussain, Doug Young Suh, Jong-Wook Lee
2016 J jnl
J. Reliab. Intell. Environ.
Syed Fawad Haider, Laraib Abbas, Amjad Ali, Muddesar Iqbal, Imran Raza, Syed Asad Hussain, Doug Young Suh
2015 J jnl
J. Reliab. Intell. Environ.
Usama Ahmed, Imran Raza, Syed Asad Hussain, Amjad Ali, Muddesar Iqbal, Xinheng Wang
2015 J jnl
J. Reliab. Intell. Environ.
Amir Raza Khan, Muddesar Iqbal, Junaid Muzaffar, Amir Nisar, Amjad Ali, Imran Raza, Syed Asad Hussain
2014 conf
ANT/SEIT
Hafiz Husnain Raza Sherazi, Imran Raza, Muhammad Hasanain Chaudary, Syed Asad Hussain, Muhammad Hassan Raza
2012 J jnl
IET Wirel. Sens. Syst.
Imran Raza, Salahuddin R. Chaudhry, Syed Asad Hussain, Shahbaz Akhtar Abid, H. Raza
2011 conf
VTC Spring
Saqib R. Chaudhry, Hamed S. Al-Raweshidy, Imran Raza, Manal Jamil Al-Kindi
2008 J jnl
Comput. Commun.
Imran Raza, Syed Asad Hussain
2007 conf
IMECS
Imran Raza, Muhammad Hassan Raza
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