Caixia Liu

64 papers A 1B 2C 5Journal 41Unranked 15
YearRankTypeTitle / Venue / Authors
2025 J jnl
Concurr. Comput. Pract. Exp.
Xinmiao Zhang, Caixia Liu
2025 J jnl
Eng. Appl. Artif. Intell.
Chengzheng Tong, Yanhua Wang, Liehao Wei, Hu Wang, Qingling Liu, Caixia Liu, Mingfa Yao
2024 C conf
CSCWD
Haiyang Zhang, Zhiwei Huo, Caixia Liu, Yingyan Wu, Xiran Zhang
2024 J jnl
Complex Intell. Syst.
ZhenGuo Xu, Caixia Liu, Tingting Liang
2024 conf
MMM (3)
Xiran Zhang, Haiyan Liu, Caixia Liu, Haiyang Zhang, Zhiwei Huo
2024 J jnl
Int. J. Ambient Comput. Intell.
Min Du, Bozhang Shao, Caixia Liu
2024 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Caixia Liu, Yali Chen, Minhong Zhu, Chenhui Hao, Hai-Sheng Li, Xiaochuan Wang
2024 J jnl
IEEE Trans. Ind. Informatics
Gongming Wang, Yidi Zhao, Caixia Liu, Junfei Qiao
2024 J jnl
Int. J. Digit. Earth
Chong Liu, Huabing Huang, Qi Zhang, Xuejie Feng, Xuejiao Hou, Caixia Liu, Hanzeyu Xu, Xiao Cheng
2024 J jnl
Br. J. Educ. Technol.
Yi Zhang, Caixia Liu, Yana Xing, Zhongling Pi, Jiumin Yang
2024 J jnl
Educ. Inf. Technol.
Caixia Liu, Liyao Wang, Zhongling Pi, Jiumin Yang
2024 J jnl
Entropy
Junjie Zhang, Caixia Liu, Shuxin Liu, Kai Wang, Weifei Zang
2024 J jnl
Sensors
Yupeng Zhang, Ruiheng Zhou, Xinyan Liu, Zhengyu Bi, Shengping Ruan, Yan Ma, Xin Li, Caixia Liu, Yu Chen, Jingran Zhou
2023 conf
ICCIP
Junjie Zhang, Shuxin Liu, Caixia Liu, Weifei Zang, Shibo Zhang, Ran Li, Qi Ouyang
2023 J jnl
J. Intell. Fuzzy Syst.
Wanli Xie, ZhenGuo Xu, Caixia Liu, Jianyue Chen
2023 J jnl
Soft Comput.
Wanli Xie, Caixia Liu
2023 J jnl
Syst.
Caixia Liu, Yu Chen, Sifan Huang, Xuesheng Chen, Feng Liu
2023 J jnl
Comput. Graph.
Chenhui Hao, Dehui Kong, Jinghua Li, Caixia Liu, Baocai Yin
2023 J jnl
Neurocomputing
Caixia Liu, Dehui Kong, Shaofan Wang, Qianxing Li, Jinghua Li, Baocai Yin
2023 J jnl
J. Complex Networks
Junjie Zhang, Caixia Liu, Shuxin Liu, Fei Pan, Weifei Zang
2022 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Caixia Liu, Dehui Kong, Shaofan Wang, Jinghua Li, Baocai Yin
2022 J jnl
Comput. Biol. Medicine
Chaoran Yang, Zeyu Yang, Shanshan Liao, Jiaqi Guo, Shaowei Yin, Caixia Liu, Yan Kang
2022 conf
ICBSP
Chaoran Yang, Shaowei Yin, Shanshan Liao, Da Chen, Caixia Liu, Yan Kang
2022 J jnl
Intell. Data Anal.
Yabin Peng, Caixia Liu, Yiteng Wu, Shuxin Liu, Kai Wang
2022 J jnl
IEEE Trans Autom. Sci. Eng.
Gongming Wang, Junfei Qiao, Caixia Liu, Zhaoxu Shen
2022 J jnl
KSII Trans. Internet Inf. Syst.
Ying Zhu, Caixia Liu, Yiming Zhang, Wei You
2022 J jnl
Comput. Networks
Yabin Peng, Caixia Liu, Shuxin Liu, Yuchen Liu, Yiteng Wu
2021 J jnl
J. Intell. Fuzzy Syst.
Meixin Huang, Caixia Liu
2021 J jnl
Expert Syst. J. Knowl. Eng.
Shuwen Wang, Hao Yan, Caixia Liu, Ning Fan, Xiaoming Liu, Chengguo Wang
2021 J jnl
IEEE Trans. Multim.
Caixia Liu, Dehui Kong, Shaofan Wang, Jinghua Li, Baocai Yin
2021 J jnl
Frontiers Inf. Technol. Electron. Eng.
Caixia Liu, Dehui Kong, Shaofan Wang, Zhiyong Wang, Jinghua Li, Baocai Yin
2021 conf
ICANN (2)
Caixia Liu, Dehui Kong, Shaofan Wang, Jinghua Li, Baocai Yin
2021 J jnl
Neural Networks
Haixia Xing, Gongming Wang, Caixia Liu, Minghe Suo
2020 J jnl
IEICE Trans. Inf. Syst.
Xinxin Hu, Caixia Liu, Shuxin Liu, Xiaotao Cheng
2020 J jnl
IEICE Trans. Inf. Syst.
Xinxin Hu, Caixia Liu, Shuxin Liu, Jinsong Li, Xiaotao Cheng
2020 J jnl
Neural Networks
Gongming Wang, Qing-Shan Jia, Junfei Qiao, Jing Bi, Caixia Liu
2020 J jnl
Comput. Educ.
Zhongling Pi, Ke Xu, Caixia Liu, Jiumin Yang
2019 J jnl
IEEE Access
Xinxin Hu, Caixia Liu, Shuxin Liu, Wei You, Yingle Li, Yu Zhao
2018 J jnl
Sci. China Inf. Sci.
Caixia Liu, Xinsheng Ji, Jiangxing Wu, Xiao Qin
2018 J jnl
Sci. China Inf. Sci.
Xinsheng Ji, Kaizhi Huang, Liang Jin, Hongbo Tang, Caixia Liu, Zhou Zhong, Wei You, Xiaoming Xu, Hua Zhao, Jiangxing Wu, Ming Yi
2018 conf
WCSP
Xinxin Hu, Caixia Liu, Shuxin Liu, Wei You, Yu Zhao
2017 conf
CISP-BMEI
Caixia Liu, Xiaofei Yan, Bin Yang
2017 J jnl
BMC Medical Imaging
Wenxu Qi, Song Gao, Caixia Liu, Gongyu Lan, Xue Yang, Qiyong Guo
2017 conf
ICIA
Xiaohui Guo, Ying Huang, Wendong Wang, Yunong Zhao, Caixia Liu, Yugang Zhang
2017 conf
iThings/GreenCom/CPSCom/SmartData
Ning Fan, Shuwen Wang, Caixia Liu, Xiaoming Liu
2015 conf
CyberC
Qing Zhang, Caixia Liu
2015 conf
CyberC
Ganqiang Lu, Caixia Liu, Lingshu Li, Quan Yuan
2015 C conf
INDIN
Xiao-Zhi Zhang, Caixia Liu, Bingo Wing-Kuen Ling, Meilin Wang, Lidong Wang, Vera Sau-Fong Chan, Kim Fung Tsang, Kwok Tai Chui, Chung Kit Wu, Faan Hei Hung, Wing Hong Lau
2015 conf
ROBIO
Yangyang Ma, Ying Huang, Leidong Mao, Ping Liu, Caixia Liu, YunJian Ge
2015 C conf
HIS
Bin Yang, Wei Zhang, Xiaofei Yan, Caixia Liu
2014 conf
ROBIO
Caixia Liu, Ying Huang, Ping Liu, Yugang Zhang, Haitao Yuan, Leiming Li, YunJian Ge
2014 J jnl
J. Appl. Math.
Aimin Chen, Caixia Liu, Junwei Wang
2013 J jnl
Int. J. Soc. Robotics
Caixia Liu, Jaap Ham, Eric O. Postma, Cees J. H. Midden, Bart Joosten, Martijn Goudbeek
2013 J jnl
J. Softw.
Zhunyang Pan, Caixia Liu, Shuxin Liu, Shuming Guo
2012 B conf
ICSR
Caixia Liu, Jaap Ham, Eric O. Postma, Cees J. H. Midden, Bart Joosten, Martijn Goudbeek
2011 C conf
CIS
Xiaolong Xie, Xinsheng Ji, Caixia Liu
2011 C conf
CIS
Shuxin Liu, Jianhua Peng, Caixia Liu
2008 conf
ICYCS
Jiaxin Li, Ning Deng, Caixia Liu, Mengxiao Liu, Zuo Wang, Qi Zuo
2008 conf
ICYCS
Caixia Liu, Jiaxin Li, Hongli Zhang, Qi Zuo
2008 conf
CSSE (1)
Jinyong Cheng, Caixia Liu
2007 A conf
RTSS
Weixing Ji, Feng Shi, Baojun Qiao, Qi Zuo, Caixia Liu
2006 J jnl
Microelectron. J.
Cuiping Jia, Wei Dong, Caixia Liu, Xindong Zhang, Jingran Zhou, Zhicheng Zhong, Hailin Xue, Huidong Zang, Baokun Xu, Weiyou Chen
2004 J jnl
Microelectron. J.
Wei Dong, Xindong Zhang, Caixia Liu, Ming Li, Baokun Xu, Weiyou Chen
2003 B conf
PIMRC
Caixia Liu, Dingjiu Yu, Honglin Qiu, Jiangxing Wu
redb/extractors/decompiler/bninja/analysis/cfg.py
← Index redb/extractors/decompiler/bninja/analysis/cfg.py python
from binaryninja.enums import LowLevelILOperation as LLIL_OP

