Xiao Chen

51 papers B 4C 3Journal 32Unranked 11
YearRankTypeTitle / Venue / Authors
2026 J jnl
Expert Syst. Appl.
Haotian Yang, Jun Dai, Xiao Chen, Lu Liu
2026 J jnl
CoRR
Yifei Xie, Btissam Er-Rahmadi, Xiao Chen, Tiejun Ma, Jane Hillston
2026 J jnl
IEEE Trans. Serv. Comput.
Jucai Yang, Haiqin Wu, Boris Düdder, Xiao Chen, Xiaolei Dong, Zhenfu Cao
2026 J jnl
Comput. Networks
Shaodong Huang, Junbin Liang, Tian Wang, Lu Liu, Xiao Chen
2026 J jnl
CoRR
Yifei Xie, Btissam Er-Rahmadi, Xiao Chen, Tiejun Ma, Jane Hillston
2026 J jnl
IEEE Trans. Mob. Comput.
Lijun Sun, Qingmei Yang, Peng Li, Xiao Chen, Shangguang Wang
2025 J jnl
IEEE Access
Xu Luo, Shuming Xiong, Xiangchen Jia, Yu Zeng, Xiao Chen
2025 J jnl
IEEE CAA J. Autom. Sinica
Min Wang, Yike Wang, Xiao Chen, Lu Liu, MengChu Zhou, Xiaobing Sun, Shanchen Pang
2024 J jnl
IEEE Trans. Mob. Comput.
Xiao Chen, Guoliang Xue, Ruozhou Yu, Haiqin Wu, Dawei Wang
2024 B conf
SECON
Jucai Yang, Haiqin Wu, Xiao Chen, Zhenfu Cao, Xiaolei Dong
2024 J jnl
Distributed Ledger Technol. Res. Pract.
Haotian Yang, Xiaoyu Zhang, Zihan Wu, Liangmin Wang, Xiao Chen, Lu Liu
2024 J jnl
IEEE Trans. Consumer Electron.
Xingzhen Bai, Liqun Yu, Guhui Li, Lu Liu, Xiao Chen
2024 J jnl
Inf. Softw. Technol.
Jinfu Chen, Zian Zhao, Saihua Cai, Xiao Chen, Bilal Ahmad, Luo Song, Kun Wang
2024 J jnl
Inf. Fusion
Lijun Sun, Mingzhi Liu, Guanfeng Liu, Xiao Chen, Xu Yu
2024 B conf
TrustCom
Yaru Lv, Lijun Sun, Xiao Chen
2024 J jnl
Peer Peer Netw. Appl.
Zixuan Han, Lei-lei Shi, Lu Liu, Liang Jiang, Wan Tang, Xiao Chen, Jing-Yu Yang, Ayodeji Ayorinde, Nick Antonopoulos
2024 J jnl
IEEE Trans. Dependable Secur. Comput.
Xiao Chen, Tiejun Ma, Btissam Er-Rahmadi, Jane Hillston, Guanxu Yuan
2024 J jnl
IEEE Trans. Ind. Informatics
Xiao Chen
2024 B conf
TrustCom
Qingmei Yang, Lijun Sun, Xiao Chen, Lingling Wang
2023 conf
ISPA/BDCloud/SocialCom/SustainCom
Kun Meng, Lijun Sun, Xiao Chen, Haiqin Wu, Shuaiyong Li
2023 conf
INFOCOM Workshops
Xiao Chen
2023 J jnl
IEEE Trans. Computers
Xiao Chen, Btissam Er-Rahmadi, Tiejun Ma, Jane Hillston
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Xiao Chen, Jie Ding, Zhenyu Lu
2022 J jnl
J. Sens. Actuator Networks
Wendong Chen, Haiqin Wu, Xiao Chen, Jinfu Chen
2022 conf
Euro-Par Workshops
Yifei Xie, Btissam Er-Rahmadi, Xiao Chen, Tiejun Ma, Jane Hillston
2022 conf
Internetware
Jinfu Chen, Zian Zhao, Xiao Chen, Saihua Cai, Shang Yin, Luo Song
2022 J jnl
Comput. Ind. Eng.
Jie Ding, Hui Sun, Xiao Chen, Huixing Fang
2021 J jnl
IEEE Trans. Netw. Sci. Eng.
Xiao Chen, Jie Ding, Zhenyu Lu, Tianming Zhan
2021 J jnl
Comput. Ind. Eng.
Jie Ding, Xiao Chen, Hui Sun, Wei Yan, Huixing Fang
2021 J jnl
J. Netw. Comput. Appl.
Lijun Sun, Qian Yang, Xiao Chen, Zhenxiang Chen
2020 B conf
TrustCom
Dawei Wang, Xiao Chen, Haiqin Wu, Ruozhou Yu, Yishi Zhao
2020 J jnl
IEEE Access
Jie Ding, Lingjuan Che, Xiao Chen, Tao Zhang, Yongdan Huang, Zengli Huang, Zhongming Zeng, Hulin Zhang, Sunan Ding, Hui Yang
2020 J jnl
CoRR
Lijun Sun, Qian Yang, Xiao Chen, Zhenxiang Chen
2019 J jnl
IEEE Access
Xiao Chen, Nigel Thomas, Tianming Zhan, Jie Ding
2019 J jnl
IEEE Access
Jie Ding, Xinshan Zhu, Xiao Chen
2018 J jnl
IEEE Access
Jie Ding, Rui Wang, Xiao Chen, Yingen Ge
2017 C conf
APSEC
Biling Lin, Xiao Chen, Liangmin Wang
2017 J jnl
IEEE Access
Xiao Chen, Liangmin Wang
2017 J jnl
IEEE Access
Jie Ding, Xiao Chen, Rui Wang
2017 conf
INFOCOM Workshops
Xiao Chen, Liangmin Wang
2017 J jnl
IEEE Commun. Lett.
Xiao Chen, Liangmin Wang
2016 conf
COMPSAC Workshops
Xiao Chen, Liangmin Wang
2016 conf
FSDM
Jie Ding, Rui Wang, Xiao Chen
2016 C conf
APCC
Jie Ding, Leijie Sha, Xiao Chen
2016 J jnl
IEEE Access
Xiao Chen, Liangmin Wang, Jie Ding, Nigel Thomas
2016 C conf
APCC
Jie Ding, Rui Wang, Xiao Chen
2015 conf
SmartCity
Jie Ding, Leijie Sha, Xiao Chen, Xinshan Zhu
2015 conf
CCBD
Leijie Sha, Jie Ding, Xiao Chen, Xiaobin Zhang, Yun Zhang, Yishi Zhao
2013
Xiao Chen
2012 conf
EPEW/UKPEW
Nigel Thomas, Michael D. Harrison, Yishi Zhao, Xiao Chen
2011 conf
CyberC
Xiao Chen, Nigel Thomas, Michael D. Harrison
tests/unit/test_macho_dataclasses.py
← Index tests/unit/test_macho_dataclasses.py python
"""
Unit tests for Mach-O dataclasses.
"""
import pytest
from typing import List, Dict, Optional

