Na Liu

49 papers C 5Misc 1Journal 17Unranked 26
YearRankTypeTitle / Venue / Authors
2026 conf
HICSS
Joyce Chu, Na Liu, Manoj A. Thomas, Cokorda Rai Adi Pramartha, Cokorda Bagus Jaya Lesmana, Putu Aryani
2026 J jnl
Internet Res.
Zimeng Zhu, Carol Hsu, Fiona Fui-Hoon Nah, Na Liu
2025 conf
ACIS
Cokorda Pramartha, Cokorda Bagus Jaya Lesmana, Na Liu, Manoj A. Thomas, Putu Aryani, Joyce Chu
2025 C conf
ICIS
Cintya Alvytri, Joyce Chu, Na Liu, Manoj A. Thomas, Putu Aryani, Cokorda Rai, Cokorda Bagus
2025 J jnl
Decis. Support Syst.
Yi Wu, Leping Xiao, Zhongtao Hu, Na Liu, Nan Feng
2025 conf
ACIS
Mingyue Guo, Na Liu
2025 conf
ACIS
Na Liu, Yanping Guo, Xiaomin Liu, Chaofan Yang, Bingqing Xiong, Mengyao Fu
2024 J jnl
IEEE Trans. Engineering Management
Yi Wu, Miao Zhang, Yi Shen, Na Liu, Yuelei Li
2024 J jnl
IEEE Trans. Engineering Management
Yi Wu, Hang Jin, Xiaopan Wang, Na Liu
2024 C conf
ICIS
Na Liu, Julian Prester, Jinman Kim
2024 C conf
ICIS
Mingyue Guo, Na Liu, Julian Prester
2023 conf
PACIS
Mingyue Guo, Na Liu, Julian Prester
2023 conf
MedInfo
Sayan Mitra, Cynthia M. Kroeger, Tian Wang, Andrius Masedunskas, Sophie A. Cassidy, Robin Huang, Luigi Fontana, Na Liu
2023 conf
HICSS
Ye Cai, Na Liu, Robin Huang, Kamal Sud, Jinman Kim
2021 J jnl
Inf. Manag.
Na Liu, Robert J. Kauffman
2021 J jnl
J. Am. Medical Informatics Assoc.
Na Liu, Jiamin Yin, Sharon Swee-Lin Tan, Kee Yuan Ngiam, Hock-Hai Teo
2021 J jnl
Inf. Manag.
Junpeng Guo, Na Liu, Yi Wu, Chunxin Zhang
2020 conf
ACIS
Zhanpeng Tang, Robin Huang, Na Liu, Jinman Kim
2020 J jnl
Inf. Manag.
Na Liu, Yu Tong, Hock Chuan Chan
2020 J jnl
Internet Res.
Xiaopan Wang, Junpeng Guo, Yi Wu, Na Liu
2020 J jnl
J. Am. Medical Informatics Assoc.
Robin Huang, Na Liu, Mary Ann Nicdao, Mary Mikaheal, Tanya Baldacchino, Annabelle Albeos, Kathy Petoumenos, Kamal Sud, Jinman Kim
2020 conf
PACIS
Na Liu, Jiamin Yin, Monpetcharee Wongmaneeroj, Hock-Hai Teo
2019 conf
PACIS
Yanxiao Li, Kevin K. Y. Kuan, Na Liu
2019 conf
PACIS
Na Liu, Kevin K. Y. Kuan, Liyao Dong
2018 J jnl
Internet Res.
Yi Wu, Tingru Cui, Na Liu, Yimeng Deng, Junpeng Guo
2018 J jnl
Future Gener. Comput. Syst.
Junpeng Guo, Zeng Gao, Na Liu, Yi Wu
2018 conf
PACIS
Na Liu, Kevin K. Y. Kuan, Tingru Cui, Yi Wu
2018 conf
PACIS
Na Liu, Sandeep Purao, Himika Tozato
2017 conf
ICSH
Binay Siddharth, Lyndal J. Trevena, Na Liu
2017 J jnl
Int. J. Inf. Manag.
Xue Yang, Na Liu, Hock-Hai Teo
2017 J jnl
IEEE Trans. Engineering Management
Na Liu, Yu Tong, Hock Chuan Chan
2017 conf
ACIS
Tingru Cui, Na Liu
2016 conf
PACIS
Kevin K. Y. Kuan, Jessica Smith, Na Liu, Simon K. Poon
2016 conf
PACIS
Na Liu, Sandeep Purao, Hwee-Pink Tan
2016 conf
PerCom Workshops
Na Liu, Sandeep Purao, Hwee Pink Tan
2015 conf
ISC2
Liming Bai, Alex Ishiwata Gavino, Pius W. Q. Lee, Jungyoon Kim, Na Liu, Hwee Pink Tan, Hwee-Xian Tan, Tan Lee Buay, Xiaoping Toh, Alvin C. Valera, Elina Yu Jia, Alfred Wu, Mark S. Fox
2014 conf
DG.O
Na Liu, Alex Gavino, Sandeep Purao
2014 Misc conf
AMIA
Alex Gavino, Na Liu, Deepa Rengarajan, Kharel John Rebada, Liming Bai, Eugene Shum, Alfred Wu
2013 J jnl
J. Glob. Inf. Manag.
Na Liu, Xue Yang, Hock Chuan Chan
2011 C conf
ICIS
Na Liu, Hock Chuan Chan
2011 J jnl
Int. J. E Politics
Elizabeth Koh, Na Liu, John Lim
2010 C conf
ICIS
Na Liu, Hock Chuan Chan
2009 conf
HICSS
Na Liu, Cheng Yi, John Lim
2009 conf
HCI (9)
Na Liu, Yingqin Zhong, John Lim
2009 conf
HCI (14)
Yingqin Zhong, Na Liu, John Lim
2009 J jnl
IEEE Trans. Engineering Management
Yee-Lin Lai, Kevin K. Y. Kuan, Kai Lung Hui, Na Liu
2008 conf
Open IT-Based Innovation
Yingqin Zhong, Na Liu, John Lim
2007 conf
PACIS
Na Liu, John Lim, Yingqin Zhong
2007 conf
PACIS
Yee-Lin Lai, Kai Lung Hui, Na Liu
redb/extractors/decompiler/bninja/similarity/minhasher.py
← Index redb/extractors/decompiler/bninja/similarity/minhasher.py python
import logging
import random
from enum import Enum

