Haiqi Liu

30 papers B 1C 3Journal 20Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Haiqi Liu, C. L. Philip Chen, Tong Zhang
2025 J jnl
Inf. Fusion
Ming Wang, Haiqi Liu, Hanning Tang, Mei Zhang, Xiaojing Shen
2025 J jnl
CoRR
Qiaojia Zhu, Xiaojing Shen, Haiqi Liu, Pramod K. Varshney
2024 conf
CICC
Wei He, Puvi Bai, Hongyang Luo, Zhenghao Jin, Han Wu, Junyi Zhang, Xingchen Chao, Haiqi Liu, Yajuan He, Qiang Li
2024 J jnl
CoRR
Xiaowei Yang, Haiqi Liu, Fanqin Meng, Xiaojing Shen
2024 J jnl
Signal Process.
Haiqi Liu, Jiajie Sun, Zhiguo Wang, Xiaojing Shen
2024 B conf
SMC
Haohan Weng, C. L. Philip Chen, Ke Yi, Haiqi Liu, Tong Zhang
2024 J jnl
IEEE Trans. Multim.
Haiqi Liu, C. L. Philip Chen, Xinrong Gong, Tong Zhang
2024 C conf
FUSION
Xiaowei Yang, Haiqi Liu, Hua Zhao, Fanqin Meng, Xiaojing Shen
2024 conf
BIBM
Ziyi Zhu, C. L. Philip Chen, Haiqi Liu, Tong Zhang
2024 J jnl
Comput. Electron. Agric.
Lichao Xu, Haiqi Liu, Liang Jiang, Feilong Zhang, Xiaoli Li, Xuping Feng, Jianxi Huang, Tiecheng Bai
2023 J jnl
Autom.
Xuqi Zhang, Haiqi Liu, Fanqin Meng, Xiaojing Shen
2023 J jnl
CoRR
Haiqi Liu, Jiajie Sun, Xuqi Zhang, Fanqin Meng, Xiaojing Shen, Pramod K. Varshney
2023 J jnl
Sci. China Inf. Sci.
Haiqi Liu, Xiaojing Shen, Zhiguo Wang, Fanqin Meng
2023 J jnl
CoRR
Haiqi Liu, C. L. Philip Chen, Xin-Rong Gong, Tong Zhang
2023 conf
ICIEAI
Haiqi Liu
2022 J jnl
IEEE Trans. Autom. Control.
Zhiguo Wang, Xiaojing Shen, Haiqi Liu, Fanqin Meng, Yunmin Zhu
2022 J jnl
CoRR
Xuqi Zhang, Fanqin Meng, Haiqi Liu, Xiaojing Shen, Yunmin Zhu
2021 J jnl
CoRR
Haiqi Liu, Xiaojing Shen, Zhiguo Wang, Fanqin Meng, Junfeng Wang, Pramod K. Varshney
2020 J jnl
Autom.
Fanqin Meng, Xiaojing Shen, Zhiguo Wang, Haiqi Liu, Junfeng Wang, Yunmin Zhu, Pramod K. Varshney
2020 J jnl
IEEE Access
Xiaowei Li, Xuedong Yuan, Fanqin Meng, Yiwei Liao, Haiqi Liu, Xuqi Zhang, Xiaojing Shen
2019 J jnl
CoRR
Fanqin Meng, Xiaojing Shen, Zhiguo Wang, Haiqi Liu, Junfeng Wang, Yunmin Zhu, Pramod K. Varshney
2019 J jnl
IEEE Access
Fanqin Meng, Haiqi Liu, Xiaojing Shen, Junfeng Wang
2019 conf
ICCAIS
Xiaowei Li, Xuedong Yuan, Fanqin Meng, Yiwei Liao, Haiqi Liu, Xuqi Zhang, Xiaojing Shen
2019 C conf
FUSION
Hanning Tang, Haiqi Liu, Bing Liu, Xiaojing Shen, Pramod K. Varshney
2018 conf
Agro-Geoinformatics
Jiong You, Zhiyuan Pei, Haiqi Liu
2016 J jnl
IET Circuits Devices Syst.
Zhaoming Ding, Haiqi Liu, Qiang Li
2014 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Haiqi Liu, Yanbo Wang, Changxi Xu, Xinqing Chen, Lei Lin, Yue Yu, Wei Wang, Amit Majumder, Gene Chui, Dave Brown, Al Fang
2012 conf
APCCAS
Longfei Wei, Jinyue Ji, Haiqi Liu, Qiang Li
2004 C conf
IGARSS
Bin Xu, Xiaoping Xin, Zhihao Qin, Zhongchao Shi, Haiqi Liu, Zhongxin Chen, Guixia Yang, Wenbin Wu, Youqi Chen, Xiaotian Wu
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"