pytestmark = [pytest.mark.unit, pytest.mark.dataclass, pytest.mark.macho]


class TestMachODataclass:
    """Tests for MachO dataclass."""

    def test_macho_required_fields(self):
        """Test MachO dataclass with required fields."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_NOUNDEFS", "MH_DYLDLINK", "MH_TWOLEVEL", "MH_PIE"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=True
        )

        assert macho.magic == 0xFEEDFACF
        assert macho.cputype == 0x01000007
        assert macho.is_64bit is True
        assert macho.is_signed is True
        assert macho.magic_str == "MH_MAGIC_64"
        assert macho.filetype_str == "MH_EXECUTE"

    def test_macho_optional_fields_defaults(self):
        """Test MachO dataclass optional fields default to correct values."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_NOUNDEFS"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=False
        )

        assert macho.number_of_load_commands == 0
        assert macho.load_commands_set is None
        assert macho.number_of_segments == 0
        assert macho.number_of_dylibs == 0
        assert macho.number_of_imports == 0
        assert macho.number_of_exports == 0
        assert macho.entry_point is None
        assert macho.uuid is None
        assert macho.version_info is None
        assert macho.version_info_str is None

    def test_macho_with_all_fields(self):
        """Test MachO dataclass with all fields populated."""
        from redb.models.dataclasses import MachO

        macho = MachO(
            magic=0xFEEDFACF,
            cputype=0x01000007,
            cpusubtype=0x00000003,
            filetype=2,
            ncmds=15,
            sizeofcmds=1024,
            flags=0x00200085,
            architecture=0x01000007,
            architectures=[0x01000007],
            magic_str="MH_MAGIC_64",
            cputype_str="CPU_TYPE_X86_64",
            cpusubtype_str="CPU_SUBTYPE_X86_64_ALL",
            filetype_str="MH_EXECUTE",
            flags_str=["MH_PIE"],
            architecture_str="x86_64",
            architectures_str=["x86_64"],
            is_64bit=True,
            is_signed=True,
            number_of_load_commands=15,
            load_commands_set=["LC_SEGMENT_64", "LC_DYLD_INFO_ONLY"],
            number_of_segments=4,
            number_of_dylibs=5,
            number_of_imports=100,
            number_of_exports=10,
            entry_point=0x100001234,
            uuid="12345678-1234-1234-1234-123456789012",
            version_info={"min_os": "10.15"},
            version_info_str={"min_os": "macOS 10.15"}
        )

        assert macho.number_of_load_commands == 15
        assert macho.uuid == "12345678-1234-1234-1234-123456789012"
        assert macho.entry_point == 0x100001234


