Xiaobin Xu

67 papers Journal 63Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
Appl. Soft Comput.
Ziqian Kong, Xiaobin Xu, Xiaohang Jin, Chao Ji, Zehui Zhang, Zijun Que
2026 J jnl
IEEE Trans. Image Process.
Xiaofei Zhou, Xuan Wang, Gongyang Li, Deyang Liu, Qingshan She, Xiaobin Xu, Runmin Cong
2026 J jnl
IEEE Trans Autom. Sci. Eng.
Weidong Huang, Xiaobin Xu, Haewoon Nam, Ziqian Kong, Zehui Zhang, Jianfang Meng
2025 J jnl
Int. J. Mach. Learn. Cybern.
Chenhao Yu, Junyi Zhu, Lei-Lei Chang, You Cao, Xiaobin Xu, Zhiyong Hao
2025 J jnl
IEEE Trans. Ind. Informatics
Xiaobin Xu, Xiaochuang Wang, Fulong Wu, Zehui Zhang, Leilei Chang
2025 J jnl
IEEE Signal Process. Lett.
Xuan Wang, Liuxin Bao, Xiaofei Zhou, Lei Xia, Xiaobin Xu
2025 J jnl
Image Vis. Comput.
Yingjie Jin, Xiaofei Zhou, Zhenjie Zhang, Hao Fang, Ran Shi, Xiaobin Xu
2025 J jnl
J. Frankl. Inst.
Jiangtao Deng, Leilei Chang, Anima Pramanik, Xiaobin Xu
2025 J jnl
Evol. Intell.
Xingwu Zeng, Leilei Chang, Qianqian Wang, Xiaobin Xu, Shuo Zhang, Bingbing Hou
2025 J jnl
IEEE Trans. Instrum. Meas.
Zehui Zhang, Hanfeng Liu, Xiaobin Xu, Zhemin Xie, Huining Huo, Leilei Chang, Zhigang Tao
2024 J jnl
IEEE Trans Autom. Sci. Eng.
Xu Weng, Xiaobin Xu, Jing Feng, Xufeng Shen, Jianfang Meng, Felix Steyskal
2024 J jnl
Inf. Sci.
Xiaobin Xu, Haohao Guo, Zehui Zhang, Shan-en Yu, Leilei Chang, Felix Steyskal, Georg Brunauer
2024 J jnl
Reliab. Eng. Syst. Saf.
Xiaobin Xu, Jiahao Zhou, Xu Weng, Zehui Zhang, Hong He, Felix Steyskal, Georg Brunauer
2024 J jnl
Eng. Appl. Artif. Intell.
Yi Li, Haojie Zhou, Jing Feng, Xing Li, Xiaobin Xu, Pingzhi Hou, Xiaomin Hu
2024 J jnl
J. Comput. Sci.
Chenhao Yu, Leilei Chang, Xiaobin Xu, You Cao, Zhenjie Zhang
2024 J jnl
Appl. Soft Comput.
Xiaobin Xu, Haohao Guo, Zhenjie Zhang, Pengfei Shi, Wenguang Huang, Xiaoding Li, Georg Brunauer
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Feng Ma, Zhe Kang, Chen Chen, Jie Sun, Xiaobin Xu, Jin Wang
2024 J jnl
IEEE Trans. Intell. Veh.
Xuelin Zhang, Xiaobin Xu, Jianning Li, Zehui Zhang, Zhenjie Zhang, Georg Brunauer
2024 J jnl
Expert Syst. Appl.
Leilei Chang, Chenhao Yu, Limao Zhang, Xiaobin Xu, Schahram Dustdar
2023 J jnl
Symmetry
Congcong Xu, Jing Feng, Xiaomin Hu, Xiaobin Xu, Yi Li, Pingzhi Hou
2023 J jnl
Appl. Soft Comput.
Leilei Chang, Hao Liu, Limao Zhang, Xiaobin Xu, Jiang Jiang
2023 J jnl
Appl. Intell.
Zhenjie Zhang, Botao Lu, Xiaobin Xu, Xufeng Shen, Jing Feng, Georg Brunauer
2023 J jnl
Reliab. Eng. Syst. Saf.
Leilei Chang, Limao Zhang, Xiaobin Xu
2023 J jnl
Comput. Ind. Eng.
Zhenjie Zhang, Jiahao Hu, Xiaobin Xu, Guodong Wang, Schahram Dustdar, Shenghua Chen
2023 J jnl
Expert Syst. J. Knowl. Eng.
Xiaojian Xu, Yucai Gao, Xiaobin Xu, Libo Dai, Shelan Liu, Shuo Zhang, Xu Weng
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Jian-Bo Yang, Dong-Ling Xu, Xiaobin Xu, Chao Fu
2023 J jnl
Appl. Intell.
Jing Feng, Shouyang Bao, Xiaobin Xu, Zhenjie Zhang, Pingzhi Hou, Felix Steyskal, Schahram Dustdar
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Leilei Chang, Limao Zhang, Xiaobin Xu, Wenjun Chang
2022 J jnl
CAAI Trans. Intell. Technol.
Haiquan Wang, Wenxuan Yue, Shengjun Wen, Xiaobin Xu, Hans-Dietrich Haasis, Menghao Su, Ping Liu, Shanshan Zhang, Panpan Du
2022 J jnl
Appl. Soft Comput.
Xiaojian Xu, Xiaobin Xu, Pengfei Shi, Zifa Ye, Yu Bai, Shuo Zhang, Schahram Dustdar, Guodong Wang
2022 J jnl
Appl. Intell.
Zhenjie Zhang, Xiaobin Xu, Xuelin Zhang, Xiaojian Xu, Zifa Ye, Guodong Wang, Schahram Dustdar
2022 J jnl
Expert Syst. Appl.
Leilei Chang, Limao Zhang, Xiaobin Xu
2021 J jnl
Int. J. Intell. Syst.
Zhenjie Zhang, Xiaobin Xu, Peng Chen, Xudong Wu, Xiaojian Xu, Guodong Wang, Schahram Dustdar
2021 J jnl
CoRR
Haiquan Wang, Hans-Dietrich Haasis, Panpan Du, Xiaobin Xu, Menghao Su, Shengjun Wen, Wenxuan Yue, Shanshan Zhang
2021 J jnl
IEEE Syst. J.
Leilei Chang, Xiaojian Xu, Zhun-ga Liu, Bin Qian, Xiaobin Xu, Yu-Wang Chen
2021 J jnl
Expert Syst. Appl.
Li Guo, Haitao Gan, Siyu Xia, Xiaobin Xu, Tao Zhou
2021 J jnl
Inf. Sci.
Wei Zhu, Leilei Chang, Jianbin Sun, Guohua Wu, Xiaobin Xu, Xiaojian Xu
2021 J jnl
Int. J. Comput. Intell. Syst.
Jing Feng, Xiaobin Xu, Pan Liu, Feng Ma, Chengrong Ma, Zhigang Tao
2020 J jnl
Complex.
Jian-Ning Li, Kai-Yang Gu, Xiao Liu, Xiaobin Xu
2020 J jnl
Complex.
Ai-Min Wang, Jian-Ning Li, Xiaobin Xu
2020 J jnl
Knowl. Based Syst.
Jing Zhang, Jing Tian, Yang Cao, Yuxiang Yang, Xiaobin Xu
2020 J jnl
IEEE Trans. Circuits Syst.
Jian-Ning Li, Xiao Liu, Xin-Feng Ru, Xiaobin Xu
2020 J jnl
Inf. Sci.
Xiaobin Xu, Deqing Zhang, Yu Bai, Leilei Chang, Jianning Li
2020 J jnl
Inf. Sci.
Leilei Chang, Wei Dong, Jianbo Yang, Xinya Sun, Xiaobin Xu, Xiaojian Xu, Limao Zhang
2020 J jnl
Entropy
Xuelin Zhang, Xiaojian Xu, Xiaobin Xu, Diju Gao, Haibo Gao, Guodong Wang, Radu Grosu
2020 J jnl
Knowl. Based Syst.
Xiaojian Xu, Zhuangzhuang Zhao, Xiaobin Xu, Jianbo Yang, Leilei Chang, Xinping Yan, Guodong Wang
2019 J jnl
IEEE Trans. Instrum. Meas.
Xiaobin Xu, Zhenghui Li, Guo Li, Jianning Li, Chenglin Wen
2019 J jnl
Inf. Sci.
Lei-Lei Chang, Jiang Jiang, Jianbin Sun, Yu-Wang Chen, Zhi-Jie Zhou, Xiaobin Xu, Xu Tan
2019 J jnl
CoRR
Jing Zhang, Jing Tian, Yang Cao, Yuxiang Yang, Xiaobin Xu, Chenglin Wen
2019 J jnl
Int. J. Approx. Reason.
Leilei Chang, Yu-Wang Chen, Zhiyong Hao, Zhi-Jie Zhou, Xiaobin Xu, Xu Tan
2019 J jnl
IEEE Access
Jie Lei, Wei Dong, Leilei Chang, Xiaobin Xu, Xiaojian Xu
2019 J jnl
IEEE Access
Diju Gao, Xuyang Wang, Tianzhen Wang, Yide Wang, Xiaobin Xu
2019 J jnl
IEEE Access
Xiaobin Xu, Danfeng Fang, Guo Li, Peng Chen, Xiaojian Xu, Jian-Ning Li
2019 J jnl
IEEE Access
Benyun Shi, Chunpeng Zhou, Hongjun Qiu, Xiaobin Xu, Jiming Liu
2018 J jnl
Knowl. Based Syst.
Leilei Chang, Zhi-Jie Zhou, Yu-Wang Chen, Xiaobin Xu, Jianbin Sun, Tian-Jun Liao, Xu Tan
2018 conf
ICCAIS
Jing Zhang, Deqing Zhang, Mingyue Yang, Xiaobin Xu, Weifeng Liu, Chenglin Wen
2018 J jnl
IEEE Access
Jian-Ning Li, Yu-Fei Xu, Wen-Dong Bao, Xiaobin Xu
2018 J jnl
Inf. Technol. Control.
Xiaobin Xu, Xue Ma, Cheng-Lin Wen, Darong Huang, Jian-Ning Li
2017 J jnl
Knowl. Based Syst.
Xiaobin Xu, Jin Zheng, Jian-Bo Yang, Dong-Ling Xu, Yu-Wang Chen
2017 J jnl
Sensors
Xiaobin Xu, Zhenghui Li, Guo Li, Zhe Zhou
2016 J jnl
Int. J. Comput. Intell. Syst.
Xiaobin Xu, Zhen Zhang, Dong-Ling Xu, Yu-Wang Chen
2015 J jnl
Knowl. Based Syst.
Yue Chen, Yu-Wang Chen, Xiaobin Xu, Changchun Pan, Jianbo Yang, Genke Yang
2014 conf
MFI
Kefei Zhou, Chenglin Wen, Xiaobin Xu
2013 J jnl
Sci. China Inf. Sci.
Xiaobin Xu, Donghua Zhou, Yindong Ji, Chenglin Wen
2012 J jnl
Sci. China Inf. Sci.
Chenglin Wen, Xiaobin Xu, Haina Jiang, Zhe Zhou
2010 conf
ICCA
Yucheng Wang, Xiaobin Xu, Yanwen Lu, Chenglin Wen
2008 conf
ISNN (2)
Chenglin Wen, Yingchang Wang, Xiaobin Xu
redb/extractors/decompiler/apk/jadx_wrapper.py
← Index redb/extractors/decompiler/apk/jadx_wrapper.py python
"""JADX decompiler subprocess wrapper.

Manages JADX subprocess execution for Java decompilation,
following the CAPA extractor subprocess pattern.
"""

