Kai Mei

60 papers A* 6B 2Journal 45Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Yunbei Zhang, Kai Mei, Ming Liu, Janet Wang, Dimitris N. Metaxas, Xiao Wang, Jihun Hamm, Yingqiang Ge
2026 J jnl
CoRR
Zeru Shi, Kai Mei, Yihao Quan, Dimitris N. Metaxas, Ruixiang Tang
2025 J jnl
CoRR
Wujiang Xu, Zujie Liang, Kai Mei, Hang Gao, Juntao Tan, Yongfeng Zhang
2025 A* conf
ICLR
Hanrong Zhang, Jingyuan Huang, Kai Mei, Yifei Yao, Zhenting Wang, Chenlu Zhan, Hongwei Wang, Yongfeng Zhang
2025 conf
NAACL (System Demonstrations)
Balaji Rama, Kai Mei, Yongfeng Zhang
2025 J jnl
CoRR
Balaji Rama, Kai Mei, Yongfeng Zhang
2025 J jnl
CoRR
Kai Mei, Wujiang Xu, Shuhang Lin, Yongfeng Zhang
2025 J jnl
CoRR
Wujiang Xu, Wentian Zhao, Zhenting Wang, Yu-Jhe Li, Can Jin, Mingyu Jin, Kai Mei, Kun Wang, Dimitris N. Metaxas
2025 B conf
COLING
Mingyu Jin, Qinkai Yu, Jingyuan Huang, Qingcheng Zeng, Zhenting Wang, Wenyue Hua, Haiyan Zhao, Kai Mei, Yanda Meng, Kaize Ding, Fan Yang, Mengnan Du, Yongfeng Zhang
2025 A* conf
ICLR
Zeru Shi, Kai Mei, Mingyu Jin, Yongye Su, Chaoji Zuo, Wenyue Hua, Wujiang Xu, Yujie Ren, Zirui Liu, Mengnan Du, Dong Deng, Yongfeng Zhang
2025 J jnl
CoRR
Wujiang Xu, Yunxiao Shi, Zujie Liang, Xuying Ning, Kai Mei, Kun Wang, Xi Zhu, Min Xu, Yongfeng Zhang
2025 J jnl
CoRR
Kai Mei, Xi Zhu, Hang Gao, Shuhang Lin, Yongfeng Zhang
2025 A* conf
ICML
Mingyu Jin, Kai Mei, Wujiang Xu, Mingjie Sun, Ruixiang Tang, Mengnan Du, Zirui Liu, Yongfeng Zhang
2025 J jnl
CoRR
Mingyu Jin, Kai Mei, Wujiang Xu, Mingjie Sun, Ruixiang Tang, Mengnan Du, Zirui Liu, Yongfeng Zhang
2025 J jnl
SIGKDD Explor.
Kai Mei, Wujiang Xu, Minghao Guo, Shuhang Lin, Yongfeng Zhang
2025 J jnl
CoRR
Kai Mei, Jiang Guo, Shuaichen Chang, Mingwen Dong, Dongkyu Lee, Xing Niu, Jiarong Jiang
2025 J jnl
CoRR
Minghao Guo, Xi Zhu, Jingyuan Huang, Kai Mei, Yongfeng Zhang
2025 J jnl
CoRR
Wenyue Hua, Dujian Ding, Yile Gu, Yujie Ren, Kai Mei, Minghua Ma, William Yang Wang
2025 conf
ACL (Findings)
Wujiang Xu, Yunxiao Shi, Zujie Liang, Xuying Ning, Kai Mei, Kun Wang, Xi Zhu, Min Xu, Yongfeng Zhang
2024 J jnl
CoRR
Shuyuan Xu, Zelong Li, Kai Mei, Yongfeng Zhang
2024 J jnl
CoRR
Kai Mei, Zelong Li, Shuyuan Xu, Ruosong Ye, Yingqiang Ge, Yongfeng Zhang
2024 J jnl
CoRR
Hanrong Zhang, Jingyuan Huang, Kai Mei, Yifei Yao, Zhenting Wang, Chenlu Zhan, Hongwei Wang, Yongfeng Zhang
2024 J jnl
CoRR
Zelong Li, Shuyuan Xu, Kai Mei, Wenyue Hua, Balaji Rama, Om Raheja, Hao Wang, He Zhu, Yongfeng Zhang
2024 J jnl
Knowl. Based Syst.
Chengde Zhang, Kai Mei, Xia Xiao
2024 J jnl
CoRR
Mingyu Jin, Qinkai Yu, Jingyuan Huang, Qingcheng Zeng, Zhenting Wang, Wenyue Hua, Haiyan Zhao, Kai Mei, Yanda Meng, Kaize Ding, Fan Yang, Mengnan Du, Yongfeng Zhang
2024 J jnl
CoRR
Zeru Shi, Kai Mei, Mingyu Jin, Yongye Su, Chaoji Zuo, Wenyue Hua, Wujiang Xu, Yujie Ren, Zirui Liu, Mengnan Du, Dong Deng, Yongfeng Zhang
2024 conf
EMNLP (Findings)
Yunsheng Ma, Xu Cao, Wenqian Ye, Can Cui, Kai Mei, Ziran Wang
2024 J jnl
CoRR
Mingyu Jin, Beichen Wang, Zhaoqian Xue, Suiyuan Zhu, Wenyue Hua, Hua Tang, Kai Mei, Mengnan Du, Yongfeng Zhang
2023 J jnl
CoRR
Kai Mei, Yongfeng Zhang
2023 J jnl
IEEE Trans. Software Eng.
Shengcheng Yu, Chunrong Fang, Quanjun Zhang, Zhihao Cao, Yexiao Yun, Zhenfei Cao, Kai Mei, Zhenyu Chen
2023 conf
ACL (1)
Kai Mei, Zheng Li, Zhenting Wang, Yang Zhang, Shiqing Ma
2023 J jnl
CoRR
Kai Mei, Zheng Li, Zhenting Wang, Yang Zhang, Shiqing Ma
2023 conf
ICIAI
Huangsheng Xu, Kai Mei, Yanjia Yu, Zhen Liu, Qingyong Zhang
2023 A* conf
NeurIPS
Yingqiang Ge, Wenyue Hua, Kai Mei, Jianchao Ji, Juntao Tan, Shuyuan Xu, Zelong Li, Yongfeng Zhang
2023 J jnl
CoRR
Yingqiang Ge, Wenyue Hua, Kai Mei, Jianchao Ji, Juntao Tan, Shuyuan Xu, Zelong Li, Yongfeng Zhang
2023 conf
Image-Guided Procedures
Tess Reynolds, Yiqun Ma, Tianyu Wang, Kai Mei, Peter B. Noël, Grace J. Gang, J. Webster Stayman
2023 A* conf
ICLR
Zhenting Wang, Kai Mei, Juan Zhai, Shiqing Ma
2023 J jnl
CoRR
Zhenting Wang, Kai Mei, Juan Zhai, Shiqing Ma
2023 J jnl
CoRR
Wenyue Hua, Lizhou Fan, Lingyao Li, Kai Mei, Jianchao Ji, Yingqiang Ge, Libby Hemphill, Yongfeng Zhang
2022 J jnl
IEEE Trans. Cogn. Commun. Netw.
Jun Liu, Kai Mei, Xiaochen Zhang, Desmond C. McLernon, Dongtang Ma, Jibo Wei, Syed Ali Raza Zaidi
2022 J jnl
Entropy
Ruixuan He, Xiaoran Liu, Kai Mei, Guangwei Gong, Jun Xiong, Jibo Wei
2022 B conf
WCNC
Jun Liu, Haitao Zhao, Dongtang Ma, Kai Mei, Jibo Wei
2022 A* conf
NeurIPS
Zhenting Wang, Kai Mei, Hailun Ding, Juan Zhai, Shiqing Ma
2022 J jnl
CoRR
Zhenting Wang, Kai Mei, Hailun Ding, Juan Zhai, Shiqing Ma
2022 J jnl
CoRR
Jun Liu, Haitao Zhao, Dongtang Ma, Kai Mei, Jibo Wei
2022 J jnl
IEEE Trans. Commun.
Jun Liu, Haitao Zhao, Dongtang Ma, Kai Mei, Jibo Wei
2021 J jnl
IEEE Trans. Commun.
Kai Mei, Jun Liu, Xiaoying Zhang, Kuo Cao, Nandana Rajatheva, Jibo Wei
2021 J jnl
CoRR
Shengcheng Yu, Chunrong Fang, Kai Mei, Yexiao Yun, Zhenfei Cao, Zhihao Cao, Zhenyu Chen
2021 J jnl
IET Commun.
Kai Mei, Jun Liu, Xiaoran Liu, Jun Xiong, Xiaoying Zhang, Jibo Wei
2021 J jnl
CoRR
Jun Liu, Kai Mei, Dongtang Ma, Jibo Wei
2021 J jnl
IEEE Trans. Commun.
Kai Mei, Jun Liu, Xiaochen Zhang, Nandana Rajatheva, Jibo Wei
2020 J jnl
CoRR
Samad Ali, Walid Saad, Nandana Rajatheva, Kapseok Chang, Daniel Steinbach, Benjamin Sliwa, Christian Wietfeld, Kai Mei, Hamid Shiri, Hans-Jürgen Zepernick, Thi My Chinh Chu, Ijaz Ahmad, Jyrki Huusko, Jaakko Suutala, Shubhangi Bhadauria, Vimal Bhatia, Rangeet Mitra, SaiDhiraj Amuru, Robert Abbas, Baohua Shao, Michele Capobianco, Guanghui Yu, Maëlick Claes, Teemu Karvonen, Mingzhe Chen, Maksym A. Girnyk, Hassan Malik
2020 J jnl
CoRR
Jun Liu, Kai Mei, Xiaochen Zhang, Desmond C. McLernon, Dongtang Ma, Jibo Wei, Syed Ali Raza Zaidi
2019 J jnl
CoRR
Kai Mei, Jun Liu, Xiaochen Zhang, Jibo Wei
2019 J jnl
IEEE Access
Xiaoying Zhang, Kai Mei, Xiaoran Liu, Lei Zhang, Jibo Wei
2019 J jnl
IEEE Commun. Lett.
Jun Liu, Kai Mei, Xiaochen Zhang, Dongtang Ma, Jibo Wei
2018 J jnl
CoRR
Jun Liu, Kai Mei, Dongtang Ma, Jibo Wei
2018 J jnl
CoRR
Jun Liu, Kai Mei, Xiaochen Zhang, Xiaoying Zhang, Dongtang Ma, Jibo Wei
2018 J jnl
Sensors
Tengteng Wen, Dehan Luo, Jiafeng He, Kai Mei
2016 conf
Biomedical Applications in Molecular, Structural, and Functional Imaging
Felix K. Kopp, Thomas Baum, Radin A. Nasirudin, Kai Mei, Eduardo Grande Garcia, Rainer Burgkart, Ernst J. Rummeny, Jan S. Bauer, Peter B. Noël
tests/scripts/test_macho_extractors_local.py
← Index tests/scripts/test_macho_extractors_local.py python
#!/usr/bin/env python3
"""
Local MachO extractors test - test actual extractors without server connections
"""