class TestMachOSegmentDataclass:
    """Tests for MachOSegment dataclass."""

    def test_segment_creation(self):
        """Test MachOSegment dataclass creation."""
        from redb.models.dataclasses import MachOSegment

        segment = MachOSegment(
            segment_name="__TEXT",
            segment_vaddr=0x100000000,
            segment_vsize=0x1000,
            segment_offset=0,
            segment_size=0x1000,
            segment_max_vm_protection=7,
            segment_initial_vm_protection=5,
            segment_nsects=4,
            segment_flags=0,
            segment_entropy=6.5,
            segment_sha256="abc123def456789012345678901234567890123456789012345678901234"
        )

        assert segment.segment_name == "__TEXT"
        assert segment.segment_vaddr == 0x100000000
        assert segment.segment_entropy == 6.5


class TestMachOImportDataclass:
    """Tests for MachOImport dataclass."""

    def test_import_creation(self):
        """Test MachOImport dataclass creation."""
        from redb.models.dataclasses import MachOImport

        import_info = MachOImport(
            macho_imports_total=50,
            macho_import_libraryName=["libSystem.B.dylib", "CoreFoundation"],
            macho_import_functions=["_printf", "_malloc", "_free"]
        )

        assert import_info.macho_imports_total == 50
        assert len(import_info.macho_import_libraryName) == 2
        assert "_printf" in import_info.macho_import_functions

    def test_import_optional_fields(self):
        """Test MachOImport with optional fields as None."""
        from redb.models.dataclasses import MachOImport

        import_info = MachOImport(macho_imports_total=0)

        assert import_info.macho_imports_total == 0
        assert import_info.macho_import_libraryName is None
        assert import_info.macho_import_functions is None


class TestMachOExportDataclass:
    """Tests for MachOExport dataclass."""

    def test_export_creation(self):
        """Test MachOExport dataclass creation."""
        from redb.models.dataclasses import MachOExport

        export_info = MachOExport(
            macho_exports_total=10,
            macho_export_symbols=["_main", "_helper_func"]
        )

        assert export_info.macho_exports_total == 10
        assert "_main" in export_info.macho_export_symbols


class TestMachODylibDataclass:
    """Tests for MachODylib dataclass."""

    def test_dylib_creation(self):
        """Test MachODylib dataclass creation."""
        from redb.models.dataclasses import MachODylib

        dylib = MachODylib(
            dylib_name="/usr/lib/libSystem.B.dylib",
            dylib_timestamp=2,
            dylib_current_version=0x04E10200,
            dylib_compat_version=0x00010000
        )

        assert dylib.dylib_name == "/usr/lib/libSystem.B.dylib"
        assert dylib.dylib_timestamp == 2


class TestMachOLoadCommandDataclass:
    """Tests for MachOLoadCommand dataclass."""

    def test_load_command_creation(self):
        """Test MachOLoadCommand dataclass creation."""
        from redb.models.dataclasses import MachOLoadCommand

        lc = MachOLoadCommand(
            load_command=0x19,
            load_command_str="LC_SEGMENT_64",
            load_command_size=72
        )

        assert lc.load_command == 0x19
        assert lc.load_command_str == "LC_SEGMENT_64"
        assert lc.load_command_size == 72


class TestMachOUniversalDataclass:
    """Tests for MachOUniversal dataclass."""

    def test_universal_fat_binary(self):
        """Test MachOUniversal for FAT binary."""
        from redb.models.dataclasses import MachOUniversal

        universal = MachOUniversal(
            is_fat=True,
            architecture_count=2,
            architectures=["x86_64", "arm64"],
            architecture_info=[
                {"arch": "x86_64", "offset": 0x1000},
                {"arch": "arm64", "offset": 0x10000}
            ],
            fat_hash="abc123def456789012345678901234567890123456789012345678901234",
            fat_md5="abc123def456789012345678901234",
            fat_sha1="abc123def456789012345678901234567890"
        )

        assert universal.is_fat is True
        assert universal.architecture_count == 2
        assert "x86_64" in universal.architectures
        assert "arm64" in universal.architectures

    def test_universal_single_arch(self):
        """Test MachOUniversal for single-architecture binary."""
        from redb.models.dataclasses import MachOUniversal

        universal = MachOUniversal(
            is_fat=False,
            architecture_count=1,
            architectures=["arm64"],
            architecture_info=[{"arch": "arm64", "offset": 0}]
        )

        assert universal.is_fat is False
        assert universal.architecture_count == 1
        assert universal.fat_hash is None


