Kaiming Yang

45 papers B 1C 3Misc 1Journal 36Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Guibin Zhang, Haiyang Yu, Kaiming Yang, Bingli Wu, Fei Huang, Yongbin Li, Shuicheng Yan
2025 J jnl
Queueing Syst. Theory Appl.
Yongjiang Guo, Yunan Liu, Kaiming Yang
2025 J jnl
IET Image Process.
Rui Wang, Yixian Zhu, Sen Lu, Kaiming Yang, Yu Zhu
2025 Misc conf
ICASSP
Renjun Jia, Kaiming Yang, Dawei Cheng, Li Han, Yuqi Liang
2024 J jnl
J. Supercomput.
Kaiming Yang, Jian Cao
2023 conf
NEMS
Zhongyan Wang, Dong Huang, Junshi Li, Zhitong Zhang, Kaiming Yang, Zhihong Li
2023 J jnl
Informatica (Slovenia)
Zijun Zhao, Jianchao Zhu, Kaiming Yang, Song Wang, Mingxiao Zeng
2023 J jnl
IEEE Syst. J.
Xiaohui Huang, Kaiming Yang, Jiahao Ling
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Xiaohui Huang, Jiahao Ling, Xiaofei Yang, Xiong Zhang, Kaiming Yang
2023 J jnl
IEEE Trans. Ind. Informatics
Min Li, Jiaxi Xiong, Rong Cheng, Yu Zhu, Kaiming Yang, Fanming Sun
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Jian Wu, Qingfeng Kong, Kaiming Yang, Yahui Liu, Dongpu Cao, Zhenyang Li
2022 J jnl
IEEE Trans. Ind. Electron.
Min Li, Taotao Chen, Rong Cheng, Kaiming Yang, Yu Zhu, Caohui Mao
2021 J jnl
IEEE Trans. Intell. Veh.
Zhanhong Yan, Kaiming Yang, Zheng Wang, Bo Yang, Tsutomu Kaizuka, Kimihiko Nakano
2021 conf
ICIRA (2)
Weicai Huang, Kaiming Yang, Yu Zhu
2021 J jnl
Entropy
Wei Wang, Kaiming Yang, Yu Zhu
2020 J jnl
IEEE Trans. Ind. Electron.
Zhouyu Huai, Ming Zhang, Yu Zhu, Anlin Chen, Kaiming Yang, Chuxiong Hu, Jinchun Hu, Xin Li, Leijie Wang
2020 J jnl
Biomed. Signal Process. Control.
Yuyang Qian, Kaiming Yang, Yu Zhu, Wei Wang, Chenhui Wan
2020 J jnl
IEEE Trans. Ind. Informatics
Min Li, Caohui Mao, Yu Zhu, Kaiming Yang, Xin Li
2020 J jnl
J. Syst. Control. Eng.
Weicai Huang, Kaiming Yang, Yu Zhu, Xin Li, Haihua Mu, Min Li
2020 J jnl
CoRR
Zhanhong Yan, Kaiming Yang, Zheng Wang, Bo Yang, Tsutomu Kaizuka, Kimihiko Nakano
2020 conf
ITSC
Xiangkun He, Cong Fei, Yulong Liu, Kaiming Yang, Xuewu Ji
2020 J jnl
Trans. Inst. Meas. Control
Wei Wang, Kaiming Yang, Yu Zhu, Haihua Mu
2019 J jnl
IEEE Trans. Ind. Electron.
Min Li, Yu Zhu, Kaiming Yang, Laihao Yang, Chuxiong Hu, Haihua Mu
2019 J jnl
IEEE Trans. Ind. Electron.
Min Li, Yu Zhu, Kaiming Yang, Laihao Yang, Chuxiong Hu
2019 J jnl
IEEE Trans. Ind. Electron.
Tao Huang, Kaiming Yang, Yu Zhu, Qian Tang, Min Cheng, Yi Wang
2019 J jnl
IEEE Trans. Ind. Electron.
Xuewu Ji, Kaiming Yang, Xiaoxiang Na, Chen Lv, Yahui Liu
2019 C conf
IV
Zhanhong Yan, Kaiming Yang, Zheng Wang, Bo Yang, Tsutomu Kaizuka, Kimihiko Nakano
2018 B conf
Intelligent Vehicles Symposium
Kaiming Yang, Xuewu Ji, Yosuke Nishimura, Kazuya Ando
2018 J jnl
IEEE Trans. Veh. Technol.
Xuewu Ji, Yulong Liu, Xiangkun He, Kaiming Yang, Xiaoxiang Na, Chen Lv, Yahui Liu
2018 J jnl
J. Syst. Control. Eng.
Sen Lu, Kaiming Yang, Yu Zhu, Leijie Wang, Ming Zhang, Jin Yang
2017 C conf
IECON
Kaiming Yang, Yahui Liu, Yulong Liu, Xiangkun He, Xuewu Ji
2017 J jnl
IEEE Trans. Ind. Electron.
Min Li, Yu Zhu, Kaiming Yang, Chuxiong Hu, Haihua Mu
2017 J jnl
IEEE Trans. Ind. Informatics
Ze Wang, Chuxiong Hu, Yu Zhu, Suqin He, Kaiming Yang, Ming Zhang
2017 J jnl
IEEE Trans. Ind. Electron.
Min Li, Kaiming Yang, Yu Zhu, Haihua Mu, Chuxiong Hu
2015 J jnl
IEEE Trans. Ind. Electron.
Yi Jiang, Yu Zhu, Kaiming Yang, Chuxiong Hu, Dongdong Yu
2015 J jnl
IEEE Trans. Ind. Informatics
Min Li, Yu Zhu, Kaiming Yang, Chuxiong Hu
2015 C conf
ACC
Yi Jiang, Yu Zhu, Kaiming Yang, Chuxiong Hu, Haihua Mu
2015 J jnl
Int. J. Robotics Autom.
Tao Huang, Ping Yang, Kaiming Yang, Yu Zhu
2014 J jnl
J. Syst. Control. Eng.
Dongdong Yu, Yu Zhu, Kaiming Yang, Chuxiong Hu, Min Li
2014 J jnl
IEEE Trans. Ind. Electron.
Jin Yang, Yu Zhu, Wensheng Yin, Chuxiong Hu, Kaiming Yang, Haihua Mu
2014 J jnl
J. Syst. Control. Eng.
Yi Jiang, Kaiming Yang, Yu Zhu, Xin Li, Dongdong Yu
2013 J jnl
IEEE Trans. Ind. Electron.
Yu Zhu, Chuxiong Hu, Jinchun Hu, Kaiming Yang
2012 J jnl
J. Syst. Control. Eng.
Sheng-Guo Zhang, Yu Zhu, Haihua Mu, Kaiming Yang, Wensheng Yin
2012 J jnl
J. Syst. Control. Eng.
Dongdong Yu, Kaiming Yang, Yu Zhu, Xin Li, Leqing Cui
2007 conf
IMECS
Chuan Shi, Peiqing Ye, Qiang Lv, Kaiming Yang
redb/extractors/pe_extractors/pe_inconsistency_tests.py
← Index redb/extractors/pe_extractors/pe_inconsistency_tests.py python
import inspect
from redb.ext.spoof_check import (
    Result,
    checksum_test,
    duplicate_test,
    import_count_test,
    linker_test,
)
from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import (
    DotNetInconsistencyTests,
    PEInconsistencyTests,
)
from datetime import datetime, timezone
from typing import Any