# Support both package and standalone imports
try:
    from . import cfg_features
except ImportError:
    from redb.extractors.decompiler.bninja.analysis import cfg_features


# ---------------------------------------------------------------------------
# Task 2.2: Build LLIL operation maps at import time using real enum values
# ---------------------------------------------------------------------------

# Prime product map: LLIL operation integer value -> small prime
cfg_features.LLIL_OP_PRIMES = {
    # SET_REG, SET_REG_SPLIT
    LLIL_OP.LLIL_SET_REG.value: 2,
    LLIL_OP.LLIL_SET_REG_SPLIT.value: 2,
    # SET_FLAG
    LLIL_OP.LLIL_SET_FLAG.value: 3,
    # LOAD
    LLIL_OP.LLIL_LOAD.value: 5,
    # STORE
    LLIL_OP.LLIL_STORE.value: 7,
    # PUSH, POP
    LLIL_OP.LLIL_PUSH.value: 11,
    LLIL_OP.LLIL_POP.value: 13,
    # CALL, TAILCALL, SYSCALL
    LLIL_OP.LLIL_CALL.value: 17,
    LLIL_OP.LLIL_TAILCALL.value: 17,
    LLIL_OP.LLIL_SYSCALL.value: 19,
    # RET, NORET
    LLIL_OP.LLIL_RET.value: 23,
    LLIL_OP.LLIL_NORET.value: 23,
    # IF, GOTO
    LLIL_OP.LLIL_IF.value: 29,
    LLIL_OP.LLIL_GOTO.value: 31,
    # ADD, SUB
    LLIL_OP.LLIL_ADD.value: 37,
    LLIL_OP.LLIL_SUB.value: 41,
    # AND, OR, XOR
    LLIL_OP.LLIL_AND.value: 43,
    LLIL_OP.LLIL_OR.value: 47,
    LLIL_OP.LLIL_XOR.value: 53,
    # LSL, LSR, ASR, ROL, ROR
    LLIL_OP.LLIL_LSL.value: 59,
    LLIL_OP.LLIL_LSR.value: 61,
    LLIL_OP.LLIL_ASR.value: 67,
    LLIL_OP.LLIL_ROL.value: 71,
    LLIL_OP.LLIL_ROR.value: 73,
    # MUL, DIVU, DIVS, MODU, MODS
    LLIL_OP.LLIL_MUL.value: 79,
    LLIL_OP.LLIL_DIVU.value: 83,
    LLIL_OP.LLIL_DIVS.value: 83,
    LLIL_OP.LLIL_MODU.value: 89,
    LLIL_OP.LLIL_MODS.value: 89,
    # NEG, NOT
    LLIL_OP.LLIL_NEG.value: 97,
    LLIL_OP.LLIL_NOT.value: 101,
    # CMP_E, CMP_NE, CMP_SLT, CMP_ULT, CMP_SLE, CMP_ULE
    # CMP_SGT, CMP_UGT, CMP_SGE, CMP_UGE
    LLIL_OP.LLIL_CMP_E.value: 103,
    LLIL_OP.LLIL_CMP_NE.value: 103,
    LLIL_OP.LLIL_CMP_SLT.value: 107,
    LLIL_OP.LLIL_CMP_ULT.value: 107,
    LLIL_OP.LLIL_CMP_SLE.value: 109,
    LLIL_OP.LLIL_CMP_ULE.value: 109,
    LLIL_OP.LLIL_CMP_SGT.value: 113,
    LLIL_OP.LLIL_CMP_UGT.value: 113,
    LLIL_OP.LLIL_CMP_SGE.value: 127,
    LLIL_OP.LLIL_CMP_UGE.value: 127,
    # NOP
    LLIL_OP.LLIL_NOP.value: 1,
    # SX, ZX, LOW_PART, BOOL_TO_INT
    LLIL_OP.LLIL_SX.value: 131,
    LLIL_OP.LLIL_ZX.value: 137,
    LLIL_OP.LLIL_LOW_PART.value: 139,
    LLIL_OP.LLIL_BOOL_TO_INT.value: 149,
    # JUMP, JUMP_TO
    LLIL_OP.LLIL_JUMP.value: 151,
    LLIL_OP.LLIL_JUMP_TO.value: 151,
}