from ..analysis.medium_level_normalization import MediumLevelNormalization

try:
    from .minhashcustom import MinHashCustom
    from ..analysis.low_level_normalization import LowLevelNormalization
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.similarity.minhashcustom import MinHashCustom
    from redb.extractors.decompiler.bninja.analysis.low_level_normalization import LowLevelNormalization

## Values for this configuration were extracted from https://github.com/danielplohmann/mcrit/blob/main/mcrit/config/MinHashConfig.py#L10
# Length in number of Shingles of which a minhash consists
# this value represents the length of sha256sum hash truncated
MINHASH_SIGNATURE_LENGTH: int = 64
# Number of bits per signature element (1-32 bits)
MINHASH_SIGNATURE_BITS: int = 8


class TokenKind(Enum):
    LLIL = "llil"
    TYPED_LLIL = "typed_llil"
    MLIL = "mlil"
    TYPED_MLIL = "typed_mlil"


class MinHasher:
    # stick to the default method
    MINHASH_STRATEGY_HASH_ALL = 1

    def __init__(self, seed, il_function, kind: TokenKind = TokenKind.LLIL):
        self._minhash_seeds = []
        self.il_func = il_function
        self.kind = kind
        self._minhash_permutation = []
        self._signature_segments = []
        self._initMinhashing(seed)

    def _initMinhashing(self, MINHASH_SEED=None):
        random.seed(MINHASH_SEED)
        # init sequence of seeds
        self._minhash_seeds = [
            random.randint(0, MinHashCustom.getHashMax()) for _ in range(MINHASH_SIGNATURE_LENGTH)
        ]

    def make_ngrams(self, tokens, n=3):
        """Take the ngrams of the IL we try to pass into the functions"""
        return [tuple(tokens[i:i+n]) for i in range(len(tokens) - n + 1)]

    def _extract_tokens(self):
        """Extract the IL tokens from the IL function, picking the right
        normalizer (LLIL/MLIL) and the right normalization mode
        (skeleton/typed) based on self.kind."""
        if self.kind in (TokenKind.LLIL, TokenKind.TYPED_LLIL):
            normalizer = LowLevelNormalization()
        elif self.kind in (TokenKind.MLIL, TokenKind.TYPED_MLIL):
            normalizer = MediumLevelNormalization()
        else:
            raise ValueError(f"Unsupported token kind: {self.kind}")

        # typed variants include operand type info, skeleton variants don't
        if self.kind in (TokenKind.TYPED_LLIL, TokenKind.TYPED_MLIL):
            normalize = normalizer.normalize_instr_with_operands
        else:
            normalize = normalizer.normalize_instruction_all_levels

        instructions = []
        for basic_block in self.il_func.basic_blocks:
            for il in basic_block:
                instructions.append(normalize(il))

        return instructions

    def calculateMinHash(self):
        """Calculate hash function every time, then take minimum shingle per shingler"""
        minhash_result = MinHashCustom(minhash_bits=MINHASH_SIGNATURE_BITS)
        minhash_signature = []

        tokens = self._extract_tokens()
        shingles = self.make_ngrams(tokens, n=3)

        # Functions with fewer than 3 IL instructions can't produce n-grams
        # Return empty minhash for such small functions (thunks, stubs, etc.)
        # Triggered by 39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a
        if not shingles:
            return []

        # Generate the MinHash
        for seed in self._minhash_seeds:
            hashed_shingles = [
                self.shingle_hash(shingle, seed) for shingle in shingles
            ]
            min_value = min(hashed_shingles)

            if MINHASH_SIGNATURE_BITS < 32:
                min_value %= (2 ** MINHASH_SIGNATURE_BITS)

            minhash_signature.append(min_value)

        minhash_result.setMinHash(minhash_signature)
        return minhash_result.getMinHashInt()

    def shingle_hash(self, shingle, hash_seed=0):
        """Produce a single 32bit UINT hash for a given shingle"""
        return MinHashCustom.hashData(shingle, hash_seed)