import sys
import os
import logging
import hashlib
from datetime import datetime, timezone
from typing import Dict, Any, Optional
from unittest.mock import Mock, patch

# Add the redb directory to the path so we can import the extractors
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'redb'))

# Mock settings to avoid database connections
with patch.dict('os.environ', {'REDB_ENV': 'test'}):
    # Import the actual extractors
    from redb.extractors.macho_extractors.macho_features import MachOFeaturesExtractor
    from redb.extractors.macho_extractors.macho_segments import MachOSegmentExtractor
    from redb.extractors.macho_extractors.macho_imports import MachOImportExtractor
    from redb.extractors.macho_extractors.macho_exports import MachOExportExtractor
    from redb.extractors.macho_extractors.macho_dylibs import MachODylibExtractor
    from redb.extractors.macho_extractors.macho_signature import MachOSignatureExtractor
    from redb.extractors.macho_extractors.macho_universal import MachOUniversalExtractor

def setup_logging():
    """Setup basic logging configuration."""
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )
    return logging.getLogger(__name__)

class MockLogger:
    """Mock logger for testing without RedB dependencies."""
    def __init__(self):
        self.logger = logging.getLogger(__name__)
    
    def debug(self, msg):
        self.logger.debug(msg)
    
    def info(self, msg):
        self.logger.info(msg)
    
    def warning(self, msg):
        self.logger.warning(msg)
    
    def error(self, msg):
        self.logger.error(msg)

