Xiaodan Xing

70 papers A 2B 2Journal 45Unranked 21
YearRankTypeTitle / Venue / Authors
2025 A conf
UAI
Shiyi Wang, Yang Nan, Xiaodan Xing, Yingying Fang, Simon L. F. Walsh, Guang Yang
2025 J jnl
Medical Image Anal.
Caiwen Jiang, Xiaodan Xing, Yang Nan, Yingying Fang, Sheng Zhang, Simon Walsh, Guang Yang, Dinggang Shen
2025 J jnl
Neurocomputing
Xiaodan Xing, Chunling Tang, Siofra Murdoch, Giorgos Papanastasiou, Yunzhe Guo, Xianglu Xiao, Jan Oscar Cross-Zamirski, Carola-Bibiane Schönlieb, Kristina Xiao Liang, Zhangming Niu, Evandro Fei Fang, Yinhai Wang, Guang Yang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yang Nan, Huichi Zhou, Xiaodan Xing, Guang Yang
2025 J jnl
Nat. Mac. Intell.
Xiaodan Xing, Fadong Shi, Jiahao Huang, Yinzhe Wu, Yang Nan, Sheng Zhang, Yingying Fang, Michael Roberts, Carola-Bibiane Schönlieb, Javier Del Ser, Guang Yang
2025 J jnl
CoRR
Yang Nan, Huichi Zhou, Xiaodan Xing, Giorgos Papanastasiou, Lei Zhu, Zhifan Gao, Alejandro F. Frangi, Guang Yang
2025 J jnl
Medical Image Anal.
Yang Nan, Huichi Zhou, Xiaodan Xing, Giorgos Papanastasiou, Lei Zhu, Zhifan Gao, Alejandro F. Frangi, Guang Yang
2025 J jnl
CoRR
Junzhi Ning, Dominic C. Marshall, Yijian Gao, Xiaodan Xing, Yang Nan, Yingying Fang, Sheng Zhang, Matthieu Komorowski, Guang Yang
2025 J jnl
Pattern Recognit. Lett.
Junzhi Ning, Dominic C. Marshall, Yijian Gao, Xiaodan Xing, Yang Nan, Yingying Fang, Sheng Zhang, Matthieu Komorowski, Guang Yang
2025 conf
ISBI
Junzhi Ning, Xiaodan Xing, Sheng Zhang, Xiao Ma, Guang Yang
2024 conf
SASHIMI@MICCAI
Caiwen Jiang, Tianyu Wang, Xiaodan Xing, Mianxin Liu, Guang Yang, Zhongxiang Ding, Dinggang Shen
2024 J jnl
CoRR
Caiwen Jiang, Tianyu Wang, Xiaodan Xing, Mianxin Liu, Guang Yang, Zhongxiang Ding, Dinggang Shen
2024 J jnl
CoRR
Yijian Gao, Dominic C. Marshall, Xiaodan Xing, Junzhi Ning, Giorgos Papanastasiou, Guang Yang, Matthieu Komorowski
2024 conf
ISBI
Xiaodan Xing, Huiyu Zhou, Yingying Fang, Guang Yang
2024 J jnl
CoRR
Xiaodan Xing, Huiyu Zhou, Yingying Fang, Guang Yang
2024 J jnl
CoRR
Yang Nan, Huichi Zhou, Xiaodan Xing, Guang Yang
2024 conf
MLMI@MICCAI (1)
Caiwen Jiang, Xiaodan Xing, Zaixin Ou, Mianxin Liu, Simon Walsh, Guang Yang, Dinggang Shen
2024 J jnl
CoRR
Caiwen Jiang, Xiaodan Xing, Zaixin Ou, Mianxin Liu, Simon Walsh, Guang Yang, Dinggang Shen
2024 J jnl
Comput. Biol. Medicine
Xiaodan Xing, Siofra Murdoch, Chunling Tang, Giorgos Papanastasiou, Jan Oscar Cross-Zamirski, Yunzhe Guo, Xianglu Xiao, Carola-Bibiane Schönlieb, Yinhai Wang, Guang Yang
2024 J jnl
CoRR
Amir Syahmi, Xiangrong Lu, Yinxuan Li, Haoxuan Yao, Hanjun Jiang, Ishita Acharya, Shiyi Wang, Yang Nan, Xiaodan Xing, Guang Yang
2024 conf
ISBI
Yingying Fang, Zihao Jin, Xiaodan Xing, Simon Walsh, Guang Yang
2024 J jnl
CoRR
Yingying Fang, Zihao Jin, Xiaodan Xing, Simon Walsh, Guang Yang
2024 J jnl
CoRR
Xiaodan Xing, Junzhi Ning, Yang Nan, Guang Yang
2024 A conf
WACV
Yingying Fang, Shuang Wu, Sheng Zhang, Chaoyan Huang, Tieyong Zeng, Xiaodan Xing, Simon Walsh, Guang Yang
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yang Nan, Javier Del Ser, Zeyu Tang, Peng Tang, Xiaodan Xing, Yingying Fang, Francisco Herrera, Witold Pedrycz, Simon Walsh, Guang Yang
2024 conf
MICCAI (9)
Sheng Zhang, Yang Nan, Yingying Fang, Shiyi Wang, Xiaodan Xing, Zhifan Gao, Guang Yang
2024 J jnl
CoRR
Sheng Zhang, Yang Nan, Yingying Fang, Shiyi Wang, Xiaodan Xing, Zhifan Gao, Guang Yang
2024 J jnl
Medical Image Anal.
Yang Nan, Xiaodan Xing, Shiyi Wang, Zeyu Tang, Federico N. Felder, Sheng Zhang, Roberta Eufrasia Ledda, Xiaoliu Ding, Ruiqi Yu, Weiping Liu, Feng Shi, Tianyang Sun, Zehong Cao, Minghui Zhang, Yun Gu, Hanxiao Zhang, Jian Gao, Pingyu Wang, Wen Tang, Pengxin Yu, Han Kang, Junqiang Chen, Xing Lu, Boyu Zhang, Michail Mamalakis, Francesco Prinzi, Gianluca Carlini, Lisa Cuneo, Abhirup Banerjee, Zhaohu Xing, Lei Zhu, Zacharia Mesbah, Dhruv Jain, Tsiry Mayet, Hongyu Yuan, Qing Lyu, Abdul Qayyum, Moona Mazher, Athol Wells, Simon L. F. Walsh, Guang Yang
2024 J jnl
CoRR
Lie Ju, Siyuan Yan, Yukun Zhou, Yang Nan, Xiaodan Xing, Peibo Duan, Zongyuan Ge
2024 J jnl
ACM Comput. Surv.
Xiaodan Xing, Huanjun Wu, Lichao Wang, Iain Stenson, May Yong, Javier Del Ser, Simon Walsh, Guang Yang
2024 conf
CARE@MICCAI
Chenyu Zhang, Wenxue Guan, Xiaodan Xing, Guang Yang
2024 J jnl
CoRR
Chenyu Zhang, Wenxue Guan, Xiaodan Xing, Guang Yang
2024 J jnl
CoRR
Shiyi Wang, Yang Nan, Sheng Zhang, Federico Felder, Xiaodan Xing, Yingying Fang, Javier Del Ser, Simon L. F. Walsh, Guang Yang
2024 J jnl
Artif. Intell. Medicine
Shiyi Wang, Yang Nan, Sheng Zhang, Federico Felder, Xiaodan Xing, Yingying Fang, Javier Del Ser, Simon L. F. Walsh, Guang Yang
2024 J jnl
IEEE J. Biomed. Health Informatics
Yinzhe Wu, Sharon Jewell, Xiaodan Xing, Yang Nan, Anthony J. Strong, Guang Yang, Martyn G. Boutelle
2024 J jnl
CoRR
Xiaodan Xing, Fadong Shi, Jiahao Huang, Yinzhe Wu, Yang Nan, Sheng Zhang, Yingying Fang, Mike Roberts, Carola-Bibiane Schönlieb, Javier Del Ser, Guang Yang
2023 J jnl
CoRR
Yingying Fang, Shuang Wu, Sheng Zhang, Chaoyan Huang, Tieyong Zeng, Xiaodan Xing, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Zeyu Tang, Xiaodan Xing, Guang Yang
2023 J jnl
IEEE J. Biomed. Health Informatics
Xiaodan Xing, Javier Del Ser, Yinzhe Wu, Yang Li, Jun Xia, Lei Xu, David N. Firmin, Peter Gatehouse, Guang Yang
2023 J jnl
CoRR
Yang Nan, Xiaodan Xing, Shiyi Wang, Zeyu Tang, Federico N. Felder, Sheng Zhang, Roberta Eufrasia Ledda, Xiaoliu Ding, Ruiqi Yu, Weiping Liu, Feng Shi, Tianyang Sun, Zehong Cao, Minghui Zhang, Yun Gu, Hanxiao Zhang, Jian Gao, Wen Tang, Pengxin Yu, Han Kang, Junqiang Chen, Xing Lu, Boyu Zhang, Michail Mamalakis, Francesco Prinzi, Gianluca Carlini, Lisa Cuneo, Abhirup Banerjee, Zhaohu Xing, Lei Zhu, Zacharia Mesbah, Dhruv Jain, Tsiry Mayet, Hongyu Yuan, Qing Lyu, Athol Wells, Simon Walsh, Guang Yang
2023 conf
SIPAIM
Lichao Wang, Jiahao Huang, Xiaodan Xing, Guang Yang
2023 J jnl
CoRR
Weixun Luo, Xiaodan Xing, Guang Yang
2023 conf
ISBI
Weixun Luo, Xiaodan Xing, Guang Yang
2023 J jnl
IEEE Trans. Medical Imaging
Xiaodan Xing, Giorgos Papanastasiou, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Xiaodan Xing, Giorgos Papanastasiou, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Yingying Fang, Xiaodan Xing, Shiyi Wang, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Xiaodan Xing, Chunling Tang, Yunzhe Guo, Nicholas Kurniawan, Guang Yang
2023 conf
SIPAIM
Lichao Wang, Jiahao Huang, Xiaodan Xing, Yinzhe Wu, Ramyah Rajakulasingam, Andrew D. Scott, Pedro F. Ferreira, Ranil De Silva, Sonia Nielles-Vallespin, Guang Yang
2023 J jnl
CoRR
Lichao Wang, Jiahao Huang, Xiaodan Xing, Yinzhe Wu, Ramyah Rajakulasingam, Andrew D. Scott, Pedro F. Ferreira, Ranil De Silva, Sonia Nielles-Vallespin, Guang Yang
2023 B conf
CBMS
Xiaodan Xing, Yang Nan, Federico Felder, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Xiaodan Xing, Yang Nan, Federico Felder, Simon Walsh, Guang Yang
2023 conf
MICCAI (5)
Xiaodan Xing, Federico Felder, Yang Nan, Giorgos Papanastasiou, Simon Walsh, Guang Yang
2023 J jnl
CoRR
Xiaodan Xing, Federico Felder, Yang Nan, Giorgos Papanastasiou, Simon Walsh, Guang Yang
2022 conf
MICCAI (8)
Xiaodan Xing, Jiahao Huang, Yang Nan, Yinzhe Wu, Chengjia Wang, Zhifan Gao, Simon Walsh, Guang Yang
2022 J jnl
CoRR
Xiaodan Xing, Jiahao Huang, Yang Nan, Yinzhe Wu, Chengjia Wang, Zhifan Gao, Simon Walsh, Guang Yang
2022 J jnl
CoRR
Yang Nan, Javier Del Ser, Zeyu Tang, Peng Tang, Xiaodan Xing, Yingying Fang, Francisco Herrera, Witold Pedrycz, Simon Walsh, Guang Yang
2022 J jnl
CoRR
Xiaodan Xing, Javier Del Ser, Yinzhe Wu, Yang Li, Jun Xia, Lei Xu, David N. Firmin, Peter Gatehouse, Guang Yang
2022 J jnl
CoRR
Xiaodan Xing, Huanjun Wu, Lichao Wang, Iain Stenson, May Yong, Javier Del Ser, Simon Walsh, Guang Yang
2022 conf
MICCAI (6)
Jiahao Huang, Xiaodan Xing, Zhifan Gao, Guang Yang
2022 J jnl
CoRR
Jiahao Huang, Xiaodan Xing, Zhifan Gao, Guang Yang
2022 B conf
Image Processing
Xiaodan Xing, Yinzhe Wu, David N. Firmin, Peter Gatehouse, Guang Yang
2021 conf
COMPAY@MICCAI
Xiaodan Xing, Yixin Ma, Lei Jin, Tianyang Sun, Zhong Xue, Feng Shi, Jinsong Wu, Dinggang Shen
2021 conf
MLMI@MICCAI
Zehong Cao, Feng Shi, Qiang Xu, Gaoping Liu, Tianyang Sun, Xiaodan Xing, Yichu He, Guangming Lu, Zhiqiang Zhang, Dinggang Shen
2021 J jnl
CoRR
Xiaodan Xing, Yinzhe Wu, David N. Firmin, Peter Gatehouse, Guang Yang
2020 conf
UNSURE/GRAIL@MICCAI
Xiaodan Xing, Lili Jin, Qinfeng Li, Lei Chen, Zhong Xue, Ziwen Peng, Feng Shi, Dinggang Shen
2019 conf
Computer-Aided Diagnosis
Xiaodan Xing, Lili Jin, Feng Shi, Ziwen Peng
2019 conf
MICCAI (4)
Xiaodan Xing, Qingfeng Li, Hao Wei, Minqing Zhang, Yiqiang Zhan, Xiang Sean Zhou, Zhong Xue, Feng Shi
2019 conf
MICCAI (4)
Qingfeng Li, Xiaodan Xing, Ying Sun, Bin Xiao, Hao Wei, Quan Huo, Minqing Zhang, Xiang Sean Zhou, Yiqiang Zhan, Zhong Xue, Feng Shi
2019 conf
MICCAI (3)
Hao Wei, Xiangyu Tang, Minqing Zhang, Qingfeng Li, Xiaodan Xing, Xiang Sean Zhou, Zhong Xue, Wenzhen Zhu, Zailiang Chen, Feng Shi
2019 conf
Computer-Aided Diagnosis
Qingfeng Li, Quan Huo, Xiaodan Xing, Yiqiang Zhan, Xiang Sean Zhou, Feng Shi
redb/extractors/js_extractors/js_deobfuscator.py
← Index redb/extractors/js_extractors/js_deobfuscator.py python
"""Subprocess-driven JavaScript deobfuscator with jsbeautifier fallback.

Owns the heavy lifting that was previously embedded inside
`JSDeobfuscationExtractor` (`_run_deobfuscator` + `_try_jsbeautifier`). Exposed
as a single module-level entry point `deobfuscate(source, log)` so it can be
called from `JSContext.deobfuscated` (cached per sample) without dragging
extractor state through the call.

Configuration (env vars):
    JS_DEOBFUSCATOR_PATH    Path or name of the external tool (default: webcrack).
    JS_DEOBFUSCATE_TIMEOUT  Seconds before the external tool is killed
                            (process-group SIGTERM, then SIGKILL). Default: 60.

If the external tool produces non-empty output and exits 0, that wins. Otherwise
the source is run through jsbeautifier (which only normalises formatting, but
already exposes strings hidden by minification). If neither path produces
output, returns (None, None).

`FileNotFoundError` for the external tool is treated as routine — the analysis
server is either provisioned with the tool or it isn't — and demoted to a
debug-level log.
"""

