Weiming Wang

45 papers A* 1Journal 43Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Robotics
Yingjun Tian, Guoxin Fang, Renbo Su, Aoran Lyu, Neelotpal Dutta, Weiming Wang, Simeon Gill, Andrew Weightman, Charlie C. L. Wang
2026 J jnl
Robotics Comput. Integr. Manuf.
Yuming Huang, Renbo Su, Kun Qian, Tianyu Zhang, Yongxue Chen, Tao Liu, Guoxin Fang, Weiming Wang, Charlie C. L. Wang
2026 J jnl
CoRR
Yingjun Tian, Guoxin Fang, Aoran Lyu, Xilong Wang, Zikang Shi, Yuhu Guo, Weiming Wang, Charlie C. L. Wang
2026 J jnl
IEEE Trans. Robotics
Yingjun Tian, Guoxin Fang, Aoran Lyu, Xilong Wang, Zikang Shi, Yuhu Guo, Weiming Wang, Charlie C. L. Wang
2025 J jnl
ACM Trans. Graph.
Yongxue Chen, Tao Liu, Yuming Huang, Weiming Wang, Tianyu Zhang, Kun Qian, Zikang Shi, Charlie C. L. Wang
2025 J jnl
CoRR
Yongxue Chen, Tao Liu, Yuming Huang, Weiming Wang, Tianyu Zhang, Kun Qian, Zikang Shi, Charlie C. L. Wang
2025 J jnl
CoRR
Tao Liu, Tianyu Zhang, Yongxue Chen, Weiming Wang, Yu Jiang, Yuming Huang, Charlie C. L. Wang
2025 J jnl
ACM Trans. Graph.
Tao Liu, Tianyu Zhang, Yongxue Chen, Weiming Wang, Yu Jiang, Yuming Huang, Charlie C. L. Wang
2024 J jnl
Expert Syst. Appl.
Bo Li, Xiaolin Wei, Bin Liu, Weiming Wang, Zhi-Fen He, Yu-Kun Lai
2024 conf
Robotics: Science and Systems
Yingjun Tian, Guoxin Fang, Renbo Su, Weiming Wang, Simeon Gill, Andrew Weightman, Charlie C. L. Wang
2024 J jnl
CoRR
Yingjun Tian, Guoxin Fang, Renbo Su, Weiming Wang, Simeon Gill, Andrew Weightman, Charlie C. L. Wang
2024 J jnl
IEEE Trans. Veh. Technol.
Weiming Wang, Qi Li, Baojun Li, Xiuping Liu
2024 J jnl
CoRR
Yuming Huang, Yuhu Guo, Renbo Su, Xingjian Han, Junhao Ding, Tianyu Zhang, Tao Liu, Weiming Wang, Guoxin Fang, Xu Song, Emily Whiting, Charlie C. L. Wang
2024 J jnl
ACM Trans. Graph.
Yuming Huang, Yuhu Guo, Renbo Su, Xingjian Han, Junhao Ding, Tianyu Zhang, Tao Liu, Weiming Wang, Guoxin Fang, Xu Song, Emily Whiting, Charlie Wang
2024 A* conf
SIGGRAPH Asia
Xingjian Han, Yu Jiang, Weiming Wang, Guoxin Fang, Simeon Gill, Zhiqiang Zhang, Shengfa Wang, Jun Saito, Deepak Kumar, Zhongxuan Luo, Emily Whiting, Charlie C. L. Wang
2024 J jnl
CoRR
Xingjian Han, Yu Jiang, Weiming Wang, Guoxin Fang, Simeon Gill, Zhiqiang Zhang, Shengfa Wang, Jun Saito, Deepak Kumar, Zhongxuan Luo, Emily Whiting, Charlie C. L. Wang
2024 J jnl
Adv. Eng. Softw.
Wenpeng Xu, Hao Xu, Qiuge Li, Peng Zhang, Li Yang, Weiming Wang
2024 J jnl
CoRR
Tianyu Zhang, Tao Liu, Neelotpal Dutta, Yongxue Chen, Renbo Su, Zhizhou Zhang, Weiming Wang, Charlie C. L. Wang
2024 J jnl
IEEE Trans. Vis. Comput. Graph.
Wenpeng Xu, Peng Zhang, Menglin Yu, Li Yang, Weiming Wang, Ligang Liu
2023 J jnl
Comput. Aided Des.
Bin Liu, Bo Li, Junjie Cao, Weiming Wang, Xiuping Liu
2023 J jnl
Sensors
Jinming Luo, Lei Han, Xianjie Gao, Xiuping Liu, Weiming Wang
2023 J jnl
Adv. Eng. Softw.
Yi Liu, Peng Zhang, Hang-Cheng Zhang, Weiming Wang, Tianqi Song, Xin Yan, Wei Zeng, Yi-Jun Yang
2022 J jnl
IEEE Trans. Vis. Comput. Graph.
Wenpeng Xu, Yi Liu, Menglin Yu, DongXiao Wang, Shouming Hou, Bo Li, Weiming Wang, Ligang Liu
2022 J jnl
Vis. Comput.
Xiuping Liu, Hua Huang, Weiming Wang, Jun Zhou
2021 J jnl
IEEE Trans. Vis. Comput. Graph.
Jun Wu, Weiming Wang, Xifeng Gao
2021 J jnl
Sensors
Bin Liu, Weiming Wang, Jun Zhou, Bo Li, Xiuping Liu
2021 J jnl
CoRR
Shengjun Liu, Tao Liu, Qiang Zou, Weiming Wang, Eugeni L. Doubrovski, Charlie C. L. Wang
2021 J jnl
J. Comput. Inf. Sci. Eng.
Shengjun Liu, Tao Liu, Qiang Zou, Weiming Wang, Eugeni L. Doubrovski, Charlie C. L. Wang
2020 J jnl
Comput. Aided Des.
Zheng Liu, Weina Wang, Saishang Zhong, Bohong Zeng, Jinqin Liu, Weiming Wang
2020 J jnl
IEEE Access
Weiming Wang, Hanliu Shao, Xiuping Liu, Baocai Yin
2019 J jnl
CoRR
Jun Wu, Weiming Wang, Xifeng Gao
2018 J jnl
J. Comput. Appl. Math.
Jun Zhou, Weiming Wang, Jie Zhang, Baocai Yin, Xiuping Liu
2018 J jnl
Comput. Aided Des.
Jun Zhou, Xiuping Liu, Junjie Cao, Weiming Wang, Baocai Yin
2018 J jnl
Graph. Model.
Xiuping Liu, Liping Lin, Jun Wu, Weiming Wang, Baocai Yin, Charlie C. L. Wang
2018 J jnl
Comput. Graph.
Bin Liu, Junjie Cao, Weiming Wang, Ning Ma, Bo Li, Ligang Liu, Xiuping Liu
2018 J jnl
IEEE Trans. Vis. Comput. Graph.
Weiming Wang, Yong-Jin Liu, Jun Wu, Shengjing Tian, Charlie C. L. Wang, Ligang Liu, Xiuping Liu
2017 J jnl
Vis. Comput.
Weiming Wang, Baojun Li, Sicheng Qian, Yong-Jin Liu, Charlie C. L. Wang, Ligang Liu, Baocai Yin, Xiuping Liu
2017 J jnl
Commun. Inf. Syst.
Bin Liu, Weiming Wang, Junjie Cao, Xiuping Liu
2017 J jnl
Mach. Vis. Appl.
Junjie Cao, Jun Zhou, Xiuping Liu, Weiming Wang, Pingping Tao, Jun Wang
2017 J jnl
Comput. Graph.
Weiming Wang, Sicheng Qian, Liping Lin, Baojun Li, Baocai Yin, Ligang Liu, Xiuping Liu
2016 J jnl
J. Electronic Imaging
Xiuping Liu, Bin Liu, Meng Liu, Weiming Wang, Zhiling Yu
2016 J jnl
Comput. Graph. Forum
Weiming Wang, Cédric Zanni, Leif Kobbelt
2015 J jnl
Comput. Graph. Forum
Weiming Wang, Haiyuan Chao, Jing Tong, Zhouwang Yang, Xin Tong, Hang Li, Xiuping Liu, Ligang Liu
2014 J jnl
J. Zhejiang Univ. Sci. C
Zheng Liu, Weiming Wang, Xiuping Liu, Ligang Liu
2013 J jnl
ACM Trans. Graph.
Weiming Wang, Tuanfeng Y. Wang, Zhouwang Yang, Ligang Liu, Xin Tong, Weihua Tong, Jiansong Deng, Falai Chen, Xiuping 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)