Xiaodi Wang

65 papers A* 2A 2Misc 1Journal 45Unranked 15
YearRankTypeTitle / Venue / Authors
2026 A conf
EuroSys
Dong-Yang Yu, Yuchao Zhang, Xiaodi Wang, Jun Wang, Wenfei Wu, Haipeng Yao, Wendong Wang, Ke Xu
2026 J jnl
Robotics Auton. Syst.
Dianfan Zhang, Lei Zhou, Yu Rong, Xiaodi Wang, Yingfeng Wang, Junbo Wang
2025 J jnl
ISPRS Int. J. Geo Inf.
Yan Zhou, Xiaodi Wang, Jipeng Jia
2025 J jnl
J. King Saud Univ. Comput. Inf. Sci.
Xiaodi Wang, Xuan Cai, Zhiwei Guo, Shuxin Liu
2025 J jnl
IEEE Trans. Ind. Informatics
Xiaodi Wang, Yunwei Dong, Meng Li, Yining Liu
2025 J jnl
PLoS Comput. Biol.
Tong Liu, Zihuan Liu, Wenke Sun, Adeethyia Shankar, Yongzhong Zhao, Xiaodi Wang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Baochang Zhang, Runqi Wang, Xiaodi Wang, Jungong Han, Rongrong Ji
2025 J jnl
Stat. Anal. Data Min.
Yujie Gai, Yidan Wang, Tong He, Xiaodi Wang
2025 A* conf
CVPR
Ruojun Xu, Weijie Xi, Xiaodi Wang, Yongbo Mao, Zach Cheng
2025 J jnl
CoRR
Ruojun Xu, Weijie Xi, Xiaodi Wang, Yongbo Mao, Zach Cheng
2024 J jnl
Expert Syst. Appl.
Yan Hao, Xiaodi Wang, Jianzhou Wang, Wendong Yang
2024 J jnl
CoRR
Alejandro Mayorga, Alexander Yuan, Andrew Yuan, Tyler Wooldridge, Xiaodi Wang
2024 J jnl
Int. J. Comput. Vis.
Xiaokang Chen, Mingyu Ding, Xiaodi Wang, Ying Xin, Shentong Mo, Yunhao Wang, Shumin Han, Ping Luo, Gang Zeng, Jingdong Wang
2024 J jnl
Comput. Secur.
Xiaodi Wang, Zhonglin Liu, Jiayong Liu
2024 J jnl
Neurocomputing
Huixin Sun, Yunhao Wang, Xiaodi Wang, Bin Zhang, Ying Xin, Baochang Zhang, Xianbin Cao, Errui Ding, Shumin Han
2024 J jnl
Stat. Anal. Data Min.
Yujie Gai, Kang Meng, Xiaodi Wang
2024 conf
PEAI
Xiaodi Wang, Hong Zhou, Jinhua Yu, Qiang Xu, Tianyu Yang, Yunjie Zhou, Jialiang Yuan
2024 J jnl
ISPRS Int. J. Geo Inf.
Yan Zhou, Yunhan Zhang, Fangfang Zhang, Yeting Zhang, Xiaodi Wang
2024 J jnl
Knowl. Based Syst.
Kang Meng, Yujie Gai, Xiaodi Wang, Mei Yao, Xiaofei Sun
2024 conf
ECCV (76)
Yutang Feng, Sicheng Gao, Yuxiang Bao, Xiaodi Wang, Shumin Han, Juan Zhang, Baochang Zhang, Angela Yao
2023 conf
ICCBB
Stephanie Chang, Adeethyia Shankar, Yongzhong Zhao, Tong Liu, Xiaodi Wang
2023 J jnl
Knowl. Based Syst.
Xiaodi Wang, Jiayong Liu
2023 J jnl
Comput. J.
Xiaodi Wang, Xiaoge Pan, Tian Yang, Jianhua Xie, Mingwei Tang
2023 J jnl
Trans. Mach. Learn. Res.
Xinyu Zhang, Jiahui Chen, Junkun Yuan, Qiang Chen, Jian Wang, Xiaodi Wang, Shumin Han, Xiaokang Chen, Jimin Pi, Kun Yao, Junyu Han, Errui Ding, Jingdong Wang
2023 conf
ICCBB
Daniel Li, Luke Peng, Yongzhong Zhao, Tong Liu, Xiaodi Wang
2023 J jnl
CoRR
Jiahe Liu, Xiaodi Wang
2023 J jnl
Inf. Sci.
Xiaodi Wang, Zhonglin Liu, Jiamiao Liu, Jiayong Liu
2023 J jnl
Comput. Stat. Data Anal.
Xiaodi Wang, Hengzhen Huang
2023 J jnl
CoRR
Ziming Wang, Shumin Han, Xiaodi Wang, Jing Hao, Xianbin Cao, Baochang Zhang
2023 Misc conf
IbPRIA
Andrew Li, Jiahe Liu, Olivia Liu, Xiaodi Wang
2023 J jnl
CoRR
Jing Hao, Song Chen, Xiaodi Wang, Shumin Han
2023 conf
ICECET
Ronald Feng, Frederick Li, Xiaodi Wang
2022 J jnl
CoRR
Xinyu Zhang, Jiahui Chen, Junkun Yuan, Qiang Chen, Jian Wang, Xiaodi Wang, Shumin Han, Xiaokang Chen, Jimin Pi, Kun Yao, Junyu Han, Errui Ding, Jingdong Wang
2022 J jnl
CoRR
Xiaokang Chen, Mingyu Ding, Xiaodi Wang, Ying Xin, Shentong Mo, Yunhao Wang, Shumin Han, Ping Luo, Gang Zeng, Jingdong Wang
2022 J jnl
CoRR
Qiang Chen, Jian Wang, Chuchu Han, Shan Zhang, Zexian Li, Xiaokang Chen, Jiahui Chen, Xiaodi Wang, Shuming Han, Gang Zhang, Haocheng Feng, Kun Yao, Junyu Han, Errui Ding, Jingdong Wang
2022 J jnl
CoRR
Yunhao Wang, Huixin Sun, Xiaodi Wang, Bin Zhang, Chao Li, Ying Xin, Baochang Zhang, Errui Ding, Shumin Han
2022 J jnl
Frontiers Comput. Sci.
Zhixin Zeng, Xiaodi Wang, Yi-Ning Liu, Liang Chang
2022 J jnl
J. High Speed Networks
Xiaodi Wang
2022 conf
BIOSIGNALS
Adeethyia Shankar, Stephanie Chang, Xiaodi Wang, Yongzhong Zhao
2022 conf
ICCBB
Adeethyia Shankar, Stephanie Chang, Yongzhong Zhao, Xiaodi Wang, Tong Liu
2021 conf
ICBCT
Avery W. Huang, Adharsh Kandula, Xiaodi Wang
2021 J jnl
Knowl. Based Syst.
Xiaodi Wang, Mingwei Tang, Tian Yang, Zhen Wang
2021 conf
PACIS
Xiaodi Wang, Qingfei Min, Zhiyong Liu
2021 J jnl
IEEE Trans. Ind. Informatics
Xiaodi Wang, Yining Liu, Kim-Kwang Raymond Choo
2021 J jnl
CoRR
Teli Ma, Mingyuan Mao, Honghui Zheng, Peng Gao, Xiaodi Wang, Shumin Han, Errui Ding, Baochang Zhang, David S. Doermann
2021 J jnl
CoRR
Mingyuan Mao, Baochang Zhang, David S. Doermann, Jie Guo, Shumin Han, Yuan Feng, Xiaodi Wang, Errui Ding
2021 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Xiaodi Wang, Kaishan Song, Zhidan Wen, Ge Liu, Yingxin Shang, Chong Fang, Lili Lyu, Qiang Wang
2021 J jnl
Ecol. Informatics
Ming Chen, Chuan Tang, Xiaodi Wang, Jiang Xiong, Qingyun Shi, Xianzheng Zhang, Mingwei Li, Yuting Luo, Yu Tie, Qiang Feng
2020 conf
ECCV Workshops (5)
Yuan Feng, Xiaodi Wang, Ying Xin, Bin Zhang, Jingwei Liu, Mingyuan Mao, Sheng Xu, Baochang Zhang, Shumin Han
2020 conf
ECCV Workshops (5)
Xuehui Yu, Zhenjun Han, Yuqi Gong, Nan Jan, Jian Zhao, Qixiang Ye, Jie Chen, Yuan Feng, Bin Zhang, Xiaodi Wang, Ying Xin, Jingwei Liu, Mingyuan Mao, Sheng Xu, Baochang Zhang, Shumin Han, Cheng Gao, Wei Tang, Lizuo Jin, Mingbo Hong, Yuchao Yang, Shuiwang Li, Huan Luo, Qijun Zhao, Humphrey Shi
2020 J jnl
CoRR
Xuehui Yu, Zhenjun Han, Yuqi Gong, Nan Jan, Jian Zhao, Qixiang Ye, Jie Chen, Yuan Feng, Bin Zhang, Xiaodi Wang, Ying Xin, Jingwei Liu, Mingyuan Mao, Sheng Xu, Baochang Zhang, Shumin Han, Cheng Gao, Wei Tang, Lizuo Jin, Mingbo Hong, Yuchao Yang, Shuiwang Li, Huan Luo, Qijun Zhao, Humphrey Shi
2020 conf
PACIS
Lintong Jiang, Xiaodi Wang, Qi Chen, Qingfei Min
2019 J jnl
CoRR
Ruoyu Guo, Cheng Cui, Yuning Du, Xianglong Meng, Xiaodi Wang, Jingwei Liu, Jianfeng Zhu, Yuan Feng, Shumin Han
2019 J jnl
CoRR
Hieu Quang Nguyen, Abdul Hasib Rahimyar, Xiaodi Wang
2019 A conf
WACV
Xiaodi Wang, Ce Li, Yipeng Mou, Baochang Zhang, Jungong Han, Jianzhuang Liu
2018 conf
IScIDE
Hongren Wang, Pengbo Wang, Xiaodi Wang, Tianchen Peng, Baochang Zhang
2018 J jnl
Pattern Recognit. Lett.
Chunlei Liu, Wenrui Ding, Xiaodi Wang, Baochang Zhang
2018 A* conf
CVPR
Xiaodi Wang, Baochang Zhang, Ce Li, Rongrong Ji, Jungong Han, Xianbin Cao, Jianzhuang Liu
2018 J jnl
CoRR
Shangzhen Luan, Yan Li, Xiaodi Wang, Baochang Zhang
2018 J jnl
Multim. Tools Appl.
Shangzhen Luan, Yan Li, Xiaodi Wang, Baochang Zhang
2018 conf
SSIC
Chenbin Wu, Yunjie Zhou, Xiaojuan Jiang, Yinbai Xu, Xiaodi Wang, He He
2017 J jnl
Commun. Stat. Simul. Comput.
Xiaodi Wang, Yingshan Zhang, Yincai Tang
2013 conf
PACIS
Ming Yang, Xiaodi Wang, Melody Y. Kiang
2011 J jnl
Commun. Stat. Simul. Comput.
Xiaodi Wang, Yincai Tang, Yingshan Zhang
2010 J jnl
Commun. Stat. Simul. Comput.
Xiaodi Wang, Yincai Tang, Xueping Chen, Yingshan Zhang
redb/extractors/macho_extractors/macho_dylibs.py
← Index redb/extractors/macho_extractors/macho_dylibs.py python
import hashlib
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachODylib


