Kangcheng Wang

13 papers B 1Journal 4Unranked 8
YearRankTypeTitle / Venue / Authors
2025 conf
CHI Extended Abstracts
Xingran Ruan, Aurora Constantin, Charaka Palansuriya, Kangcheng Wang, Malcolm P. Atkinson
2024 conf
ASCC
Peng Bai, Kangcheng Wang, Yun-Bo Zhao, Yu Kang, Wenhao Fang
2024 conf
CHI PLAY (Companion)
Xingran Ruan, Kangcheng Wang, Charaka Palansuriya, Aurora Constantin
2024 J jnl
J. Syst. Sci. Complex.
Peng Bai, Yu Kang, Kangcheng Wang, Yunbo Zhao, Shaojie Dong
2024 conf
ASCC
Yunbo Zhao, Shaojie Dong, Yu Kang, Kangcheng Wang, Longxin Chen, Peng Bai
2022 J jnl
Proc. VLDB Endow.
Changji Li, Hongzhi Chen, Shuai Zhang, Yingqian Hu, Chao Chen, Zhenjie Zhang, Meng Li, Xiangchen Li, Dongqing Han, Xiaohui Chen, Xudong Wang, Huiming Zhu, Xuwei Fu, Tingwei Wu, Hongfei Tan, Hengtian Ding, Mengjin Liu, Kangcheng Wang, Ting Ye, Lei Li, Xin Li, Yu Wang, Chenguang Zheng, Hao Yang, James Cheng
2020 J jnl
Neuroinformatics
Mingliang Wang, Xiaoke Hao, Jiashuang Huang, Kangcheng Wang, Li Shen, Xijia Xu, Daoqiang Zhang, Mingxia Liu
2019 conf
CASE
Kangcheng Wang, Chao Shang, Fan Yang, Yongheng Jiang, Dexian Huang
2018 conf
FSDM
Lei Liu, Kangcheng Wang, Chao Shang, Fan Yang, Wenxiang Lyu, Dexian Huang
2017 B conf
SMC
Kangcheng Wang, Chao Shang, Fan Yang, Yongheng Jiang, Dexian Huang
2017 conf
MICCAI (3)
Mingliang Wang, Xiaoke Hao, Jiashuang Huang, Kangcheng Wang, Xijia Xu, Daoqiang Zhang
2016 J jnl
NeuroImage
Xue Tian, Dongtao Wei, Xue Du, Kangcheng Wang, Junyi Yang, Wei Liu, Jie Meng, Huijuan Liu, Guangyuan Liu, Jiang Qiu
2014 conf
BDCloud
Yagang Zhang, Jingyun Yang, Kangcheng Wang, Zheng Zhao, Jinkang Liu, Yinding Wang
redb/extractors/decompiler/bninja/analysis/strings.py
← Index redb/extractors/decompiler/bninja/analysis/strings.py python
from collections import Counter
import math

class StringAnalysis:
    def __init__(self, bv, functions):
        self.bv = bv
        self.functions = functions

    def entropy(self, s: str) -> float:
        """Compute Shannon entropy of a string."""
        if not s:
            return 0.0
        freq = Counter(s)
        length = len(s)
        return -sum((count / length) * math.log2(count / length) for count in freq.values())

    def analyze(self):
        """
        Extract unique strings from the binary.

        Deduplicates by (string, encoding) within the same binary, keeping the
        first occurrence (lowest offset). Cross-binary deduplication and
        aggregation is handled by ClickHouse materialized views.
        """
        strings = {}

        # Sort strings by their starting address
        sorted_entries = sorted(self.bv.strings, key=lambda e: e.start)

        for entry in sorted_entries:
            # Key is the string and its encoding
            key = (entry.value, entry.type.name)

            # Skip if this string (value + encoding) was already added.
            # Because entries are sorted by address, the first one is always kept.
            if key in strings:
                continue

            # Store only the first occurrence with schema-matching field names
            # entry.length is the raw byte length, len(entry.value) is decoded string length
            string_entry = {
                "string": entry.value,
                "string_raw": entry.raw,
                "string_encoding": entry.type.name,
                "string_offset": entry.start,
                "string_length": len(entry.value),
                "string_raw_length": entry.length,
                "string_entropy": self.entropy(entry.value),
            }

            strings[key] = string_entry

        # Return as list for export compatibility
        return list(strings.values())