# Category map: LLIL operation integer value -> category index
_ARITHMETIC = {
    LLIL_OP.LLIL_ADD, LLIL_OP.LLIL_ADC, LLIL_OP.LLIL_SUB, LLIL_OP.LLIL_SBB,
    LLIL_OP.LLIL_MUL, LLIL_OP.LLIL_MULU_DP, LLIL_OP.LLIL_MULS_DP,
    LLIL_OP.LLIL_DIVU, LLIL_OP.LLIL_DIVU_DP, LLIL_OP.LLIL_DIVS,
    LLIL_OP.LLIL_DIVS_DP, LLIL_OP.LLIL_MODU, LLIL_OP.LLIL_MODS,
    LLIL_OP.LLIL_NEG,
}
_LOGIC = {
    LLIL_OP.LLIL_AND, LLIL_OP.LLIL_OR, LLIL_OP.LLIL_XOR, LLIL_OP.LLIL_NOT,
    LLIL_OP.LLIL_LSL, LLIL_OP.LLIL_LSR, LLIL_OP.LLIL_ASR,
    LLIL_OP.LLIL_ROL, LLIL_OP.LLIL_RLC, LLIL_OP.LLIL_ROR, LLIL_OP.LLIL_RRC,
}
_TRANSFER = {
    LLIL_OP.LLIL_SET_REG, LLIL_OP.LLIL_SET_REG_SPLIT, LLIL_OP.LLIL_SET_FLAG,
    LLIL_OP.LLIL_GOTO, LLIL_OP.LLIL_IF, LLIL_OP.LLIL_JUMP, LLIL_OP.LLIL_JUMP_TO,
    LLIL_OP.LLIL_RET, LLIL_OP.LLIL_NORET, LLIL_OP.LLIL_PUSH, LLIL_OP.LLIL_POP,
}
_CALL = {
    LLIL_OP.LLIL_CALL, LLIL_OP.LLIL_TAILCALL, LLIL_OP.LLIL_SYSCALL,
}
_COMPARISON = {
    LLIL_OP.LLIL_CMP_E, LLIL_OP.LLIL_CMP_NE,
    LLIL_OP.LLIL_CMP_SLT, LLIL_OP.LLIL_CMP_ULT,
    LLIL_OP.LLIL_CMP_SLE, LLIL_OP.LLIL_CMP_ULE,
    LLIL_OP.LLIL_CMP_SGE, LLIL_OP.LLIL_CMP_UGE,
    LLIL_OP.LLIL_CMP_SGT, LLIL_OP.LLIL_CMP_UGT,
    LLIL_OP.LLIL_TEST_BIT, LLIL_OP.LLIL_FLAG_COND,
}
_MEMORY = {
    LLIL_OP.LLIL_LOAD, LLIL_OP.LLIL_STORE,
}