class MockExporter:
    """Mock exporter that does nothing."""
    def export(self, data):
        pass

def create_mock_extractor(extractor_class, filepath):
    """Create an extractor instance with mocked dependencies."""
    log = MockLogger()
    
    # Mock the exporters to avoid database connections
    mock_exporters = [MockExporter()]
    
    # Create the extractor with mocked dependencies
    extractor = extractor_class(
        filepath=filepath,
        log=log,
        exporters=mock_exporters,
        index_prefix="test",
        elastic_index="test_macho",
        known_benign=False,
        known_malicious=False
    )
    
    return extractor

def test_extractor(extractor_class, filepath, extractor_name):
    """Test a specific extractor."""
    log = setup_logging()
    log.info(f"Testing {extractor_name}...")
    
    try:
        # Create the extractor with mocked dependencies
        extractor = create_mock_extractor(extractor_class, filepath)
        
        if not extractor.macho:
            log.error(f"{extractor_name}: No MachO object created")
            return False

        # Test the actual extract method
        result = extractor.extract()
        
        if result:
            log.info(f"{extractor_name}: Successfully extracted data")
            print(f"\n{'='*60}")
            print(f"=== {extractor_name.upper()} RESULTS ===")
            print(f"{'='*60}")
            
            if isinstance(result, list):
                print(f"📊 Extracted {len(result)} items")
                print()
                for i, item in enumerate(result):
                    print(f"📦 Item {i+1}:")
                    print(f"   {'─'*40}")
                    # Handle dataclass objects in lists
                    if hasattr(item, '__dataclass_fields__'):
                        from dataclasses import asdict
                        item_dict = asdict(item)
                        for key, value in item_dict.items():
                            if isinstance(value, (list, dict)):
                                if isinstance(value, list):
                                    print(f"   🔹 {key}: List with {len(value)} items")
                                    print(f"      {value}")
                                elif isinstance(value, dict):
                                    print(f"   🔹 {key}: Dict with {len(value)} keys")
                                    for k, v in value.items():
                                        print(f"      {k}: {v}")
                            else:
                                print(f"   🔹 {key}: {value}")
                    else:
                        # Regular dict
                        for key, value in item.items():
                            if isinstance(value, (list, dict)):
                                if isinstance(value, list):
                                    print(f"   🔹 {key}: List with {len(value)} items")
                                    print(f"      {value}")
                                elif isinstance(value, dict):
                                    print(f"   🔹 {key}: Dict with {len(value)} keys")
                                    for k, v in value.items():
                                        print(f"      {k}: {v}")
                            else:
                                print(f"   🔹 {key}: {value}")
                    print()
            else:
                print("📊 Extracted data:")
                print()
                # Handle dataclass objects
                if hasattr(result, '__dataclass_fields__'):
                    # It's a dataclass, use dataclasses.asdict
                    from dataclasses import asdict
                    result_dict = asdict(result)
                    for key, value in result_dict.items():
                        if isinstance(value, (list, dict)):
                            if isinstance(value, list):
                                print(f"🔹 {key}: List with {len(value)} items")
                                print(f"   {value}")
                            elif isinstance(value, dict):
                                print(f"🔹 {key}: Dict with {len(value)} keys")
                                for k, v in value.items():
                                    print(f"   {k}: {v}")
                        else:
                            print(f"🔹 {key}: {value}")
                        print()
                else:
                    # It's a regular dict
                    for key, value in result.items():
                        if isinstance(value, (list, dict)):
                            if isinstance(value, list):
                                print(f"🔹 {key}: List with {len(value)} items")
                                print(f"   {value}")
                            elif isinstance(value, dict):
                                print(f"🔹 {key}: Dict with {len(value)} keys")
                                for k, v in value.items():
                                    print(f"   {k}: {v}")
                        else:
                            print(f"🔹 {key}: {value}")
                        print()
        else:
            log.warning(f"{extractor_name}: No data extracted")
            print(f"\n❌ {extractor_name}: No data extracted")
        
        return True
        
    except Exception as e:
        log.error(f"{extractor_name}: Error during extraction: {e}")
        import traceback
        traceback.print_exc()
        return False

