Xiaolei Li

74 papers C 5Journal 66Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Signal Inf. Process. over Networks
Yao Yao, Jie Zhang, Xiaojie Sun, Xiaolei Li, Dawei Ding
2026 J jnl
IEEE Trans. Ind. Electron.
Xiaolei Li, Nan Li, Xu Fang, Shanying Zhu, Xiaoyuan Luo, Xinping Guan
2025 J jnl
IEEE Trans. Fuzzy Syst.
Yana Yang, Xiaoshi Liu, Changchun Hua, Xiaolei Li
2025 J jnl
IEEE Trans. Autom. Control.
Xiaolei Li, Changyun Wen, Jiange Wang, Jing Zhou
2025 J jnl
J. Control. Decis.
Jiange Wang, Miao Han, Zhizhong Bai, Xiaolei Li, Xiaoyuan Luo
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Jie Zhang, Yao Yao, Jian-An Wang, Xiaolei Li, Dawei Ding
2025 J jnl
IEEE Trans. Cybern.
Xiaolei Li, Chenhao Yang, Jiange Wang, Chao Deng, Xiaoyuan Luo, Xinping Guan
2025 J jnl
Unmanned Syst.
Xiaolei Li, Xu Fang, Shankar Deka, Changyun Wen
2025 J jnl
CoRR
Yuliang Fu, Guanghui Wen, Dan Zhao, Wei Xing Zheng, Xiaolei Li
2025 J jnl
IEEE Trans. Autom. Control.
Yuliang Fu, Guanghui Wen, Dan Zhao, Wei Xing Zheng, Xiaolei Li
2025 J jnl
IEEE Trans. Fuzzy Syst.
Xudong Gao, Xiaoguang Gao, Jia Rong, Xiaolei Li, Ni Li, Yifeng Niu, Jun Chen
2025 J jnl
IEEE Trans. Ind. Electron.
Huixin Jiang, Yana Yang, Changchun Hua, Xiaolei Li, Fangyao Lu
2025 J jnl
IEEE Internet Things J.
Jiange Wang, Ju H. Park, Xiaolei Li, Lisheng Jin, Xiaoyuan Luo
2025 J jnl
CoRR
Hongjian Chen, Changyun Wen, Xiaolei Li
2024 J jnl
IEEE Trans. Smart Grid
Xiaoyuan Luo, Ruiyang Gao, Xiaolei Li, Yuliang Fu, Qianwen Xu, Xinping Guan
2024 J jnl
IEEE Trans. Autom. Control.
Xu Fang, Lihua Xie, Xiaolei Li
2024 J jnl
CoRR
Xudong Gao, Xiaoguang Gao, Jia Rong, Xiaolei Li, Ni Li, Yifeng Niu, Jun Chen
2024 C conf
ACC
Xu Fang, Xiaolei Li, Lihua Xie
2024 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Xiaoyuan Luo, Yuliang Fu, Jiange Wang, Xiaolei Li
2023 J jnl
IEEE Trans. Ind. Electron.
Xinyao Li, Changyun Wen, Xiaolei Li, Jinsong He
2023 J jnl
CoRR
Xu Fang, Xiaolei Li, Lihua Xie
2023 J jnl
IEEE Trans. Control. Syst. Technol.
Cheng Zhu, Bing Huang, Yu Lu, Xiaolei Li, Yumin Su
2023 J jnl
IEEE Trans. Ind. Electron.
Xiaoyuan Luo, Yuliang Fu, Xiaolei Li, Jiange Wang
2023 J jnl
CoRR
Xu Fang, Lihua Xie, Xiaolei Li
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Jiange Wang, Xiaolei Li, Ju H. Park, Ge Guo
2023 J jnl
Autom.
Xu Fang, Lihua Xie, Xiaolei Li
2023 J jnl
J. Frankl. Inst.
Xiaoyuan Luo, Yuliang Fu, Xiaolei Li, Shaobao Li
2023 J jnl
IEEE Trans. Autom. Control.
Yuzhong Wang, Changyun Wen, Xiaolei Li
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Xinquan Zheng, Shaobao Li, Xiaoyuan Luo, Yuyan Zhang, Xiaolei Li, Xinping Guan
2023 J jnl
CoRR
Xu Fang, Lihua Xie, Xiaolei Li
2023 conf
CDC
Ke Shang, Xiaolei Li, Xiaoyuan Luo, Jiange Wang, Qianwen Xu
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Xiaolei Li, Jiange Wang
2023 J jnl
IEEE Trans. Ind. Informatics
Xiaoyuan Luo, Yuliang Fu, Jiange Wang, Xiaolei Li, Xinping Guan, Yuyan Zhang
2023 J jnl
IEEE Trans. Netw. Sci. Eng.
Xiaoyuan Luo, Yuliang Fu, Xiaolei Li
2023 conf
CDC
Hongjian Chen, Xiaolei Li, Changyun Wen, Xu Fang
2023 J jnl
IEEE Trans. Control. Syst. Technol.
Xiaolei Li, Jinsong He, Xinyao Li, Changyun Wen
2022 J jnl
IEEE Trans. Signal Process.
Liangming Chen, Kun Cao, Lihua Xie, Xiaolei Li, Mir Feroskhan
2022 J jnl
IEEE Trans. Cybern.
Xiaolei Li, Changyun Wen, Xu Fang, Jiange Wang
2022 J jnl
IEEE Trans. Cybern.
Xiaolei Li, Changyun Wen, Ci Chen, Qianwen Xu
2022 J jnl
IEEE Internet Things J.
Jiange Wang, Wai-Choong Wong, Xiaoyuan Luo, Xiaolei Li, Xinping Guan
2022 J jnl
IEEE Trans. Cybern.
Xu Fang, Xiaolei Li, Lihua Xie
2022 J jnl
Autom.
Ci Chen, Frank L. Lewis, Xiaolei Li
2022 C conf
IECON
Jia Xu, Ganghui Shen, Haidong Hu, Xiaolei Li
2022 J jnl
IEEE Trans. Ind. Informatics
Xiaolei Li, Changyun Wen, Jiange Wang, Lantao Xing, Xinyao Li
2022 conf
ICCA
Xu Fang, Xiaolei Li, He Huang, Lihua Xie
2022 J jnl
IEEE Trans. Cybern.
Xiaolei Li, Changyun Wen, Ci Chen
2022 J jnl
Autom.
Liangming Chen, Lihua Xie, Xiaolei Li, Xu Fang, Mir Feroskhan
2022 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xinyao Li, Changyun Wen, Xiaolei Li, Chao Deng
2021 J jnl
IEEE Trans. Cybern.
Xiaolei Li, Changyun Wen, Ci Chen
2021 J jnl
J. Frankl. Inst.
Qiyu Yang, Yi Lyu, Xiaolei Li, Ci Chen, Frank L. Lewis
2021 J jnl
IEEE Trans. Autom. Control.
Xu Fang, Xiaolei Li, Lihua Xie
2021 J jnl
Int. J. Control
Xiaoyuan Luo, Xianluo Li, Xiaolei Li, Xinping Guan
2021 J jnl
IEEE Trans. Smart Grid
Xiaolei Li, Ci Chen, Qianwen Xu, Changyun Wen
2021 J jnl
Inf. Sci.
Xiaolei Li, Changyun Wen, Jiange Wang, Ci Chen, Chao Deng
2021 J jnl
Int. J. Syst. Sci.
Jiange Wang, Xiaoyuan Luo, Xiaolei Li, Xinping Guan
2020 J jnl
IEEE Trans. Signal Process.
Xu Fang, Xiaolei Li, Lihua Xie
2020 J jnl
IEEE Trans. Signal Inf. Process. over Networks
Xiaoyuan Luo, Wenjing Zhong, Xiaolei Li, Xinping Guan
2020 J jnl
IEEE Trans. Control. Netw. Syst.
Xiaolei Li, Xiaoyuan Luo, Shiyu Zhao
2020 J jnl
IEEE Syst. J.
Xiaoyuan Luo, Xianluo Li, Xiaolei Li, Jing Yan, Xinping Guan
2020 J jnl
IEEE Trans. Signal Inf. Process. over Networks
Wenjing Zhong, Xiaoyuan Luo, Xiaolei Li, Jing Yan, Xinping Guan
2020 C conf
ICARCV
Xiaolei Li, Jiange Wang, Xinyao Li, Jiaqi Yan
2020 C conf
ICARCV
Xinyao Li, Changyun Wen, Xiaolei Li
2019 J jnl
Int. J. Syst. Sci.
Xiaolei Li, Meng Joo Er, Guang-Hong Yang, Ning Wang
2019 J jnl
J. Frankl. Inst.
Xiaolei Li, Xiaoyuan Luo, Jiange Wang, Yakun Zhu, Xinping Guan
2019 J jnl
J. Syst. Sci. Complex.
Jinran Wang, Xiaoyuan Luo, Xiaolei Li, Minggao Zhu, Xinping Guan
2018 J jnl
IEEE Access
Yanlong Sun, Yazhou Yuan, Xiaolei Li, Qimin Xu, Xinping Guan
2018 J jnl
Neurocomputing
Xiaolei Li, Xiaoyuan Luo, Jiange Wang, Yakun Zhu, Xinping Guan
2018 J jnl
J. Frankl. Inst.
Xiaolei Li, Xiaoyuan Luo, Jiange Wang, Xinping Guan
2018 C conf
ICARCV
Xiaolei Li, Meng Joo Er, Guang-Hong Yang, Ning Wang
2018 J jnl
IEEE Access
Xiaoyuan Luo, Xiaolei Li, Jiange Wang, Xinping Guan
2018 J jnl
J. Frankl. Inst.
Jiange Wang, Xiaoyuan Luo, Xiaolei Li, Xinping Guan
2017 J jnl
IEEE Trans. Ind. Electron.
Shaobao Li, Jie Zhang, Xiaolei Li, Feng Wang, Xiaoyuan Luo, Xin-Ping Guan
2017 J jnl
J. Syst. Sci. Complex.
Xiaolei Li, Xiaoyuan Luo, Shaobao Li, Xinping Guan
2017 J jnl
Sensors
Jing Yan, Xiaolei Li, Xiaoyuan Luo, Xinping Guan
tests/unit/test_decompile_scores.py
← Index tests/unit/test_decompile_scores.py python
"""Unit tests for bninja/analysis/scores.py — ObfuscationScores."""
import sys
import pytest
from unittest.mock import MagicMock