import os
import re
import signal
import subprocess
from typing import Dict, Optional


class JADXDecompiler:
    """Subprocess wrapper for JADX Java decompilation."""

    def __init__(self, jadx_path: str = None, timeout: int = None, log=None):
        self.jadx_path = jadx_path or os.getenv("JADX_PATH", "jadx")
        self.timeout = timeout or int(os.getenv("JADX_TIMEOUT", "300"))
        self.log = log

    def decompile(self, apk_path: str, output_dir: str) -> bool:
        """Run JADX decompilation on an APK file.

        Returns True on success, False on failure.
        """
        cmd = [
            self.jadx_path,
            "--no-res",
            "--no-imports",
            "--threads-count", "2",
            "--output-dir", 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"JADX returned non-zero exit code {process.returncode}: "
                            f"{stderr[:500] if stderr else 'no stderr'}"
                        )
                    # JADX may still produce partial output on non-zero exit
                    return os.path.isdir(os.path.join(output_dir, "sources"))
                return True

            except subprocess.TimeoutExpired:
                if self.log:
                    self.log.error(
                        f"JADX timed out after {self.timeout}s"
                    )
                # Kill the process group
                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"JADX not found at '{self.jadx_path}'. "
                    "Install JADX or set JADX_PATH env var."
                )
            return False
        except Exception as e:
            if self.log:
                self.log.error(f"JADX execution error: {e}")
            return False

    def parse_java_methods(self, output_dir: str) -> Dict[str, str]:
        """Parse JADX output into per-method Java source.

        Returns dict keyed by 'package.ClassName.methodName(ParamType1, ParamType2)'.
        """
        sources_dir = os.path.join(output_dir, "sources")
        if not os.path.isdir(sources_dir):
            return {}

        methods = {}
        for root, _dirs, files in os.walk(sources_dir):
            for fname in files:
                if not fname.endswith(".java"):
                    continue
                fpath = os.path.join(root, fname)
                try:
                    with open(fpath, "r", encoding="utf-8", errors="replace") as f:
                        content = f.read()

                    # Derive the fully qualified class name from file path
                    rel_path = os.path.relpath(fpath, sources_dir)
                    class_fqn = rel_path.replace(os.sep, ".").replace("/", ".")
                    if class_fqn.endswith(".java"):
                        class_fqn = class_fqn[:-5]

                    file_methods = self._extract_methods_from_java(
                        content, class_fqn
                    )
                    methods.update(file_methods)

                except Exception:
                    continue

        return methods

    def _extract_methods_from_java(
        self, source: str, class_fqn: str
    ) -> Dict[str, str]:
        """Extract individual methods from a Java source file.

        Uses brace-depth tracking to find method boundaries.
        """
        methods = {}
        lines = source.split("\n")
        i = 0

        while i < len(lines):
            line = lines[i]
            match = self._is_method_declaration(line)
            if match:
                method_name, param_types = match
                # Track brace depth to find method end
                start_line = i
                brace_depth = 0
                found_open = False

                for j in range(i, len(lines)):
                    for ch in lines[j]:
                        if ch == "{":
                            brace_depth += 1
                            found_open = True
                        elif ch == "}":
                            brace_depth -= 1

                    if found_open and brace_depth == 0:
                        method_body = "\n".join(lines[start_line : j + 1])
                        key = f"{class_fqn}.{method_name}({param_types})"
                        methods[key] = method_body
                        i = j + 1
                        break
                else:
                    i += 1
            else:
                i += 1

        return methods

    # Regex for method declarations (not constructors, not class/interface decl)
    _METHOD_DECL_RE = re.compile(
        r"^\s*(?:(?:public|private|protected|static|final|synchronized|"
        r"native|abstract|strictfp)\s+)*"
        r"(?:[\w<>\[\]?.]+\s+)"  # return type
        r"(\w+)"  # method name
        r"\s*\(([^)]*)\)"  # parameters
        r"(?:\s*throws\s+[\w.,\s]+)?"
        r"\s*\{"
    )

    def _is_method_declaration(self, line: str) -> Optional[tuple]:
        """Check if a line is a method declaration.

        Returns (method_name, param_types_str) or None.
        """
        m = self._METHOD_DECL_RE.match(line)
        if not m:
            return None

        method_name = m.group(1)
        params_raw = m.group(2).strip()

        # Skip class-level blocks
        if method_name in ("if", "for", "while", "switch", "try", "catch"):
            return None

        # Extract just the type names from parameters
        if not params_raw:
            return (method_name, "")

        param_types = []
        for param in params_raw.split(","):
            param = param.strip()
            if not param:
                continue
            parts = param.split()
            # Last non-annotation token before the variable name is the type
            # Simple heuristic: type is second-to-last, name is last
            if len(parts) >= 2:
                param_types.append(parts[-2])
            elif len(parts) == 1:
                param_types.append(parts[0])

        return (method_name, ", ".join(param_types))