Xiaochao Wei

44 papers C 3Journal 36Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
Inf. Fusion
Shilong Li, Xiaochao Wei, Hao Wang, Ye Su, Willy Susilo
2026 J jnl
IEEE Trans. Dependable Secur. Comput.
Zhi Li, Hao Wang, Ye Su, Xiaochao Wei, Lei Wu, Wenying Zhang
2025 J jnl
IEEE Trans. Netw. Serv. Manag.
Zhengran Tian, Hao Wang, Zhi Li, Ziyu Niu, Xiaochao Wei, Ye Su
2025 J jnl
IEEE Internet Things J.
Xinsheng Chen, Xiaochao Wei, Hao Wang, Lijuan Xu
2025 J jnl
IEEE Trans. Netw. Sci. Eng.
Shilong Li, Xiaochao Wei, Hao Wang
2025 J jnl
IEEE Internet Things J.
Wenbo Yang, Hao Wang, Zhi Li, Ziyu Niu, Lei Wu, Xiaochao Wei, Ye Su, Willy Susilo
2025 J jnl
BMC Bioinform.
Jinpeng Wang, Shuo Sun, Yaran Zhang, Ning Huang, Chunhong Yang, Yaping Gao, Xiuge Wang, Zhihua Ju, Qiang Jiang, Yao Xiao, Xiaochao Wei, Wenhao Liu, Jinming Huang
2024 J jnl
High Confid. Comput.
Jinjiao Zhang, Wenying Zhang, Xiaochao Wei, Huimin Liu
2024 J jnl
Decis. Support Syst.
Xiaochao Wei, Yanfei Zhang, Xin (Robert) Luo
2024 J jnl
Comput. Stand. Interfaces
Liju Ma, Hao Wang, Ziyu Niu, Zhi Li, Lei Wu, Xiaochao Wei, Ye Su
2024 J jnl
Ann. des Télécommunications
Yao Li, Xiaochao Wei, Guopeng Cai, Hao Wang
2024 J jnl
IEEE Trans. Serv. Comput.
Xiaotong Li, Hao Wang, Zhi Li, Lei Wu, Xiaochao Wei, Ye Su, Rongxing Lu
2024 J jnl
J. Assoc. Inf. Syst.
Xiaochao Wei, Yanfei Zhang, Xin (Robert) Luo, Gangmei Pan, Guihua Nie
2023 J jnl
Expert Syst. Appl.
Xiaochao Wei, Jennifer Shang
2023 J jnl
Expert Syst. Appl.
Xiaochao Wei, Haobo Gong, Lin Song
2023 J jnl
Inf. Sci.
Xiaochao Wei, Qiping She
2022 J jnl
Complex.
Xiaochao Wei, Qi Liao, Yanfei Zhang, Guihua Nie
2022 J jnl
Int. J. Intell. Syst.
Guopeng Cai, Xiaochao Wei, Yao Li
2022 C conf
ICA3PP
Shuang Ding, Xiaochao Wei, Lin Xu, Hao Wang
2022 J jnl
Int. J. Intell. Syst.
Lin Xu, Xiaochao Wei, Guopeng Cai, Yao Li, Hao Wang
2022 J jnl
Int. J. Intell. Syst.
Xiaochao Wei, Lin Xu, Guopeng Cai, Hao Wang
2021 J jnl
IEEE Access
Xiaochao Wei, Yanfei Zhang, Yuyao Fan, Guihua Nie
2021 J jnl
Digit. Commun. Networks
Xi Sun, Hao Wang, Xiu Fu, Hong Qin, Mei Jiang, Likun Xue, Xiaochao Wei
2020 J jnl
Inf. Sci.
Hao Wang, Hong Qin, Minghao Zhao, Xiaochao Wei, Hua Shen, Willy Susilo
2020 J jnl
IEEE Access
Xiaochao Wei, Lin Xu, Hao Wang, Zhihua Zheng
2020 J jnl
Inf. Sci.
Xiaochao Wei, Lin Xu, Minghao Zhao, Hao Wang
2019 J jnl
Secur. Commun. Networks
Yujiao Song, Hao Wang, Xiaochao Wei, Lei Wu
2019 J jnl
IEEE Access
Qizheng Wang, Ling Gao, Hao Wang, Xiaochao Wei
2019 J jnl
IEEE Access
Hong Qin, Hao Wang, Xiaochao Wei, Likun Xue, Lei Wu
2019 J jnl
Expert Syst. Appl.
Qiping She, Xiaochao Wei, Guihua Nie, Donglin Chen
2018 J jnl
J. Inf. Secur. Appl.
Dandan Yuan, Xiangfu Song, Qiuliang Xu, Minghao Zhao, Xiaochao Wei, Hao Wang, Han Jiang
2018 J jnl
Soft Comput.
Xiaochao Wei, Minghao Zhao, Qiuliang Xu
2017 J jnl
Comput. Syst. Sci. Eng.
Xiaochao Wei, Qiuliang Xu, Yi Tang
2016 J jnl
Sci. Program.
Qingliang Meng, Xiaochao Wei, Wen Meng
2016 conf
Trustcom/BigDataSE/ISPA
Xiaoyan Yang, Han Jiang, Qiuliang Xu, Mengbo Hou, Xiaochao Wei, Minghao Zhao, Kim-Kwang Raymond Choo
2016 conf
Trustcom/BigDataSE/ISPA
Xiaochao Wei, Han Jiang, Chuan Zhao, Minghao Zhao, Qiuliang Xu
2016 C conf
GPC
Xiaochao Wei, Chuan Zhao, Han Jiang, Qiuliang Xu, Hao Wang
2015 conf
TrustCom/BigDataSE/ISPA (1)
Chuan Zhao, Han Jiang, Xiaochao Wei, Qiuliang Xu, Minghao Zhao
2015 conf
ISICA
Shufeng Li, Minghao Zhao, Han Jiang, Qiuliang Xu, Xiaochao Wei
2015 J jnl
Int. J. Inf. Secur. Priv.
Chuan Zhao, Han Jiang, Qiuliang Xu, Xiaochao Wei, Hao Wang
2014 J jnl
IACR Cryptol. ePrint Arch.
Han Jiang, Xiaochao Wei, Chuan Zhao, Qiuliang Xu
2013 J jnl
J. Artif. Soc. Soc. Simul.
Xiaochao Wei, Bin Hu, Kathleen M. Carley
2005 conf
Advances in Computer Entertainment Technology
Zhigeng Pan, Xiaochao Wei, Jian Yang
2005 C conf
ICEC
Zhigeng Pan, Shusen Sun, Jian Yang, Xiaochao Wei
redb/extractors/decompiler/bninja/analysis/medium_level.py
← Index redb/extractors/decompiler/bninja/analysis/medium_level.py python
import time

