Weidong Gao

71 papers B 9C 3Journal 32Unranked 27
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE J. Biomed. Health Informatics
Yi Liu, Zhengdong Li, Xiaomao Fan, Yingying Shao, Dikun Hu, Rong Huang, Yi Xiao, Boxuan Lv, Liang Zhu, Zhaoyang Liu, Weidong Gao
2025 J jnl
IEEE Trans. Green Commun. Netw.
Rui Luo, Weidong Gao, Xu Zhao, Kaisa Zhang, Xiangyu Chen, Yuan Guan, Siqi Liu, Jingwen Liu
2025 J jnl
Digit. Commun. Networks
Xiangyu Chen, Kaisa Zhang, Gang Chuai, Weidong Gao, Xuewen Liu, Yibo Zhang, Yijian Hou
2025 B conf
PIMRC
Rui Luo, Weidong Gao, Kaisa Zhang, Xu Zhao, Xiangyu Chen
2025 J jnl
Digit. Commun. Networks
Wenxin Ma, Weidong Gao, Jiaqi Liu, Kaisa Zhang, Xu Zhao, Bingfeng Cui, Shujuan Sun, Shurong Li
2025 J jnl
IEEE Commun. Lett.
Yijian Hou, Kaisa Zhang, Gang Chuai, Weidong Gao, Xiangyu Chen, Siqi Liu
2025 J jnl
Int. J. Inf. Technol. Syst. Approach
Junbao Duan, Gengshuo Liu, Shuyan Zeng, Han Liu, Hongzhi Zhang, Zhenghao Li, Cheng Zhong, Donglan Liu, Weidong Gao
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Yijian Hou, Kaisa Zhang, Xuewen Liu, Gang Chuai, Weidong Gao, Xiangyu Chen
2024 J jnl
IEEE J. Biomed. Health Informatics
Xiaomao Fan, Xianhui Chen, Wenjun Ma, Weidong Gao
2024 B conf
PIMRC
Yijian Hou, Kaisa Zhang, Zibin Chen, Xuewen Liu, Gang Chuai, Weidong Gao, Xiangyu Chen
2024 J jnl
IEEE Trans. Mob. Comput.
Xuewen Liu, Gang Chuai, Xin Wang, Zhiwei Xu, Weidong Gao, Kaisa Zhang, Qian Liu, Saidiwaerdi Maimaiti, Peiliang Zuo
2024 conf
ICCT
Ziqi Dai, Gengshuo Liu, Weidong Gao, Xu Zhao, Kaisa Zhang, Yuchen Guo
2024 conf
EMBC
Dikun Hu, Weidong Gao, Kai Keng Ang, Mengjiao Hu, Gang Chuai
2024 J jnl
IEEE Trans. Consumer Electron.
Weidong Gao, Zhenwei Zhao
2024 J jnl
Sensors
Dikun Hu, Weidong Gao, Kai Keng Ang, Mengjiao Hu, Gang Chuai, Rong Huang
2023 J jnl
IEEE Internet Things J.
Shuman Huang, Gang Chuai, Weidong Gao, Kaisa Zhang
2023 J jnl
Entropy
Zhiwei Si, Gang Chuai, Kaisa Zhang, Weidong Gao, Xiangyu Chen, Xuewen Liu
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Kaisa Zhang, Gang Chuai, Weidong Gao, Qian Liu
2023 B conf
SMC
Yingying Shao, Dikun Hu, Yi Liu, Zhengdong Li, Xiaomao Fan, Weidong Gao
2023 J jnl
IEEE Trans. Mob. Comput.
Xuewen Liu, Gang Chuai, Xin Wang, Zhiwei Xu, Weidong Gao
2023 conf
ICCIP
Zhuocheng Shi, Zhuoyue Ning, Wenxin Ma, Weijian Guo, Chen Wang, Zhenwei You, Weidong Gao
2023 J jnl
Inf. Sci.
Zhenwei Zhao, Xiaoming Li, Bing Luan, Weining Jiang, Weidong Gao, Neelakandan Subramani
2023 B conf
WCNC
Xiangyu Chen, Gang Chuai, Kaisa Zhang, Weidong Gao
2023 J jnl
Remote. Sens.
Xiangyu Chen, Kaisa Zhang, Gang Chuai, Weidong Gao, Zhiwei Si, Yijian Hou, Xuewen Liu
2022 B conf
WCNC
Shuman Huang, Gang Chuai, Weidong Gao
2022 J jnl
Entropy
Jinxi Zhang, Gang Chuai, Weidong Gao
2022 B conf
PIMRC
Zhiwei Si, Gang Chuai, Weidong Gao, Kaisa Zhang
2022 J jnl
Sensors
Xiangyu Chen, Gang Chuai, Weidong Gao
2021 J jnl
EURASIP J. Wirel. Commun. Netw.
Zhiwei Si, Gang Chuai, Weidong Gao, Jinxi Zhang, Xiangyu Chen, Kaisa Zhang
2021 J jnl
Biomed. Signal Process. Control.
Yuntang Wang, Tiantian Zheng, Jiangling Song, Weidong Gao
2021 J jnl
Sensors
Saidiwaerdi Maimaiti, Gang Chuai, Weidong Gao, Jinxi Zhang
2021 J jnl
J. Sensors
Weidong Gao, Zhenwei Zhao
2021 J jnl
Comput. Intell. Neurosci.
Zhenwei Zhao, Weining Jiang, Weidong Gao
2021 C conf
ICCC
Saidiwaerdi Maimaiti, Gang Chuai, Weidong Gao
2021 conf
ICCC Workshops
Jingjing Liu, Gang Chuai, Weidong Gao
2021 C conf
ICCC
Shuman Huang, Gang Chuai, Weidong Gao
2020 B conf
PIMRC
Jinxi Zhang, Gang Chuai, Weidong Gao
2020 C conf
ICCC
Qing Wu, Gang Chuai, Weidong Gao
2020 conf
WCNC Workshops
Jinxi Zhang, Gang Chuai, Weidong Gao, Saidiwaerdi Maimaiti, Zhiwei Si
2020 conf
CSAE
Rongcheng Fang, Gang Chuai, Weidong Gao
2020 J jnl
Sensors
Jinxi Zhang, Gang Chuai, Weidong Gao
2020 conf
CSAE
Yina Yang, Weidong Gao, Zhenwei Zhao
2019 conf
CSPS
Xuanbing Zeng, Gang Chuai, Weidong Gao
2019 conf
CSPS
Liting Song, Weidong Gao, Gang Chuai, ZiWei Si
2019 J jnl
EURASIP J. Wirel. Commun. Netw.
Saidiwaerdi Maimaiti, Gang Chuai, Weidong Gao, Kaisa Zhang, Xuewen Liu, Zhiwei Si
2019 J jnl
EURASIP J. Wirel. Commun. Netw.
Kaisa Zhang, Gang Chuai, Weidong Gao, Xuewen Liu, Saidiwaerdi Maimaiti, Zhiwei Si
2019 conf
CSPS
Haojing Zhang, Weidong Gao, Peizhi Liu
2019 conf
GLOBECOM Workshops
Xuewen Liu, Gang Chuai, Weidong Gao, Kaisa Zhang, Xiangyu Chen
2019 conf
ICC Workshops
Qian Liu, Gang Chuai, Jingrong Wang, Jianping Pan, Weidong Gao, Xuewen Liu
2019 conf
GLOBECOM Workshops
Kaisa Zhang, Gang Chuai, Weidong Gao, Jinxi Zhang, Xuewen Liu
2019 conf
GLOBECOM Workshops
Saidiwaerdi Maimaiti, Gang Chuai, Weidong Gao, Kaisa Zhang, Xiangyu Chen
2018 conf
CSPS (1)
Shuai Zhang, Gang Chuai, Weidong Gao
2018 conf
CSPS (1)
Yu Xing, Gang Chuai, Weidong Gao, Qian Liu
2018 J jnl
EURASIP J. Wirel. Commun. Netw.
Qian Liu, Gang Chuai, Weidong Gao, Kaisa Zhang
2018 J jnl
EURASIP J. Wirel. Commun. Netw.
Xuewen Liu, Gang Chuai, Weidong Gao, Kaisa Zhang
2017 conf
CSPS
Han Yan, Gang Chuai, Weidong Gao
2017 conf
CSPS
Chen Shu, Peizhi Liu, Weidong Gao
2017 conf
CSPS
Min Wang, Peizhi Liu, Weidong Gao
2017 conf
CSPS
Kaisa Zhang, Gang Chuai, Weidong Gao, Xuewen Liu, Yifang Ren
2017 conf
CSPS
Xuewen Liu, Gang Chuai, Weidong Gao, Yifang Ren, Kaisa Zhang
2017 conf
CSPS
Mengli Guo, Gang Chuai, Weidong Gao, Yuhan Zhang
2017 J jnl
EURASIP J. Wirel. Commun. Netw.
Weidong Gao, Lin Ma, Gang Chuai
2017 conf
CSPS
Rui Tao, Gang Chuai, Weidong Gao
2017 J jnl
Phys. Commun.
Weidong Gao, Lin Ma, Gang Chuai
2017 conf
INFOCOM Workshops
Qian Liu, Gang Chuai, Weidong Gao, Kaisa Zhang
2017 J jnl
EURASIP J. Wirel. Commun. Netw.
Weidong Gao, Binyong Lin, Gang Chuai
2016 conf
IC-NIDC
Zhi Chen, Gang Chuai, Weidong Gao
2016 conf
IC-NIDC
Weidong Gao, Shengjie He, Gang Chuai
2013 conf
PIMRC Workshops
Weidong Gao, Bingli Jiao, Guiliang Yang, Wei Hu, Liangang Chi, Jingwen Liu
2007 B conf
PIMRC
Wei Wang, Weidong Gao, Xinyu Bai, Tao Peng, Gang Chuai, Wenbo Wang
2007 B conf
PIMRC
Weidong Gao, Guangxiang Yuan, Mugen Peng, Wenbo Wang
redb/extractors/elf_extractors/elf_imports.py
← Index redb/extractors/elf_extractors/elf_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFImport


class ELFImportExtractor(ELFExtractor):

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

    def _get_import_libraries(self, elf) -> List[str]:
        """Extract imported libraries from dynamic section."""
        libraries = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return libraries

            # Extract DT_NEEDED entries (required libraries)
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_NEEDED':
                    libraries.append(tag.needed)

        except Exception as e:
            self.log.error(f"Error extracting import libraries: {e}")

        return libraries

    def _get_imported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract imported functions from dynamic symbol table."""
        imported_functions = set()

        try:
            # Get the dynamic symbol table
            dynsym_section = elf.get_section_by_name('.dynsym')
            if not dynsym_section or not hasattr(dynsym_section, 'iter_symbols'):
                return imported_functions

            # Look for undefined symbols (imports)
            for symbol in dynsym_section.iter_symbols():
                # Check if symbol is undefined (imported)
                if (symbol.entry.get('st_shndx', 0) == 'SHN_UNDEF' and
                    symbol.name and
                    symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK']):
                    imported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting imported functions from symbols: {e}")

        return imported_functions

    def _get_imported_functions_from_relocations(self, elf) -> Set[str]:
        """Extract imported functions from relocation sections."""
        imported_functions = set()

        try:
            # Look through relocation sections
            for section in elf.iter_sections():
                if hasattr(section, 'iter_relocations'):
                    try:
                        for relocation in section.iter_relocations():
                            # Get symbol associated with relocation
                            if hasattr(relocation, 'symbol') and relocation.symbol:
                                symbol_name = relocation.symbol.name
                                if symbol_name:
                                    imported_functions.add(symbol_name)
                    except Exception as e:
                        self.log.debug(f"Could not process relocations in section {section.name}: {e}")

        except Exception as e:
            self.log.error(f"Error extracting imported functions from relocations: {e}")

        return imported_functions

    def _get_plt_functions(self, elf) -> Set[str]:
        """Extract functions from PLT (Procedure Linkage Table) sections."""
        plt_functions = set()

        try:
            # Look for PLT-related sections
            plt_sections = ['.plt', '.plt.got', '.plt.sec']

            for section_name in plt_sections:
                section = elf.get_section_by_name(section_name)
                if section:
                    # PLT functions are typically associated with relocations
                    # We'll get them from the relocation analysis
                    pass

        except Exception as e:
            self.log.error(f"Error extracting PLT functions: {e}")

        return plt_functions

    def tag(self):
        return Tag.ELF_IMPORTS.value if hasattr(Tag, 'ELF_IMPORTS') else "elf_imports"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Extract import libraries
                import_libraries = self._get_import_libraries(elf)

                # Extract imported functions from multiple sources
                imported_functions = set()

                # From dynamic symbols
                symbol_imports = self._get_imported_functions_from_symbols(elf)
                imported_functions.update(symbol_imports)

                # From relocations
                relocation_imports = self._get_imported_functions_from_relocations(elf)
                imported_functions.update(relocation_imports)

                # From PLT
                plt_imports = self._get_plt_functions(elf)
                imported_functions.update(plt_imports)

                # Convert to sorted lists for consistent output
                import_libraries_list = sorted(list(set(import_libraries)))
                import_functions_list = sorted(list(imported_functions))

                # Return ELFImport dataclass
                return ELFImport(
                    elf_imports_total=len(import_functions_list),
                    elf_import_libraries=import_libraries_list,
                    elf_import_functions=import_functions_list,
                )

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_imports = result
            return self.elf_imports

        except Exception as e:
            self.log.error(f"Error extracting ELF imports {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_imports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_imports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_imports.elf_imports_total,
                    self.elf_imports.elf_import_libraries,
                    self.elf_imports.elf_import_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_imports_total',
                    'elf_import_libraries',
                    'elf_import_functions',
                    'analysis_date'
                ]

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

                if not data:
                    return None

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

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