class MachODylibExtractor(MachOExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        macho=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            macho,
        )
        self.elastic_index = self.index_prefix + "-macho_dylibs"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.MACHO_DYLIB.value

    def _extract_dylibs(self):
        """Extract dynamic library information from all architectures in the MachO binary."""
        self.log.debug(inspect.currentframe().f_code.co_name)
        dylibs = []

        if not self.macho:
            return dylibs

        try:
            # Get architectures using new API (already parsed in base class)
            architectures = self.macho.get_architectures()
            if not architectures:
                return dylibs

            # Process each architecture
            for arch_name in architectures:
                # Get dylib commands using new API with architecture parameter
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Extract dylib commands for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        # Create dylib dataclass with architecture info
                        macho_dylib = MachODylib(
                            dylib_name=dylib_name,
                            dylib_timestamp=dylib_cmd.get('dylib_timestamp', 0),
                            dylib_current_version=dylib_cmd.get('dylib_current_version', 0),
                            dylib_compat_version=dylib_cmd.get('dylib_compat_version', 0),
                        )
                        # Add architecture info to the dylib
                        macho_dylib.architecture = arch_name
                        dylibs.append(macho_dylib)

                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name} in {self.hash.sha256}: {e}'
                        )
                        continue

            return dylibs

        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return dylibs

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            dylibs = self._extract_dylibs()
            return dylibs
        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get dylib commands for this architecture
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Process each dylib for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        data.append([
                            arch_sha256,                          # sha256 (architecture-specific)
                            dylib_name,                           # dylib_name
                            dylib_cmd.get('dylib_timestamp', 0), # dylib_timestamp
                            dylib_cmd.get('dylib_current_version', 0), # dylib_current_version
                            dylib_cmd.get('dylib_compat_version', 0),  # dylib_compat_version
                            current_time,                         # analysis_date
                        ])
                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name}: {e}'
                        )
                        continue

            column_names = [
                'sha256',
                'dylib_name', 'dylib_timestamp', 'dylib_current_version',
                'dylib_compat_version', 'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'String', 'UInt32', 'UInt32',
                'UInt32', 'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

    def get_clickhouse_table(self) -> str:
        return "redb_macho_dylibs"