Haibo Jiang

49 papers C 1Journal 47Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Appl. Math.
Haibo Jiang, Kai Zhang
2026 J jnl
Int. J. Approx. Reason.
Zhenni Ding, Kai Zhang, Haibo Jiang, Ligang Zhou
2025 J jnl
CoRR
Amirhossein Khakpour, Lucia Florescu, Richard Tilley, Haibo Jiang, K. Swaminathan Iyer, Gustavo Carneiro
2025 J jnl
Symmetry
Pengfei Xiang, Gang Wei, Haibo Jiang, Yongjie Qi, Yangyang Liu
2025 J jnl
Fuzzy Sets Syst.
Haibo Jiang, Bao Qing Hu
2024 J jnl
Theor. Comput. Sci.
Haibo Jiang, Xiangnan Zhou, Qingguo Li
2024 J jnl
Expert Syst. Appl.
Haibo Jiang, Bao Qing Hu
2024 J jnl
Sensors
Yuting Meng, Haibo Jiang, Nengquan Duan, Haijun Wen
2023 J jnl
Appl. Intell.
Minrui Huang, Bao Qing Hu, Haibo Jiang, Bo Wen Fang
2023 J jnl
Inf. Sci.
Haibo Jiang, Bao Qing Hu
2023 J jnl
Symmetry
Pengyuan Guan, Shuangxi Li, Haibo Jiang, Pengfei Xiang
2022 J jnl
Int. J. Approx. Reason.
Jingjing Xie, Bao Qing Hu, Haibo Jiang
2022 J jnl
Inf. Sci.
Haibo Jiang, Bao Qing Hu
2022 J jnl
Symmetry
Haibo Jiang, Yuhang Huang, Kebin Shi, Pengfei Xiang, Gang Wei
2022 J jnl
Int. J. Approx. Reason.
Haibo Jiang, Bao Qing Hu
2021 J jnl
Inf. Sci.
Haibo Jiang, Bao Qing Hu
2021 J jnl
Inf. Sci.
Haibo Jiang, Bao Qing Hu
2021 J jnl
Symmetry
Sixiao Kong, Chunbiao Li, Haibo Jiang, Yibo Zhao, Yanling Wang
2021 J jnl
Int. J. Bifurc. Chaos
Liping Zhang, Haibo Jiang, Yang Liu, Zhouchao Wei, Qinsheng Bi
2021 J jnl
Int. J. Mach. Learn. Cybern.
Haibo Jiang, Jianming Zhan, Degang Chen
2021 J jnl
Artif. Intell. Rev.
Haibo Jiang, Jianming Zhan, Degang Chen
2021 J jnl
IEEE Trans. Fuzzy Syst.
Jianming Zhan, Haibo Jiang, Yiyu Yao
2020 J jnl
Int. J. Mach. Learn. Cybern.
Haibo Jiang, Jianming Zhan, Bingzhen Sun, José Carlos R. Alcantud
2020 J jnl
Entropy
Yiming Xiang, Weifeng Pan, Haibo Jiang, Yunfang Zhu, Hao Li
2020 J jnl
Inf. Sci.
Jianming Zhan, Haibo Jiang, Yiyu Yao
2020 J jnl
IEEE Access
Yang Yang, Gao Liu, Fei Shen, Jianhua Sun, Kai Guo, Zhongyi Guo, Qing Zhou, Haibo Jiang, Zhe Wu, Baoqing Zeng, Yubin Gong
2019 J jnl
Int. J. Bifurc. Chaos
Haibo Jiang, Yang Liu, Zhouchao Wei, Liping Zhang
2019 J jnl
Complex.
Weifeng Pan, Haibo Jiang, Ming Hua, Chunlai Chai, Bi Chen, Hao Li
2019 J jnl
IEEE Trans. Fuzzy Syst.
Haibo Jiang, Jianming Zhan, Degang Chen
2019 J jnl
IEEE Access
Yongling Lu, Haibo Jiang, Zhenjiang Pang, Zheng Wang, Jiangtao Xu, Yang Liu, Chao Gao, Chengbo Hu, Haiquan Sun
2019 J jnl
Entropy
Yiming Xiang, Weifeng Pan, Haibo Jiang, Yunfang Zhu, Hao Li
2019 J jnl
Manag. Sci.
Stephanie F. Cheng, Gus De Franco, Haibo Jiang, Pengkai Lin
2017 J jnl
CAAI Trans. Intell. Technol.
Qingyong Li, Min Zheng, Feng Li, Jianzhu Wang, Yangli-ao Geng, Haibo Jiang
2016 J jnl
Int. J. Bifurc. Chaos
Haibo Jiang, Yang Liu, Zhouchao Wei, Liping Zhang
2016 J jnl
Neurocomputing
Caigen Zhou, Xiaoqin Zeng, Jianjiang Yu, Haibo Jiang
2016 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Haibo Jiang, Yang Liu, Liping Zhang, Jianjiang Yu
2016 J jnl
Neurocomputing
Jianjiang Yu, Haibo Jiang, Caigen Zhou, Liping Zhang
2015 J jnl
Neurocomputing
Caigen Zhou, Xiaoqin Zeng, Haibo Jiang, Lixin Han
2014 J jnl
Int. J. Model. Simul. Sci. Comput.
Haibo Jiang, Yaofei Ma, Dongsheng Hong, Zhen Li
2014 J jnl
IEEE Trans. Ind. Electron.
Jin Huang, Bingnan Li, Haibo Jiang, Min Kang
2014 J jnl
J. Frankl. Inst.
Haibo Jiang, Liping Zhang, Shu-Guang Guo
2013 J jnl
CoRR
Haibo Jiang, Yaofei Ma, Dongsheng Hong, Zhen Li
2013 J jnl
Math. Comput. Model.
Haibo Jiang, Yilong Xiao, Yunwei Zhang, Xiaojing Wang, Haijiang Tai
2011 J jnl
Int. J. Syst. Sci.
Haibo Jiang, Jianjiang Yu, Caigen Zhou
2011 conf
CSEE (2)
Yanru Li, Zhongqing Cheng, Haibo Jiang
2010 J jnl
Int. J. Autom. Comput.
Haibo Jiang
2010 J jnl
Int. J. Syst. Sci.
Jianjiang Yu, Kan-Jian Zhang, Shumin Fei, Haibo Jiang
1997 J jnl
IEEE Trans. Control. Syst. Technol.
Haibo Jiang, Hongzhi Cai, John F. Dorsey, Zhihua Qu
1993 C conf
ISCAS
Haibo Jiang, John F. Dorsey, Zhihua Qu
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