from binaryninja import (
    MediumLevelILOperation as MLIL_OP,
)

try:
    from ..function_type import FunctionTypeAnalysis
    from ..similarity.minhasher import MinHasher, TokenKind
    from ..utils.hashes import calculate_sha256, calculate_tlsh
    from .medium_level_normalization import MediumLevelNormalization
except ImportError:
    from redb.extractors.decompiler.bninja.analysis.medium_level_normalization import MediumLevelNormalization
    from redb.extractors.decompiler.bninja.similarity.minhasher import MinHasher
    from redb.extractors.decompiler.bninja.function_type import FunctionTypeAnalysis
    from redb.extractors.decompiler.bninja.utils.hashes import calculate_sha256, calculate_tlsh


_MLIL_CALL_OPS = (
    MLIL_OP.MLIL_CALL,
    MLIL_OP.MLIL_CALL_SSA,
    MLIL_OP.MLIL_CALL_UNTYPED,
    MLIL_OP.MLIL_CALL_UNTYPED_SSA,
    MLIL_OP.MLIL_TAILCALL,
    MLIL_OP.MLIL_TAILCALL_SSA,
    MLIL_OP.MLIL_TAILCALL_UNTYPED,
    MLIL_OP.MLIL_TAILCALL_UNTYPED_SSA,
)