cfg_features.LLIL_OP_CATEGORIES = {}
for _op in _ARITHMETIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_ARITHMETIC
for _op in _LOGIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_LOGIC
for _op in _TRANSFER:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_TRANSFER
for _op in _CALL:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_CALL
for _op in _COMPARISON:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_COMPARISON
for _op in _MEMORY:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_MEMORY

# Set of CALL operation values for counting
_CALL_OPS = {op.value for op in _CALL}


# ---------------------------------------------------------------------------
# Task 2.1 + 2.3: Rewritten CFGAnalysis
# ---------------------------------------------------------------------------

class CFGAnalysis:
    def __init__(self, function, llil_function=None):
        self.function = function
        self.llil_function = llil_function

    def extract_function_cfg(self):
        """Extract function-level CFG features as a flat dictionary."""

        if self.function is None:
            return None

        blocks = list(self.function.basic_blocks)
        if not blocks:
            return None

        n = len(blocks)

        # 1. Build index-based adjacency from Binary Ninja blocks
        addr_to_idx = {b.start: i for i, b in enumerate(blocks)}
        successors = [[] for _ in range(n)]
        predecessors = [[] for _ in range(n)]
        for i, block in enumerate(blocks):
            for edge in block.outgoing_edges:
                if edge.target is None:
                    continue
                target_idx = addr_to_idx.get(edge.target.start)
                if target_idx is not None:
                    successors[i].append(target_idx)
                    predecessors[target_idx].append(i)

        # 2. BFS order (reusable across multiple features)
        bfs = cfg_features.bfs_order(successors, n)

        # 3. Collect per-block LLIL operations (for prime product + ACFG features)
        block_llil_ops = self._collect_block_llil_ops(blocks, addr_to_idx, n)
        all_llil_ops = [op for block_ops in block_llil_ops for op in block_ops]

        # 4. Structural counts
        edge_count = sum(len(s) for s in successors)
        total_llil = sum(len(ops) for ops in block_llil_ops)
        call_count = sum(
            1 for ops in block_llil_ops for op in ops
            if op in _CALL_OPS
        )

        # 5. Compute all features
        bb_features = cfg_features.build_block_features(block_llil_ops, successors, n)

        return {
            "cfg_topology_hash": cfg_features.compute_topology_hash(successors, bfs, n),
            "block_count": n,
            "edge_count": edge_count,
            "llil_total_operations": total_llil,
            "call_count": call_count,
            "cyclomatic_complexity": edge_count - n + 2,
            "loop_count": cfg_features.count_back_edges(successors, n),
            "max_depth": cfg_features.bfs_max_depth(successors, n),
            "max_fan_out": max((len(s) for s in successors), default=0),
            "md_index_topdown": cfg_features.compute_md_index_topdown(successors, predecessors, bfs),
            "md_index_bottomup": cfg_features.compute_md_index_bottomup(successors, predecessors, n),
            "prime_product_llil": cfg_features.compute_prime_product(all_llil_ops),
            "cfg_feature_tlsh": cfg_features.compute_cfg_feature_tlsh(bb_features, bfs),
            "wl_minhash": cfg_features.compute_wl_minhash(successors, predecessors, bb_features, n),
            "bb_features": bb_features,
            "cfg_adjacency": cfg_features.pack_adjacency(successors),
        }

    def _collect_block_llil_ops(self, blocks, addr_to_idx, n):
        """
        Collect LLIL operation integers per native basic block.
        Walks the full expression tree of each instruction so that
        nested operations (e.g. ADD inside SET_REG) are captured.
        Returns list of n lists, one per block.
        """
        block_ops = [[] for _ in range(n)]

        if self.llil_function is None:
            return block_ops

        try:
            for llil_block in self.llil_function.basic_blocks:
                # Map LLIL block to native block via source_block
                if llil_block.source_block is not None:
                    native_idx = addr_to_idx.get(llil_block.source_block.start)
                    if native_idx is not None:
                        for instr in llil_block:
                            self._walk_llil_ops(instr, block_ops[native_idx])
        except Exception:
            pass  # Return empty ops — LLIL-dependent fields will be 0/null

        return block_ops

    @staticmethod
    def _walk_llil_ops(expr, ops_list):
        """Collect operation values from an LLIL expression tree iteratively."""
        stack = [expr]
        while stack:
            node = stack.pop()
            if hasattr(node, 'operation'):
                ops_list.append(node.operation.value)
            if hasattr(node, 'operands'):
                for operand in node.operands:
                    if hasattr(operand, 'operation'):
                        stack.append(operand)