Caoyun Fan

21 papers A* 5B 1Misc 2Journal 11Unranked 2
YearRankTypeTitle / Venue / Authors
2025 J jnl
Comput. Hum. Behav. Artif. Humans
Tengfei Yu, Siyu Pan, Caoyun Fan, Siyang Luo, Yaohui Jin, Binglei Zhao
2024 A* conf
AAAI
Caoyun Fan, Jindou Chen, Yaohui Jin, Hao He
2024 Misc conf
ICASSP
Caoyun Fan, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2024 J jnl
Expert Syst. Appl.
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 J jnl
Appl. Intell.
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Jindou Chen, Yaohui Jin, Hao He
2023 A* conf
EMNLP
Caoyun Fan, Jidong Tian, Yitian Li, Wenqing Chen, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Jidong Tian, Yitian Li, Wenqing Chen, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 Misc conf
ICASSP
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 A* conf
AAAI
Jidong Tian, Wenqing Chen, Yitian Li, Caoyun Fan, Hao He, Yaohui Jin
2023 conf
ACL (Findings)
Yitian Li, Jidong Tian, Caoyun Fan, Wenqing Chen, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2023 A* conf
AAAI
Wenqing Chen, Jidong Tian, Caoyun Fan, Yitian Li, Hao He, Yaohui Jin
2023 J jnl
CoRR
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2022 conf
ACCV (1)
Caoyun Fan, Wenqing Chen, Jidong Tian, Yitian Li, Hao He, Yaohui Jin
2022 B conf
COLING
Yitian Li, Jidong Tian, Wenqing Chen, Caoyun Fan, Hao He, Yaohui Jin
2021 A* conf
IJCAI
Wenqing Chen, Jidong Tian, Caoyun Fan, Hao He, Yaohui Jin
2021 J jnl
CoRR
Wenqing Chen, Jidong Tian, Caoyun Fan, Hao He, Yaohui Jin
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())