def main():
    """Main function."""
    if len(sys.argv) < 2:
        print("Usage: python test_macho_extractors_local.py <macho_file> [extractor_name]")
        print("\nAvailable extractors:")
        print("  features    - Basic MachO header and metadata")
        print("  segments    - Segment information and analysis")
        print("  imports     - Imported functions and libraries")
        print("  exports     - Exported symbols")
        print("  dylibs      - Dynamic library dependencies")
        print("  signature   - Code signing information")
        print("  universal   - FAT/Universal binary information")
        print("  all         - Test all extractors")
        sys.exit(1)
    
    filepath = sys.argv[1]
    extractor_name = sys.argv[2] if len(sys.argv) > 2 else "all"
    
    if not os.path.exists(filepath):
        print(f"File not found: {filepath}")
        sys.exit(1)
    
    # Define extractors
    extractors = {
        'features': (MachOFeaturesExtractor, "MachO Features"),
        'segments': (MachOSegmentExtractor, "MachO Segments"),
        'imports': (MachOImportExtractor, "MachO Imports"),
        'exports': (MachOExportExtractor, "MachO Exports"),
        'dylibs': (MachODylibExtractor, "MachO Dylibs"),
        'signature': (MachOSignatureExtractor, "MachO Code Signature"),
        'universal': (MachOUniversalExtractor, "MachO Universal/FAT"),
    }
    
    if extractor_name == "all":
        print(f"Testing all extractors with file: {filepath}")
        success_count = 0
        for name, (extractor_class, display_name) in extractors.items():
            if test_extractor(extractor_class, filepath, display_name):
                success_count += 1
            print("-" * 50)
        
        print(f"\n✅ {success_count}/{len(extractors)} extractors completed successfully")
        
    elif extractor_name in extractors:
        extractor_class, display_name = extractors[extractor_name]
        success = test_extractor(extractor_class, filepath, display_name)
        
        if success:
            print(f"\n✅ {display_name} testing completed successfully")
        else:
            print(f"\n❌ {display_name} testing failed")
            sys.exit(1)
    else:
        print(f"Unknown extractor: {extractor_name}")
        print("Available extractors:", ", ".join(extractors.keys()) + ", all")
        sys.exit(1)

if __name__ == "__main__":
    main()