_MLIL_CONTROL_FLOW_OPS = (
    MLIL_OP.MLIL_IF,
    MLIL_OP.MLIL_GOTO,
    MLIL_OP.MLIL_JUMP,
    MLIL_OP.MLIL_JUMP_TO,
    MLIL_OP.MLIL_RET,
    MLIL_OP.MLIL_RET_HINT,
    MLIL_OP.MLIL_NORET,
) + _MLIL_CALL_OPS


class MediumLevelAnalysis:
    def __init__(self, function, bv, logger):
        self.function = function
        self.name = function.name
        self.start = function.start
        self.mlil_func = function.mlil
        self.bv = bv
        self.logger = logger
        self.errors = []

    def log_error(self, message, function_name, address, exception=None, error_location="unknown"):
        error_msg = f"Error in function {function_name} at {address}: {message}"
        if exception:
            error_msg += f" - {str(exception)}"
        self.logger.error(error_msg)

        error = {
            "function_name": function_name,
            "function_address": str(address),
            "error_location": error_location,
            "error_message": message,
            "error_details": str(exception) if exception else "",
            "error_type": type(exception).__name__ if exception else "Unknown",
            "timestamp": int(time.time() * 1000),
        }
        self.errors.append(error)

    def _collect_mlil_skeleton_and_typed(self):
        mlil = self.mlil_func
        if not mlil:
            return [], [], [], []

        start = self.start
        norm = MediumLevelNormalization()

        skeleton = []
        skeleton_with_addr = []
        typed = []
        typed_with_addr = []

        for il in mlil.instructions:
            skel_norm = norm.normalize_instruction_all_levels(il)
            typed_norm = norm.normalize_instr_with_operands(il)

            skeleton.append(skel_norm)
            typed.append(typed_norm)

            offset = il.address - start
            if offset < 0:
                offset = 0

            skeleton_with_addr.append((offset, skel_norm))
            typed_with_addr.append((offset, typed_norm))

        return skeleton, skeleton_with_addr, typed, typed_with_addr

    def analyze(self):
        (
            instr_skeleton,
            body_mlil_skeleton_vector,
            instr_typed,
            body_mlil_typed_vector,
        ) = self._collect_mlil_skeleton_and_typed()

        instr_skeleton_str = str(instr_skeleton)
        sha256_skeleton = calculate_sha256(instr_skeleton_str)
        tlsh_skeleton = calculate_tlsh(instr_skeleton_str)

        instr_typed_str = str(instr_typed)
        sha256_typed = calculate_sha256(instr_typed_str)
        tlsh_typed = calculate_tlsh(instr_typed_str)

        seed = 0xdeadbeef
        minhash_mlil_skeleton = MinHasher(seed, self.mlil_func, TokenKind.MLIL).calculateMinHash()
        minhash_mlil_typed = MinHasher(seed, self.mlil_func, TokenKind.TYPED_MLIL).calculateMinHash()

        medium_level_json = {
            "function_address": self.start,
            "body_mlil_skeleton_vector": body_mlil_skeleton_vector,
            "sha256_mlil_skeleton": sha256_skeleton,
            "tlsh_mlil_skeleton": tlsh_skeleton,
            "minhash_mlil_skeleton": minhash_mlil_skeleton,
            "body_mlil_typed_vector": body_mlil_typed_vector,
            "sha256_mlil_typed": sha256_typed,
            "tlsh_mlil_typed": tlsh_typed,
            "minhash_mlil_typed": minhash_mlil_typed,
        }

        return medium_level_json, self.errors