Haibei Zhu

31 papers A* 1A 3C 1Misc 2Journal 16Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Circuits Syst. Comput.
Wei Wang, Dan Meng, Haibei Zhu, Yi Zhang, Chao Kong
2025 J jnl
J. Circuits Syst. Comput.
Chao Kong, Dan Meng, Zhihui Fu, Ruiguang Pei, Junjie Wu, Haibei Zhu, Tong Zhan
2025 J jnl
CoRR
Penghang Liu, Haibei Zhu, Eleonora Kreacic, Svitlana Vyetrenko
2025 J jnl
Trans. Mach. Learn. Res.
Penghang Liu, Haibei Zhu, Eleonora Kreacic, Svitlana Vyetrenko
2025 J jnl
Trans. Mach. Learn. Res.
Yousef El-Laham, Zhongchang Sun, Haibei Zhu, Tucker Balch, Svitlana Vyetrenko
2024 J jnl
CoRR
Haibei Zhu, Yousef El-Laham, Elizabeth Fons, Svitlana Vyetrenko
2024 J jnl
CoRR
Zhenglin Li, Haibei Zhu, Houze Liu, Jintong Song, Qishuo Cheng
2024 conf
ADMA (6)
Xianlan Sun, Xiangyun Gao, Subin Huang, Haibei Zhu, Chen Xu, Pingfu Chao, Chao Kong
2024 J jnl
Appl. Artif. Intell.
Anne French, Mary L. Cummings, Haibei Zhu, Miroslav Pajic
2024 C conf
ISPA
Xiangyun Gao, Dan Meng, Xianlan Sun, Wei Wang, Haibei Zhu, Chao Kong
2024 J jnl
CoRR
Vamsi K. Potluru, Daniel Borrajo, Andrea Coletta, Niccolò Dalmasso, Yousef El-Laham, Elizabeth Fons, Mohsen Ghassemi, Sriram Gopalakrishnan, Vikesh Gosai, Eleonora Kreacic, Ganapathy Mani, Saheed Obitayo, Deepak Paramanand, Natraj Raman, Mikhail Solonin, Srijan Sood, Svitlana Vyetrenko, Haibei Zhu, Manuela Veloso, Tucker Balch
2024 J jnl
CoRR
Yousef El-Laham, Zhongchang Sun, Haibei Zhu, Tucker Balch, Svitlana Vyetrenko
2023 J jnl
CoRR
Haibei Zhu, Svitlana Vyetrenko, Tucker Balch
2023 J jnl
CoRR
Haibei Zhu, Svitlana Vyetrenko, Serafin Grundl, David Byrd, Kshama Dwarakanath, Tucker Balch
2023 Misc conf
WSC
Haibei Zhu, Svitlana Vyetrenko, Kshama Dwarakanath, Tucker Balch, Serafin Grundl, David Byrd
2022 J jnl
Int. J. Hum. Comput. Stud.
Mary L. Cummings, Songpo Li, Haibei Zhu
2021
Haibei Zhu
2021 A conf
IROS
Haibei Zhu, Teruhisa Misu, Sujitha Martin, Xingwei Wu, Kumar Akash
2021 J jnl
CoRR
Haibei Zhu, Teruhisa Misu, Sujitha Martin, Xingwei Wu, Kumar Akash
2021 conf
IALP
Haibei Zhu, Baoyan Wang
2020 A conf
IROS
Haibei Zhu, Rong Xu, Mary L. Cummings
2019 conf
SCDS
Chao Kong, Hao Li, Haibei Zhu, Yu Xiu, Jianye Liu, Tao Liu
2019 Misc conf
WISA
Chao Kong, Jianye Liu, Hao Li, Ying Liu, Haibei Zhu, Tao Liu
2019 conf
CSoNet
Chao Kong, Hao Li, Liping Zhang, Haibei Zhu, Tao Liu
2019 conf
ICCE-TW
Chao Kong, Haibei Zhu, Hao Li, Jianye Liu, Zheng Wang, Yinliang Qian
2019 J jnl
IEEE Trans. Hum. Mach. Syst.
Haibei Zhu, Mary L. Cummings, Mahmoud Elfar, Ziyao Wang, Miroslav Pajic
2019 A* conf
ICRA
Mahmoud Elfar, Haibei Zhu, Mary L. Cummings, Miroslav Pajic
2019 J jnl
ACM Trans. Hum. Robot Interact.
Jin Zhou, Haibei Zhu, Minwoo Kim, Mary L. Cummings
2019 A conf
IROS
Haibei Zhu, Mary L. Cummings
2018 conf
HCI (16)
Haibei Zhu, Mahmoud Elfar, Miroslav Pajic, Ziyao Wang, Mary L. Cummings
2017 conf
ICCPS
Mahmoud Elfar, Haibei Zhu, Adithya Raghunathan, Yi Y. Tay, Jeffrey Wubbenhorst, Mary L. Cummings, Miroslav Pajic
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"