import os
import signal
import subprocess
import tempfile
from typing import Optional, Tuple

DEFAULT_DEOBFUSCATOR = "webcrack"
DEFAULT_TIMEOUT_SECS = 60


def _run_external(
    source: str, deobfuscator_path: str, timeout: int, log
) -> Tuple[Optional[str], int]:
    """Run the configured external deobfuscator over `source` and capture stdout.

    Returns (text, returncode). `text` is `None` and `returncode` is `-1` when
    the binary is missing, the run timed out, or any other unexpected failure
    occurred. Missing-binary is logged at debug; timeouts and unexpected errors
    surface at warning/error.
    """
    try:
        with tempfile.NamedTemporaryFile(
            suffix=".js", mode="w", delete=False, encoding="utf-8"
        ) as tmp:
            tmp.write(source)
            tmp_path = tmp.name

        try:
            process = subprocess.Popen(
                [deobfuscator_path, tmp_path],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                preexec_fn=os.setsid,
            )

            try:
                stdout, _ = process.communicate(timeout=timeout)
                return stdout.decode("utf-8", errors="replace"), process.returncode
            except subprocess.TimeoutExpired:
                # Kill the entire process group so spawned helpers (e.g. node
                # subprocesses webcrack itself launches) get cleaned up too.
                try:
                    os.killpg(os.getpgid(process.pid), signal.SIGTERM)
                    process.wait(timeout=5)
                except Exception:
                    try:
                        os.killpg(os.getpgid(process.pid), signal.SIGKILL)
                    except Exception:
                        pass
                log.warning(f"Deobfuscation timed out after {timeout}s")
                return None, -1
        finally:
            try:
                os.unlink(tmp_path)
            except Exception:
                pass
    except FileNotFoundError:
        log.debug(f"Deobfuscator binary not found at {deobfuscator_path}")
        return None, -1
    except Exception as e:
        log.error(f"Error running deobfuscator: {e}")
        return None, -1


