Haiwen Cao

13 papers B 3Journal 9Unranked 1
YearRankTypeTitle / Venue / Authors
2025 B conf
ISIT
Chin Wa Ken Lau, Xiang Shi, Ziyan Zheng, Haiwen Cao, Nian Guo
2025 J jnl
CoRR
Chin Wa Lau, Xiang Shi, Ziyan Zheng, Haiwen Cao, Nian Guo
2023 J jnl
IEEE Commun. Lett.
Haiwen Cao, Jiongyue Xing, Shansuo Liang
2023 J jnl
Signal Image Video Process.
Haiwen Cao, Chunlei Wu, Jing Lu, Jie Wu, Leiquan Wang
2022 B conf
ITW
Haiwen Cao, Pascal O. Vontobel
2021 J jnl
Neurocomputing
Chunlei Wu, Jie Wu, Haiwen Cao, Yiwei Wei, Leiquan Wang
2021 J jnl
IEEE Trans. Commun.
Haiwen Cao, Pascal O. Vontobel
2020 J jnl
IEEE Access
Chunlei Wu, Shaozu Yuan, Haiwen Cao, Yiwei Wei, Leiquan Wang
2020 J jnl
Neurocomputing
Yiwei Wei, Leiquan Wang, Haiwen Cao, Mingwen Shao, Chunlei Wu
2020 B conf
ITW
Haiwen Cao, Pascal O. Vontobel
2020 J jnl
CoRR
Haiwen Cao, Pascal O. Vontobel
2019 J jnl
IEEE Access
Chunlei Wu, Haiwen Cao, Weishan Zhang, Leiquan Wang, Yiwei Wei, Zexin Peng
2018 conf
ICC
Shan Qu, Yu Liu, Jinbei Zhang, Haiwen Cao, Xinbing Wang
redb/extractors/decompiler/bninja/function_type.py
← Index redb/extractors/decompiler/bninja/function_type.py python
from enum import Enum

import binaryninja


class FunctionType(Enum):
    USER = "USER"
    LIBRARY = "LIBRARY"
    EXTERNAL = "EXTERNAL"
    THUNK = "THUNK"
    UNKNOWN = "UNKNOWN"


class FunctionTypeAnalysis:
    """Get the function kind based on the symbol type associated to this function"""

    def __init__(self, function):
        """Sets the function type dependent on the symbol type associated to this function. If
        any errors occur, then returns UNKNOWN
        """
        self.func_type = FunctionType.USER

        try:
            symbol_type = function.symbol.type
            # Check if it's an external function (there should not be, already skipping these)
            if symbol_type == binaryninja.enums.SymbolType.ImportedFunctionSymbol:
                self.func_type = FunctionType.EXTERNAL

            # Library functions detected by Binary Ninja
            if symbol_type == binaryninja.enums.SymbolType.LibraryFunctionSymbol:
                self.func_type = FunctionType.LIBRARY

            # Check if it's a thunk function
            if function.is_thunk:
                self.func_type = FunctionType.THUNK

        except Exception as _:
            self.func_type = FunctionType.UNKNOWN

    def get_function_type(self):
        return self.func_type