Xi Chen

29 papers B 1C 1Journal 20Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
Environ. Model. Softw.
Lingyue Wang, Ping Hu, Hongwei Zheng, Jie Bai, Ying Liu, Xingwen Cao, Olaf Hellwich, Tie Liu, Anming Bao, Xi Chen
2024 J jnl
Remote. Sens.
Pei Ren, Xiaohui Pan, Tie Liu, Yue Huang, Xi Chen, Xiaofei Wang, Ping Chen, Shamshodbek Akmalov
2024 J jnl
Remote. Sens.
Yubin Song, Xuelian Xun, Hongwei Zheng, Xi Chen, Anming Bao, Ying Liu, Geping Luo, Jiaqiang Lei, Wenqiang Xu, Tie Liu, Olaf Hellwich, Qing Guan
2024 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Xingwen Cao, Xueting Zheng, Hongwei Zheng, Xi Chen, Anming Bao, Ying Liu, Tie Liu, Haoran Zhang, Muhua Zhao, Zichen Zhang
2023 J jnl
Comput. Electron. Agric.
Osman Ilniyaz, Qingyun Du, Huanfeng Shen, Wenwen He, Luwei Feng, Hossein Azadi, Alishir Kurban, Xi Chen
2023 J jnl
Remote. Sens.
Manuchekhr Gulakhmadov, Xi Chen, Aminjon Gulakhmadov, Muhammad Umer Nadeem, Nekruz Gulahmadov, Tie Liu
2023 J jnl
Remote. Sens.
Manuchekhr Gulakhmadov, Xi Chen, Aminjon Gulakhmadov, Muhammad Umer Nadeem, Nekruz Gulahmadov, Tie Liu
2022 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Baili Chen, Hongwei Zheng, Lili Wang, Olaf Hellwich, Chunbo Chen, Liao Yang, Tie Liu, Geping Luo, Anming Bao, Xi Chen
2021 J jnl
Remote. Sens.
Yubin Song, Hongwei Zheng, Xi Chen, Anming Bao, Jiaqiang Lei, Wenqiang Xu, Geping Luo, Qing Guan
2021 J jnl
Remote. Sens.
Jiabin Peng, Tie Liu, Yue Huang, Yunan Ling, Zhengyang Li, Anming Bao, Xi Chen, Alishir Kurban, Philippe De Maeyer
2020 J jnl
Complex.
Peng An, Wen-Feng Wang, Xi Chen, Jing Qian, Yunzhu Pan
2019 J jnl
Remote. Sens.
Aminov Javhar, Xi Chen, Anming Bao, Aminov Jamshed, Mamadjanov Yunus, Aminov Jovid, Tuerhanjiang Latipa
2019 J jnl
Remote. Sens.
Yuankang Xiong, Qingling Zhang, Xi Chen, Anming Bao, Jieyun Zhang, Yujuan Wang
2019 J jnl
Remote. Sens.
Liangzhong Cao, Xi Chen, Chi Zhang, Alishir Kurban, Jin Qian, Tao Pan, Zuozhong Yin, Xiugong Qin, Friday Uchenna Ochege, Philippe De Maeyer
2018 J jnl
Remote. Sens.
Chi Zhang, Xi Chen, Hua Shao, Shuying Chen, Tong Liu, Chunbo Chen, Qian Ding, Haoyang Du
2018 J jnl
Complex.
Wenfeng Wang, Xi Chen, Guiwei Zhang, Jing Qian, Peng Wei, Boqian Wu, Hongwei Zheng
2018 conf
ICCSIP (2)
Wenfeng Wang, Xi Chen, Xiaoliang Zhang, Hongwei Zheng, Ruide Yu, Jianjun Yu
2017 J jnl
Remote. Sens.
Tao Pan, Dengsheng Lu, Chi Zhang, Xi Chen, Hua Shao, Wenhui Kuang, Wenfeng Chi, Zhengjia Liu, Guoming Du, Liangzhong Cao
2016 conf
ICCSIP
Wenfeng Wang, Xi Chen, Huaying Zhou, Hongwei Zheng, Dandan Sun, Jing Qian
2016 C conf
IGARSS
Qingling Zhang, Kai Chen, Qian Jing, Xi Chen
2016 J jnl
Sci. Program.
Wenfeng Wang, Xi Chen, Hongwei Zheng, Zhihan Lv, Zhengjia Liu, Jing Qian, Hu Ping
2015 J jnl
Scientometrics
Lixian Wang, Xi Chen, Anming Bao, Xiaoyun Zhang, Miao Wu, Yun Hao, Jingjing He
2014 J jnl
Eng. Appl. Artif. Intell.
Xueting Zeng, Yongping Li, Wendy Huang, Xi Chen, Anming Bao
2009 conf
NCM
Qin Li, Xi Chen, Frank Veroustraete, Anming Bao, Qinghan Dong, Tie Liu
2009 conf
ESIAT (2)
Zhongguo Ma, Xi Chen, Guli Japper, Cun Chang
2008 B conf
SMC
Tao Wang, Xi Chen, Anming Bao, Wei-Sheng Wang
2008 conf
IGARSS (3)
Cun Chang, Xi Chen, Anming Bao, Geping Luo
2008 conf
IGARSS (2)
Qin Li, Frank Veroustraete, Qinghan Dong, Xi Chen, Anming Bao, Tie Liu, X. W. Feng, Patrick Willems
2008 conf
IGARSS (4)
Yan Dou, Xi Chen, Anming Bao, Geping Luo, Guli Japper, Junli Li
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