class PEInconstistencyTestsExtractor(PEExtractor):
    """Collection of functions to perform features inconsistency tests

    A Test where the result is True means that there is an inconsistency.
    At the moments it runs a series of inconsistency tests on PE metadata from
    - spoof_check
    - pescanner
    - dotnetfile
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
        dotnet=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.dotnet = dotnet if dotnet else None
        self.pe_inconsistency_tests = None
        self.dotnet_inconsistency_tests = None
        self.elastic_index = self.index_prefix + "-pe_inconsistency_tests"

    def tag(self):
        return [Tag.PE_INCONSISTENCY_TESTS.value, Tag.DOTNET_INCONSISTENCY_TESTS.value]

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        tests_performed = False

        # Handle PE rich header tests
        try:
            rich_header = self.pe.parse_rich_header()
            if rich_header:
                self.pe_inconsistency_tests = PEInconsistencyTests(
                    test_rich_header_checksum=checksum_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_duplicate=duplicate_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_linker=linker_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_import_count=import_count_test(self.pe, rich_header) == Result.INVALID,
                )
                tests_performed = True
            else:
                self.pe_inconsistency_tests = PEInconsistencyTests(
                    test_rich_header_checksum=None,
                    test_rich_header_duplicate=None,
                    test_rich_header_linker=None,
                    test_rich_header_import_count=None,
                )
        except Exception as e:
            self.log.error(f"Error processing rich header tests for {self.hash.sha256}: {e}")
            self.pe_inconsistency_tests = None

            # self.export_to_elastic([self.pe_inconsistency_tests])

        # Handle .NET tests
        try:
            if self._check_dotnet():
                if not self.dotnet:
                    self.dotnet, self.error = self._generate_dotnetfile_object()
                if self.error:
                    self.log.error(f"Error generating .NET object {self.hash.sha256}: {self.error}")
                self.dotnet_inconsistency_tests = DotNetInconsistencyTests(
                    test_dotnet_data_dir_hidden=self.dotnet.AntiMetadataAnalysis.is_dotnet_data_directory_hidden,
                    test_dotnet_extra_data=self.dotnet.AntiMetadataAnalysis.has_metadata_table_extra_data,
                    test_dotnet_fake_types=self.dotnet.AntiMetadataAnalysis.has_self_referenced_typeref_entries,
                    test_dotnet_invalid_type_ref=self.dotnet.AntiMetadataAnalysis.has_invalid_typeref_entries,
                    test_dotnet_fake_datastreams=self.dotnet.AntiMetadataAnalysis.has_fake_data_streams,
                    test_dotnet_extra_module_table=self.dotnet.AntiMetadataAnalysis.module_table_has_multiple_rows,
                    test_dotnet_extra_assembly_table=self.dotnet.AntiMetadataAnalysis.assembly_table_has_multiple_rows,
                    test_dotnet_invalid_strings_stream=self.dotnet.AntiMetadataAnalysis.has_invalid_strings_stream_entries,
                    test_dotnet_streams_mixed_case=self.dotnet.AntiMetadataAnalysis.has_mixed_case_stream_names,
                    test_dotnet_method_def_invalid_table=self.dotnet.AntiMetadataAnalysis.has_invalid_methoddef_entries,
                    test_dotnet_max_len_exceeding_strings=self.dotnet.AntiMetadataAnalysis.has_max_len_exceeding_strings,
                )
                tests_performed = True
        except Exception as e:
            self.log.error(f"Error processing .NET tests for {self.hash.sha256}: {e}")
            self.dotnet_inconsistency_tests = None

        # self.export_to_elastic([self.dotnet_inconsistency_tests])

        # If no tests were performed, return False to skip database insertion
        if not tests_performed:
            self.log.info("No inconsistency tests were performed.")
            return False

        return True

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return [self.pe_inconsistency_tests, self.dotnet_inconsistency_tests]
        elif exporter_type == "ClickHouseExporter":
            current_time = datetime.now(timezone.utc)

            # For PE tests: if no rich header (all True), store NULL instead
            has_rich_header = any([
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_checksum'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_duplicate'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_linker'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_import_count')
            ])
            
            pe_tests = [
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_checksum,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_duplicate,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_linker,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_import_count,
            ]
            
            # For .NET tests: if not a .NET file, store NULL instead of False
            dotnet_tests = [
                self.dotnet_inconsistency_tests.test_dotnet_data_dir_hidden if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_data if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_fake_types if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_invalid_type_ref if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_fake_datastreams if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_module_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_assembly_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_invalid_strings_stream if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_streams_mixed_case if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_method_def_invalid_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_max_len_exceeding_strings if self.dotnet_inconsistency_tests else None,
            ]
            
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                *pe_tests,
                *dotnet_tests,
                current_time
            ]]

            column_names = [
                'sha256', 'md5', 'sha1',
                'test_rich_header_checksum', 'test_rich_header_duplicate', 'test_rich_header_linker', 'test_rich_header_import_count',
                'test_dotnet_data_dir_hidden', 'test_dotnet_extra_data',
                'test_dotnet_fake_types', 'test_dotnet_invalid_type_ref',
                'test_dotnet_fake_datastreams', 'test_dotnet_extra_module_table',
                'test_dotnet_extra_assembly_table', 'test_dotnet_invalid_strings_stream',
                'test_dotnet_streams_mixed_case', 'test_dotnet_method_def_invalid_table',
                'test_dotnet_max_len_exceeding_strings', 'analysis_date'
            ]
            
            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'DateTime64(3, \'UTC\')'
            ]

            if not data:
                return None

            return (data, column_names, column_type_names)

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