Kai Wang

33 papers A* 5B 3Journal 19Unranked 6
YearRankTypeTitle / Venue / Authors
2026 A* conf
AAAI
Yifei Cao, Yu Liu, Guolong Wang, Zhu Liu, Kai Wang, Xianjie Zhang, Jizhe Yu, Xun Tu
2026 J jnl
CoRR
Haoxuan Xie, Junfeng Liu, Siqiang Luo, Kai Wang
2025 J jnl
J. Informetrics
Yang Zhang, Yufei Wang, Quan Z. Sheng, Lina Yao, Haihua Chen, Kai Wang, Adnan Mahmood, Wei Emma Zhang, Munazza Zaib, Subhash Sagar, Rongying Zhao
2025 J jnl
CoRR
Yifei Cao, Yu Liu, Guolong Wang, Zhu Liu, Kai Wang, Xianjie Zhang, Jizhe Yu, Xun Tu
2025 J jnl
IEEE Trans. Knowl. Data Eng.
Kai Wang, Dan Lin, Siqiang Luo
2025 J jnl
CoRR
Zulun Zhu, Tiancheng Huang, Kai Wang, Junda Ye, Xinghe Chen, Siqiang Luo
2025 conf
EMNLP (Findings)
Wenrui Bao, Kai Wang, Siqiang Luo, Xiang Li
2024 conf
ACL (Findings)
Kai Wang, Yuwei Xu, Zhiyong Wu, Siqiang Luo
2024 J jnl
CoRR
Kai Wang, Yuwei Xu, Zhiyong Wu, Siqiang Luo
2024 B conf
IJCNN
Jiahao Sun, Yu Liu, Xianjie Zhang, Xiujuan Xu, Li Hong, Kai Wang
2024 J jnl
Proc. VLDB Endow.
Kai Wang, Yuwei Xu, Siqiang Luo
2024 A* conf
KDD
Zulun Zhu, Kai Wang, Haoyu Liu, Jintang Li, Siqiang Luo
2024 J jnl
CoRR
Kai Wang, Siqiang Luo
2023 J jnl
CoRR
Kai Wang, Siqiang Luo, Dan Lin
2023 J jnl
IEEE Trans. Netw. Serv. Manag.
Subhash Sagar, Adnan Mahmood, Kai Wang, Quan Z. Sheng, Jitander Kumar Pabani, Wei Emma Zhang
2023 J jnl
CoRR
Yang Zhang, Yufei Wang, Kai Wang, Quan Z. Sheng, Lina Yao, Adnan Mahmood, Wei Emma Zhang, Rongying Zhao
2022 conf
CAMAD
Lili He, Defeng Du, Hongtao Bai, Kai Wang
2022 B conf
ICIP
Dan Lin, Zhikui Chen, Liang Zhao, Kai Wang
2022 A* conf
WWW
Kai Wang, Yu Liu, Quan Z. Sheng
2022 J jnl
CoRR
Kai Wang, Yu Liu, Quan Z. Sheng
2022 J jnl
CoRR
Subhash Sagar, Adnan Mahmood, Kai Wang, Quan Z. Sheng, Wei Emma Zhang
2021 J jnl
CoRR
Kai Wang, Yu Liu, Quan Z. Sheng
2021 conf
EMNLP (Findings)
Kai Wang, Yu Liu, Dan Lin, Michael Sheng
2021 A* conf
WWW
Kai Wang, Yu Liu, Qian Ma, Quan Z. Sheng
2021 A* conf
IJCAI
Kai Wang, Yu Liu, Quan Z. Sheng
2020 J jnl
Computing
Kai Wang, Yu Liu, Xiujuan Xu, Quan Z. Sheng
2020 J jnl
CoRR
Kai Wang, Yu Liu, Qian Ma, Quan Z. Sheng
2019 J jnl
Sensors
Jin Wang, Yu Gao, Kai Wang, Arun Kumar Sangaiah, Se-Jung Lim
2019 B conf
IJCNN
Jun Ni, Yu Liu, Kai Wang, Zhehuan Zhao, Quan Z. Sheng
2019 J jnl
Future Gener. Comput. Syst.
Ruixin Ma, Kai Wang, Tie Qiu, Arun Kumar Sangaiah, Dan Lin, Hannan Bin Liaqat
2018 J jnl
CoRR
Kai Wang, Yu Liu, Xiujuan Xu, Dan Lin
2018 conf
ICSOC Workshops
Xiujuan Xu, Tingting Jiang, Shimin Shan, Jun Ni, Kai Wang, Zhenlong Xu, Yu Liu
2017 conf
FSDM
Jin Wang, Kai Wang, Yiquan Cao, Geumran Youn, Jeong-Uk Kim
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"