def _try_jsbeautifier(source: str, log) -> Tuple[Optional[str], Optional[str]]:
    """Fallback path: format the source with jsbeautifier. Returns
    `(text, "jsbeautifier")` or `(None, None)` if jsbeautifier isn't installed
    or the call raised."""
    try:
        import jsbeautifier
        opts = jsbeautifier.default_options()
        opts.indent_size = 2
        return jsbeautifier.beautify(source, opts), "jsbeautifier"
    except ImportError:
        log.debug("jsbeautifier not available")
        return None, None
    except Exception as e:
        log.warning(f"jsbeautifier failed: {e}")
        return None, None


def deobfuscate(source: str, log) -> Tuple[Optional[str], Optional[str]]:
    """Run the configured external deobfuscator, falling back to jsbeautifier.

    Returns `(text, normalizer_used)` on success, or `(None, None)` when neither
    path produced non-empty output. `normalizer_used` is the basename of the
    external tool (e.g. `"webcrack"`) or the literal `"jsbeautifier"`.
    """
    if not source:
        return None, None

    deobfuscator_path = os.getenv("JS_DEOBFUSCATOR_PATH", DEFAULT_DEOBFUSCATOR)
    timeout = int(os.getenv("JS_DEOBFUSCATE_TIMEOUT", str(DEFAULT_TIMEOUT_SECS)))

    text, returncode = _run_external(source, deobfuscator_path, timeout, log)
    if text and returncode == 0 and text.strip():
        return text, os.path.basename(deobfuscator_path)

    return _try_jsbeautifier(source, log)