class TestMachOCertificateDataclass:
    """Tests for MachOCertificate dataclass."""

    def test_certificate_creation(self):
        """Test MachOCertificate dataclass creation."""
        from redb.models.dataclasses import MachOCertificate

        cert = MachOCertificate(
            subject="CN=Apple Development",
            issuer="CN=Apple Worldwide Developer Relations",
            serial_number="123456789",
            not_before="2023-01-01T00:00:00Z",
            not_after="2024-01-01T00:00:00Z",
            thumbprint="abc123def456789012345678901234567890",
            certificate_type="leaf",
            order=0,
            algorithm="sha256WithRSAEncryption",
            common_name="Apple Development",
            organizational_unit="Development",
            organization="Apple Inc."
        )

        assert cert.subject == "CN=Apple Development"
        assert cert.certificate_type == "leaf"
        assert cert.order == 0


class TestMachOCodeDirectoryDataclass:
    """Tests for MachOCodeDirectory dataclass."""

    def test_code_directory_creation(self):
        """Test MachOCodeDirectory dataclass creation."""
        from redb.models.dataclasses import MachOCodeDirectory

        cd = MachOCodeDirectory(
            identifier="com.example.app",
            team_id="ABC123DEF",
            flags=0x10000,
            cd_hash="abc123def456789012345678901234567890123456789012345678901234"
        )

        assert cd.identifier == "com.example.app"
        assert cd.team_id == "ABC123DEF"
        assert cd.flags == 0x10000


class TestMachOCodeSigningInfoDataclass:
    """Tests for MachOCodeSigningInfo dataclass."""

    def test_code_signing_info_unsigned(self):
        """Test MachOCodeSigningInfo for unsigned binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="unsigned",
            has_signature=False,
            number_of_certificates=0
        )

        assert info.signing_type == "unsigned"
        assert info.has_signature is False
        assert info.number_of_certificates == 0

    def test_code_signing_info_signed(self):
        """Test MachOCodeSigningInfo for signed binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo, MachOCodeDirectory

        cd = MachOCodeDirectory(
            identifier="com.example.app",
            team_id="ABC123DEF"
        )

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="certificate",
            has_signature=True,
            number_of_certificates=3,
            code_directories=[cd],
            entitlements={"com.apple.security.app-sandbox": True},
            has_hardened_runtime=True,
            has_library_validation=True
        )

        assert info.signing_type == "certificate"
        assert info.has_signature is True
        assert info.number_of_certificates == 3
        assert info.has_hardened_runtime is True

    def test_code_signing_info_adhoc(self):
        """Test MachOCodeSigningInfo for ad-hoc signed binary."""
        from redb.models.dataclasses import MachOCodeSigningInfo

        info = MachOCodeSigningInfo(
            _id="abc123def456789012345678901234567890123456789012345678901234",
            signing_type="ad-hoc",
            has_signature=True,
            number_of_certificates=0,
            arch_identifier="x86_64"
        )

        assert info.signing_type == "ad-hoc"
        assert info.number_of_certificates == 0
        assert info.arch_identifier == "x86_64"


class TestMachOEntitlementDataclass:
    """Tests for MachOEntitlement dataclass."""

    def test_entitlement_boolean(self):
        """Test MachOEntitlement with boolean value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.security.app-sandbox",
            value_type="boolean",
            value_bool=True
        )

        assert ent.key == "com.apple.security.app-sandbox"
        assert ent.value_type == "boolean"
        assert ent.value_bool is True

    def test_entitlement_string(self):
        """Test MachOEntitlement with string value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.developer.team-identifier",
            value_type="string",
            value_string="ABC123DEF"
        )

        assert ent.key == "com.apple.developer.team-identifier"
        assert ent.value_type == "string"
        assert ent.value_string == "ABC123DEF"

    def test_entitlement_array(self):
        """Test MachOEntitlement with array value."""
        from redb.models.dataclasses import MachOEntitlement

        ent = MachOEntitlement(
            key="com.apple.security.application-groups",
            value_type="array",
            value_array=["group.com.example.app", "group.com.example.shared"]
        )

        assert ent.key == "com.apple.security.application-groups"
        assert ent.value_type == "array"
        assert len(ent.value_array) == 2