Xiaolei Huang

45 papers A* 1A 1B 1C 1Journal 22Unranked 19
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Mohamed Elmoghany, Liangbing Zhao, Xiaoqian Shen, Subhojyoti Mukherjee, Yang Zhou, Gang Wu, Viet Dac Lai, Seunghyun Yoon, Ryan Rossi, Abdullah Rashwan, Puneet Mathur, Varun Manjunatha, Daksh Dangi, Chien Nguyen, Nedim Lipka, Trung Bui, Krishna Kumar Singh, Ruiyi Zhang, Xiaolei Huang, Jaemin Cho, Yu Wang, Namyong Park, Zhengzhong Tu, Hongjie Chen, Hoda Eldardiry, Nesreen K. Ahmed, Thien Huu Nguyen, Dinesh Manocha, Mohamed Elhoseiny, Franck Dernoncourt
2025 J jnl
CoRR
Hanshu Rao, Weisi Liu, Haohan Wang, I-Chan Huang, Zhe He, Xiaolei Huang
2025 conf
ICCVW
Mohamed Elmoghany, Ryan A. Rossi, Seunghyun Yoon, Subhojyoti Mukherjee, Eslam Mohamed Bakr, Puneet Mathur, Gang Wu, Viet Dac Lai, Nedim Lipka, Ruiyi Zhang, Varun Manjunatha, Chien Nguyen, Daksh Dangi, Abel Salinas, Hongjie Chen, Xiaolei Huang, Joe Barrow, Nesreen K. Ahmed, Hoda Eldardiry, Namyong Park, Yu Wang, Zhengzhong Tu, Thien Huu Nguyen, Dinesh Manocha, Mohamed Elhoseiny, Franck Dernoncourt
2025 J jnl
CoRR
Mohamed Elmoghany, Ryan A. Rossi, Seunghyun Yoon, Subhojyoti Mukherjee, Eslam Mohamed Bakr, Puneet Mathur, Gang Wu, Viet Dac Lai, Nedim Lipka, Ruiyi Zhang, Varun Manjunatha, Chien Van Nguyen, Daksh Dangi, Abel Salinas, Mohammad Reza Taesiri, Hongjie Chen, Xiaolei Huang, Joe Barrow, Nesreen K. Ahmed, Hoda Eldardiry, Namyong Park, Yu Wang, Jaemin Cho, Anh Totti Nguyen, Zhengzhong Tu, Thien Huu Nguyen, Dinesh Manocha, Mohamed Elhoseiny, Franck Dernoncourt
2025 J jnl
CoRR
Guangzeng Han, Weisi Liu, Xiaolei Huang
2025 conf
ICHI
Precious Jones, Weisi Liu, I-Chan Huang, Xiaolei Huang
2025 conf
NAACL (Long Papers)
Weisi Liu, Guangzeng Han, Xiaolei Huang
2025 J jnl
CoRR
Weisi Liu, Guangzeng Han, Xiaolei Huang
2025 J jnl
J. Heal. Informatics Res.
Wang Li, Guangzeng Han, Yuexin Wu, I-Chan Huang, Xiaolei Huang
2024 conf
ICHI
Guangzeng Han, Weisi Liu, Xiaolei Huang, Brian Borsari
2024 J jnl
CoRR
Guangzeng Han, Weisi Liu, Xiaolei Huang, Brian Borsari
2024 J jnl
CoRR
Precious Jones, Weisi Liu, I-Chan Huang, Xiaolei Huang
2024 conf
*SEM@NAACL
Guangzeng Han, Jack Tsao, Xiaolei Huang
2024 J jnl
CoRR
Guangzeng Han, Jack Tsao, Xiaolei Huang
2024 J jnl
CoRR
Weisi Liu, Zhe He, Xiaolei Huang
2023 J jnl
Artif. Intell. Medicine
Jin-ah Sim, Xiaolei Huang, Madeline R. Horan, Christopher M. Stewart, Leslie L. Robison, Melissa M. Hudson, Justin N. Baker, I-Chan Huang
2023 conf
CHIL
Yuexin Wu, I-Chan Huang, Xiaolei Huang
2023 J jnl
CoRR
Yuexin Wu, I-Chan Huang, Xiaolei Huang
2022 A conf
CIKM
Yuexin Wu, Xiaolei Huang
2022 conf
NAACL-HLT
Xiaolei Huang
2022 J jnl
CoRR
Xiaolei Huang
2022 conf
CHIL
Xiaolei Huang, Franck Dernoncourt, Mark Dredze
2022 J jnl
CoRR
Xiaolei Huang, Franck Dernoncourt, Mark Dredze
2022 conf
HT
Xiaolei Huang, Alexandra Wormley, Adam Cohen
2022 J jnl
CoRR
Xiaolei Huang, Alexandra Wormley, Adam Cohen
2022 J jnl
Sensors
Brian Bogue-Jimenez, Xiaolei Huang, Douglas Powell, Ana Doblas
2022 conf
*SEM@NAACL-HLT
Yuexin Wu, Xiaolei Huang
2022 J jnl
CoRR
Yuexin Wu, Xiaolei Huang
2022 conf
WWW (Companion Volume)
Xiaolei Huang, Lucie Flek, Franck Dernoncourt, Charles Welch, Silvio Amir, Ramit Sawhney, Diyi Yang
2021 J jnl
CoRR
Xiaolei Huang, Michael J. Paul, Robin Burke, Franck Dernoncourt, Mark Dredze
2020 B conf
LREC
Xiaolei Huang, Linzi Xing, Franck Dernoncourt, Michael J. Paul
2020 J jnl
CoRR
Xiaolei Huang, Linzi Xing, Franck Dernoncourt, Michael J. Paul
2020 J jnl
CoRR
David A. Broniatowski, Daniel Kerchner, Fouzia Farooq, Xiaolei Huang, Amelia M. Jamison, Mark Dredze, Sandra Crouse Quinn
2019 conf
ACL (1)
Xiaolei Huang, Michael J. Paul
2019 conf
*SEM@NAACL-HLT
Xiaolei Huang, Michael J. Paul
2019 conf
UbiComp/ISWC Adjunct
Hyoyoung Lim, Xiaolei Huang, Samuel Miller, Joshua Edelmann, Timothy Euken, Stephen Voida
2019 conf
EMNLP/IJCNLP (1)
Xiaolei Huang, Jonathan May, Nanyun Peng
2019 J jnl
CoRR
Xiaolei Huang, Jonathan May, Nanyun Peng
2018 conf
ACL (2)
Xiaolei Huang, Michael J. Paul
2018 A* conf
EMNLP
Xiaolei Huang, Lixing Liu, Kate B. Carey, Joshua Woolley, Stefan Scherer, Brian Borsari
2017 conf
AAAI Workshops
Xiaolei Huang, Michael C. Smith, Michael J. Paul, Dmytro Ryzhkov, Sandra Crouse Quinn, David A. Broniatowski, Mark Dredze
2017 conf
ICHI
Xiaolei Huang, Linzi Xing, Jed R. Brubaker, Michael J. Paul
2015 C conf
PACLIC
Xiaolei Huang, Xin Li, Tianli Liu, David Chiu, Tingshao Zhu, Lei Zhang
2014 conf
UIC/ATC/ScalCom
Xiaolei Huang, Lei Zhang, David Chiu, Tianli Liu, Xin Li, Tingshao Zhu
2014 J jnl
CoRR
Xiaolei Huang, Lei Zhang, Tianli Liu, David Chiu, Tingshao Zhu, Xin Li
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