Wei Sheng

33 papers B 4Misc 2Journal 18Unranked 9
YearRankTypeTitle / Venue / Authors
2026 J jnl
BMC Medical Imaging
Jiajie Chen, Yanrong Chen, Kun Zhang, Kai Xu, Jingping Zhang, Kai Yang, Liyu He, Wei Sheng, Guangming Ma, Chenwang Jin
2025 J jnl
Comput. Oper. Res.
Long Zhang, Zhiwen Wang, Wei Sheng
2025 J jnl
IET Image Process.
Wei Sheng, Mingjian Liu, Xiang Li, Mingbao Zhang
2025 J jnl
Neurocomputing
Nuan Song, Wei Sheng, Yanhao Sun, Tianwei Lin, Zeyu Wang, Zhanxue Xu, Fei Yang, Yatao Zhang, Dong Li
2025 J jnl
BMC Medical Imaging
Tao Lu, Dian-Qi Yao, Ben-Heng Xiao, Wei Sheng, Meining Chen, Yì Xiáng J. Wáng
2024 J jnl
IEEE Trans. Broadcast.
Fei Zhou, Wei Sheng, Zitao Lu, Guoping Qiu
2024 conf
COCOON (1)
Zhiwen Wang, Long Zhang, Jingwen Wang, Wei Sheng, Yuzhong Zhang
2023 J jnl
Signal Process. Image Commun.
Fei Zhou, Wei Sheng, Zitao Lu, Bo Kang, Mianyi Chen, Guoping Qiu
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Yuhao Wang, Yuhong Wang, Ivan Wang Hei Ho, Wei Sheng, Ling Chen
2022 J jnl
Brain Connect.
Yun-Shuang Fan, Haoru Li, Jing Guo, Yajing Pang, Liang Li, Maolin Hu, Meiling Li, Chong Wang, Wei Sheng, Hesheng Liu, Qing Gao, Xiaogang Chen, Xiaofen Zong, Huafu Chen
2022 J jnl
Sensors
Xufang Huang, Wei Sheng, Haonan Chen, Biao Zhang, Na Huang, Shuo Wang
2021 conf
ICIG (2)
Wei Sheng, Liang Li, Shaoqiang Han, Yun-Shuang Fan, Chong Wang, Qin Tang, Yuyan Chen, Qian Cui, Huafu Chen
2020 conf
PLANS
Liang-Boon Wee, Wei Sheng, Eugene Lee, Haoyong Yu
2020 conf
ISICDM
Yuyan Chen, Qian Cui, Qin Tang, Wei Sheng, Yang Yang, Huafu Chen
2020 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Tong Gao, Wei Sheng, Mingliang Zhou, Bin Fang, Liping Zheng
2020 J jnl
Sensors
Tong Gao, Wei Sheng, Mingliang Zhou, Bin Fang, Futing Luo, Jiajun Li
2019 J jnl
Comput. Math. Methods Medicine
Wei Sheng, Aimin Ji, Runxin Fang, Gang He, Changsheng Chen
2018 J jnl
Sensors
Bing Liu, Min Li, Yaoshuai Zhao, Mingfei Pan, Ying Gu, Wei Sheng, Guozhen Fang, Shuo Wang
2018 conf
ICCIP
Wei Sheng, Zhao Cao, Dacheng Qu
2017 J jnl
Sensors
Shuangxi Zhou, Wei Sheng, Fangming Deng, Xiang Wu, Zhihui Fu
2017 J jnl
Sensors
Mingfei Pan, Shijie Li, Junping Wang, Wei Sheng, Shuo Wang
2015 J jnl
Comput. J.
Yongzhao Zhan, Shan Dai, Qirong Mao, Lu Liu, Wei Sheng
2010 conf
ICC
Wei Sheng, Wai-Yip Chan, Steven D. Blostein, Yu Cao
2010 conf
MTV
Wei Sheng, Yanyan Gao, Li Xi, Xuehai Zhou
2010 Misc conf
ICNC
Lei Wang, Wei Sheng, Ruiqing Zhang
2008 B conf
WCNC
Wei Sheng, Steven D. Blostein
2008 B conf
WCNC
Wei Sheng, Steven D. Blostein
2008 conf
ICIRA (2)
Ranran Yi, Bangcheng Han, Wei Sheng
2008 conf
ICIRA (1)
Xiaoning Ma, Jiancheng Fang, Wei Sheng
2007 J jnl
EURASIP J. Wirel. Commun. Netw.
Wei Sheng, Steven D. Blostein
2007 B conf
GLOBECOM
Wei Sheng, Steven D. Blostein
2006 B conf
GLOBECOM
Wei Sheng, Steven D. Blostein
2002 Misc conf
ICASSP
Wei Sheng, Steven D. Blostein
redb/extractors/pe_extractors/pe_imports.py
← Index redb/extractors/pe_extractors/pe_imports.py python
import inspect
from typing import Any, List, Tuple
from datetime import datetime, timezone

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEImport


class PEImportExtractor(PEExtractor):

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

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

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

        imports_symbols = []
        imports_lib = []
        imports_total = 0
        # pe_import = None
        try:
            directory_entry_import = getattr(self.pe, "DIRECTORY_ENTRY_IMPORT", [])
            imports_total = len(directory_entry_import)
            for entry in directory_entry_import:
                symbols = []
                tmp_import = {}
                libname = entry.dll.decode() if entry.dll else ""
                imports_lib.append(libname)
                # replace . with _ to avoid issues with elastic
                # entryname = entryname.replace(".", "_")
                for symbol in entry.imports:
                    if symbol.name:
                        symbols.append(symbol.name.decode())
                # imports_symbols[entryname] = symbols
                tmp_import[libname] = symbols
                imports_symbols.append(tmp_import)
            return PEImport(
                pe_imports_total=imports_total,
                pe_import_libraryName=imports_lib if imports_lib else None,
                pe_import_functions=imports_symbols if imports_symbols else None,
            )
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
        return pe_import

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            return self._extract_imports()
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            imports = self.extract()
            if (
                imports is None
                or imports.pe_imports_total == 0
                or (
                    imports.pe_import_libraryName is None
                    and imports.pe_import_functions is None
                )
            ):
                return None

            # Flatten the data - one row per function import
            data = []
            current_time = datetime.now(timezone.utc)

            for lib_funcs in imports.pe_import_functions:
                for lib, funcs in lib_funcs.items():
                    for func in funcs:
                        data.append(
                            [
                                self.sha256,  # sha256
                                self.md5,  # md5
                                self.sha1,  # sha1
                                lib,  # library_name
                                func,  # function_name
                                current_time,  # analysis_date
                            ]
                        )

            column_names = [
                "sha256",
                "md5",
                "sha1",
                "library_name",
                "function_name",
                "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)",
                "FixedString(32)",
                "FixedString(40)",
                "LowCardinality(Nullable(String))",
                "LowCardinality(Nullable(String))",
                "DateTime64(3, 'UTC')",
            ]

            if not data:
                return None

            return (data, column_names, column_type_names)

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