# Install binaryninja stubs before importing
from tests.unit.conftest_binja_stubs import (
    install_binja_stubs,
    HighLevelILOperation,
)
bn_mock = install_binja_stubs()

from redb.extractors.decompiler.bninja.analysis.scores import (
    ObfuscationScores,
    get_dominated_by,
    uses_mba,
)
import binaryninja.highlevelil as hlil_mod


# ============================================================================
# Helper: Mock HLIL instruction
# ============================================================================

class MockHLILInstruction(hlil_mod.HighLevelILInstruction):
    """Mock HLIL instruction with operation and operands."""
    def __init__(self, operation, operands=None):
        self.operation = operation
        self.operands = operands or []


class MockHLILBasicBlock:
    """Mock HLIL basic block for flattened score testing."""
    def __init__(self, incoming_edges=None, dominator_tree_children=None):
        self.incoming_edges = incoming_edges or []
        self.dominator_tree_children = dominator_tree_children or []


# ============================================================================
# 5a. ObfuscationScores
# ============================================================================


class TestFlattenedScore:
    def test_flattened_score_no_back_edges(self):
        """Linear CFG with no back edges -> score 0.0."""
        block = MockHLILBasicBlock(incoming_edges=[], dominator_tree_children=[])
        func = MagicMock()
        func.basic_blocks = [block]
        scores = ObfuscationScores(func)
        assert scores.flattened_score() == 0.0

    def test_flattened_score_with_loop(self):
        """CFG with a back edge -> score > 0.0."""
        block = MockHLILBasicBlock(dominator_tree_children=[])
        # Create a back edge: an incoming edge whose source is in the dominated set
        edge = MagicMock()
        edge.source = block  # source IS the dominator -> back edge
        block.incoming_edges = [edge]
        func = MagicMock()
        func.basic_blocks = [block]
        scores = ObfuscationScores(func)
        assert scores.flattened_score() > 0.0

    def test_flattened_score_fully_flat(self):
        """Flattened CFG: one block dominates all -> ratio close to 1.0."""
        children = [MockHLILBasicBlock() for _ in range(4)]
        root = MockHLILBasicBlock(dominator_tree_children=children)
        # Back edge from root incoming
        edge = MagicMock()
        edge.source = root
        root.incoming_edges = [edge]
        all_blocks = [root] + children
        func = MagicMock()
        func.basic_blocks = all_blocks
        scores = ObfuscationScores(func)
        assert scores.flattened_score() == pytest.approx(1.0)


