Haiying Hu

15 papers A* 1B 2C 1Journal 6Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Internet Things J.
Gaosai Liu, Xinglong Jiang, Jinyu Liu, Siyue Sun, Guang Liang, Haiying Hu
2025 conf
ICC Workshops
Zhihao Chen, Feng Tian, Yanchun Zhao, Wenqian Wang, Youlong Wu, Haiying Hu
2025 B conf
SMC
Gaosai Liu, Xinglong Jiang, Chunxin Mu, Siyue Sun, Jinyu Liu, Guang Liang, Haiying Hu
2025 B conf
WCNC
Jinyu Liu, Xinglong Jiang, Gaosai Liu, Yimeng Luo, Haiying Hu, Guang Liang
2025 C conf
ISNCC
Gaosai Liu, Xinglong Jiang, Hongming Hu, Siyue Sun, Guang Liang, Haiying Hu, Chunxin Mu
2024 conf
GLOBECOM (Workshops)
Feng Tian, Wenqian Wang, Haiying Hu, Youlong Wu, Xingqiu He, Yue Gao
2023 J jnl
Multim. Tools Appl.
Haiying Hu, Yinghong Cao, Jin Hao, Xuejun Li, Jun Mou
2021 J jnl
IEEE Access
Haiying Hu, Yinghong Cao, Ji Xu, Chenguang Ma, Huizhen Yan
2021 conf
I2MTC
Yuanyuan Dai, Yang Liu, Shunjing Yu, Haiying Hu, Zongde Li, Haichen Wu
2020 conf
I2MTC
Yang Liu, Shunjing Yu, Haiying Hu, Zongde Li, Yuanyuan Dai, Xiaofeng Zhang
2019 J jnl
IEEE Access
Zhenyang Hui, Shuanggen Jin, Penggen Cheng, Yao Ziggah Yevenyo, Leyang Wang, Yuqian Wang, Haiying Hu, Youjian Hu
2019 J jnl
IEEE Access
Rui Li, Xiufang Jia, Min Hu, Man Zhou, Dengshan Li, Wancai Liu, Rujing Wang, Jie Zhang, Chengjun Xie, Liu Liu, Fangyuan Wang, Hongbo Chen, Tianjiao Chen, Haiying Hu
2015 conf
ICSI (1)
Tinghao Feng, Qilian Xie, Haiying Hu, Liangtu Song, Chaoyuan Cui, Xiaoming Zhang
2013 J jnl
Int. J. Granul. Comput. Rough Sets Intell. Syst.
Xiufang Jia, Liangtu Song, Wei Li, Haiying Hu
2004 A* conf
ICRA
Haiying Hu, Xiaohui Gao, Jiawei Li, Jie Wang, Hong Liu
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())