Xiangyu Sun

60 papers A* 6A 1B 2C 1Journal 34Unranked 16
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Hwasik Jeong, Seungryong Lee, Gyeongjin Kang, Seungkwon Yang, Xiangyu Sun, Seungtae Nam, Eunbyung Park
2026 J jnl
CoRR
Xiangyu Sun, Shirin Hosseinmardi, Amin Yousefpour, Ramin Bostanabad
2026 J jnl
CoRR
Xiangyu Sun, Shijie Wang, Fengyi Zhang, Lin Liu, Caiyan Jia, Ziying Song, Zi Huang, Yadan Luo
2025 J jnl
IEEE Trans. Reliab.
YueXing Wang, Linwei Cao, Xu He, Kun Liu, Shuairong Deng, Quanfeng Zhou, Xiangyu Sun, Yao Yao
2025 J jnl
CoRR
Xiangyu Sun, Amin Yousefpour, Shirin Hosseinmardi, Ramin Bostanabad
2025 J jnl
CoRR
Xiangyu Sun, Xiaoguang Zou, Yuanquan Wu, Guotai Wang, Shaoting Zhang
2025 conf
ISBI
Xiangyu Sun, Xiaoguang Zou, Yuanquan Wu, Guotai Wang, Shaoting Zhang
2025 A* conf
CVPR
Seungtae Nam, Xiangyu Sun, Gyeongjin Kang, Younggeun Lee, Seungjun Oh, Eunbyung Park
2025 J jnl
IEEE Trans. Reliab.
Linwei Cao, YueXing Wang, Kun Liu, Xiangou Zhang, Shuairong Deng, Quanfeng Zhou, Xiangyu Sun, Wanli Zhang
2025 J jnl
CoRR
Xiangyu Sun, Runnan Chen, Mingming Gong, Dong Xu, Tongliang Liu
2025 J jnl
CoRR
Amin Yousefpour, Shirin Hosseinmardi, Xiangyu Sun, Ramin Bostanabad
2025 J jnl
Trans. Mach. Learn. Res.
Xiangyu Sun, Raquel Aoki, Kevin H. Wilson
2025 J jnl
CoRR
Runnan Chen, Xiangyu Sun, Zhaoqing Wang, Youquan Liu, Jiepeng Wang, Lingdong Kong, Jiankang Deng, Mingming Gong, Liang Pan, Wenping Wang, Tongliang Liu
2025 J jnl
CoRR
Jonathan Tammer Eweis-Labolle, Tyler Johnson, Xiangyu Sun, Ramin Bostanabad
2025 J jnl
CoRR
Tommy Xu, Zhitian Zhang, Xiangyu Sun, Lauren Kelly Zung, Hossein Hajimirsadeghi, Greg Mori
2025 J jnl
CoRR
Xiangyu Sun, Haoyi Jiang, Liu Liu, Seungtae Nam, Gyeongjin Kang, Xinjie Wang, Wei Sui, Zhizhong Su, Wenyu Liu, Xinggang Wang, Eunbyung Park
2025 J jnl
CoRR
Gyeongjin Kang, Seungtae Nam, Xiangyu Sun, Sameh Khamis, Abdelrahman Mohamed, Eunbyung Park
2024 J jnl
Int. J. Intell. Syst.
Xianghua Ma, Kaitao Hu, Xiangyu Sun, Shining Chen
2024 conf
HRI (Companion)
Chenghao Wang, Changdan Cao, Xiangyu Sun, Yunqi Jiang, Tianhao Liu
2024 conf
SIGMOD Conference Companion
Sibei Chen, Hanbing Liu, Waiting Jin, Xiangyu Sun, Xiaoyao Feng, Ju Fan, Xiaoyong Du, Nan Tang
2024 A* conf
CVPR
Joo Chan Lee, Daniel Rho, Xiangyu Sun, Jong Hwan Ko, Eunbyung Park
2024 J jnl
CoRR
Joo Chan Lee, Daniel Rho, Xiangyu Sun, Jong Hwan Ko, Eunbyung Park
2024 J jnl
CoRR
Xiangyu Sun, Raquel Aoki, Kevin H. Wilson
2024 conf
ECCV (58)
Byeonghyeon Lee, Howoong Lee, Xiangyu Sun, Usman Ali, Eunbyung Park
2024 J jnl
CoRR
Byeonghyeon Lee, Howoong Lee, Xiangyu Sun, Usman Ali, Eunbyung Park
2024 J jnl
Remote. Sens.
Chunheng Yan, Bin Zhou, Yan Zhan, Xiangyu Sun, Sha Li, Lei Li, Peilan Guo
2024 J jnl
Remote. Sens.
Yan Zhan, Xiangyu Sun, Guoze Zhao, Lingqiang Zhao, Xiaoping Yang, Haibo Yang, Dawei Jiang, Xiaoyu Lou
2024 A* conf
ACM Multimedia
Xiangyu Sun, Joo Chan Lee, Daniel Rho, Jong Hwan Ko, Usman Ali, Eunbyung Park
2024 J jnl
CoRR
Xiangyu Sun, Joo Chan Lee, Daniel Rho, Jong Hwan Ko, Usman Ali, Eunbyung Park
2024 J jnl
CoRR
Seungtae Nam, Xiangyu Sun, Gyeongjin Kang, Younggeun Lee, Seungjun Oh, Eunbyung Park
2024 J jnl
Briefings Bioinform.
Ziyi Wang, Peng Luo, Mingming Xiao, Boyang Wang, Tianyu Liu, Xiangyu Sun
2024 conf
HRI (Companion)
Ruisi Sun, Changdan Cao, Xiangyu Sun, Qingwei Wang, Yilin Wang
2024 conf
HRI (Companion)
Yilin Wang, Qingwei Wang, Xiangyu Sun, Changdan Cao, Ruisi Sun
2024 J jnl
Remote. Sens.
Xuehua Liu, Yan Zhan, Lingqiang Zhao, Xiangyu Sun, Xiaoyu Lou
2023 conf
ICMRE
Xiangyu Sun, Gangfeng Liu, Xuehe Zhang, Changle Li, Jie Zhao
2023 A* conf
NeurIPS
Xiangyu Sun, Oliver Schulte
2023 J jnl
CoRR
Xiangyu Sun, Oliver Schulte
2023 J jnl
CoRR
Sibei Chen, Hanbing Liu, Waiting Jin, Xiangyu Sun, Xiaoyao Feng, Ju Fan, Xiaoyong Du, Nan Tang
2023 J jnl
CoRR
Joo Chan Lee, Daniel Rho, Xiangyu Sun, Jong Hwan Ko, Eunbyung Park
2023 conf
ICCCS
Feifei Zhang, Manman Wang, Jian Qin, Yang Zhao, Xiangyu Sun, Wanhui Wen
2023 conf
ICCCS
Yang Zhao, Manman Wang, Jian Qin, Feifei Zhang, Xiangyu Sun, Wanhui Wen
2023 A conf
AISTATS
Xiangyu Sun, Oliver Schulte, Guiliang Liu, Pascal Poupart
2023 conf
SNPD-Winter
Jinbao Song, Xiangyu Sun, Yu He, Ran Li
2022 C conf
ICIS
Jinbao Song, Yu He, Xiangyu Sun, Di Huang
2021 conf
MedInfo
Zidu Xu, Chen Zhu, Yaowen Gu, Si Zheng, Xiangyu Sun, Jing Cao, Xinjuan Wu, Jiao Li
2021 A* conf
NeurIPS
Guiliang Liu, Xiangyu Sun, Oliver Schulte, Pascal Poupart
2021 J jnl
CoRR
Xiangyu Sun, Guiliang Liu, Pascal Poupart, Oliver Schulte
2021 B conf
IPEC
Jiayue Ni, Xiangyu Sun
2020 A* conf
KDD
Xiangyu Sun, Jack Davis, Oliver Schulte, Guiliang Liu
2020 J jnl
CoRR
Xiangyu Sun, Jack Davis, Oliver Schulte, Guiliang Liu
2020 conf
MMM (2)
Xiangyu Sun, Qiong Liu, You Yang
2019 J jnl
IEEE Access
Ping Dong, Jianhua Cheng, Liqiang Liu, Xiangyu Sun, Shilong Fan
2019 J jnl
IEEE Access
Jianhua Cheng, Xiangyu Sun, Hongjie Mou
2019 J jnl
IEEE Access
Jian-hua Cheng, Xiangyu Sun, Ping Liu, Hongjie Mou
2018 conf
PLANS
Jianhua Cheng, Xiangyu Sun, Daidai Chen, Chun Cheng, Hongjie Mou, Ping Liu
2018 conf
PLANS
Chun Cheng, Yuxin Zhao, Liang Li, Jianhua Cheng, Xiangyu Sun
2017 B conf
ICIP
Yuan Wang, Fan Zhong, Xiangyu Sun, Xueying Qin
2015 J jnl
Sensors
Jian-hua Cheng, Daidai Chen, Xiangyu Sun, Tongda Wang
2015 conf
CLEF (Working Notes)
Zi Yang, Niloy Gupta, Xiangyu Sun, Di Xu, Chi Zhang, Eric Nyberg
2011 conf
CSISE (2)
Xiangyu Sun, Changguang Wang
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()