class TestMBAScore:
    def test_mba_score_no_mixed_ops(self):
        """Instructions with only arithmetic -> score 0.0."""
        instr = MockHLILInstruction(HighLevelILOperation.HLIL_ADD, operands=[])
        func = MagicMock()
        func.instructions = [instr]
        scores = ObfuscationScores(func)
        assert scores.MBA_score() == 0.0

    def test_mba_score_mixed_ops(self):
        """Instructions with arithmetic + logic -> score > 0.0."""
        inner_logic = MockHLILInstruction(HighLevelILOperation.HLIL_XOR, operands=[])
        outer_arith = MockHLILInstruction(
            HighLevelILOperation.HLIL_ADD, operands=[inner_logic]
        )
        func = MagicMock()
        func.instructions = [outer_arith]
        scores = ObfuscationScores(func)
        assert scores.MBA_score() > 0.0

    def test_mba_score_all_mixed(self):
        """Every instruction has both -> score 1.0."""
        inner_logic = MockHLILInstruction(HighLevelILOperation.HLIL_NOT, operands=[])
        outer_arith = MockHLILInstruction(
            HighLevelILOperation.HLIL_SUB, operands=[inner_logic]
        )
        func = MagicMock()
        func.instructions = [outer_arith]
        scores = ObfuscationScores(func)
        assert scores.MBA_score() == 1.0


class TestGetDominatedBy:
    def test_get_dominated_by(self):
        child1 = MockHLILBasicBlock(dominator_tree_children=[])
        child2 = MockHLILBasicBlock(dominator_tree_children=[])
        root = MockHLILBasicBlock(dominator_tree_children=[child1, child2])
        result = get_dominated_by(root)
        assert root in result
        assert child1 in result
        assert child2 in result
        assert len(result) == 3


class TestUsesMBA:
    def test_uses_mba_arithmetic_only(self):
        instr = MockHLILInstruction(HighLevelILOperation.HLIL_ADD, operands=[])
        assert uses_mba(instr) is False

    def test_uses_mba_logic_only(self):
        instr = MockHLILInstruction(HighLevelILOperation.HLIL_XOR, operands=[])
        assert uses_mba(instr) is False

    def test_uses_mba_mixed(self):
        inner = MockHLILInstruction(HighLevelILOperation.HLIL_AND, operands=[])
        outer = MockHLILInstruction(HighLevelILOperation.HLIL_ADD, operands=[inner])
        assert uses_mba(outer) is True