Chang-Duo Liang

23 papers B 1Journal 22
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Veh. Technol.
Kai-Lun Huang, Chang-Duo Liang, Xisheng Zhan, Tao Han, Le Yan, Ming-Feng Ge
2026 J jnl
IEEE Internet Things J.
Chang-Duo Liang, Kai-Lun Huang, Xi-Sheng Zhan, Tao Han, Qian Chen, Ming-Feng Ge
2025 B conf
CEC
Cong Li, Le Yan, Haoyu Zhang, Weiguo Sheng, Haibo Gao, Chang-Duo Liang
2025 J jnl
J. Frankl. Inst.
Jia-Du Zhang, Tao Han, Bo Xiao, Xisheng Zhan, Chang-Duo Liang
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Zhi-Wei Gu, Qian Chen
2024 J jnl
IEEE Access
Kai-Lun Huang, Chang-Duo Liang, Qing-Jia Zhao, Xionghua Liu, Ming-Feng Ge
2024 J jnl
IEEE Trans. Fuzzy Syst.
Jia-Du Zhang, Tao Han, Bo Xiao, Chang-Duo Liang, Huaicheng Yan
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Si-Sheng Liu, Ming-Feng Ge, Teng-Fei Ding, Zhi-Wei Liu, Xiao-Gang Dong, Chang-Duo Liang
2023 J jnl
IEEE Trans. Veh. Technol.
Teng-Fei Ding, Kun-Ting Xu, Ming-Feng Ge, Ju H. Park, Chang-Duo Liang
2023 J jnl
IEEE Trans. Fuzzy Syst.
Ming-Feng Ge, Jiu-Wang Dong, Zhi-Wei Liu, Huaicheng Yan, Chang-Duo Liang, Kun-Ting Xu
2023 J jnl
IEEE Trans. Intell. Veh.
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Leimin Wang, Ju H. Park
2022 J jnl
J. Frankl. Inst.
Qiu-Yue Zhang, Ming-Feng Ge, Chang-Duo Liang, Teng-Fei Ding, Ju H. Park
2022 J jnl
Int. J. Control
Jiu-Wang Dong, Chang-Duo Liang, Ming-Feng Ge, Teng-Fei Ding, Xiao-Wen Zhao, Zhi-Wei Liu
2022 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Yan-Wu Wang, Bo Li
2022 J jnl
IEEE Trans. Fuzzy Syst.
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Xisheng Zhan, Ju H. Park
2022 J jnl
IEEE Trans. Veh. Technol.
Chang-Duo Liang, Ming-Feng Ge, Jing-Zhe Xu, Zhi-Wei Liu, Feng Liu
2021 J jnl
Neurocomputing
Juanjuan He, Hui Chen, Ming-Feng Ge, Teng-Fei Ding, Leimin Wang, Chang-Duo Liang
2021 J jnl
IEEE Trans. Cybern.
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Yan-Wu Wang, Hamid Reza Karimi
2021 J jnl
Complex.
Peng Su, Jinqiang Gan, Teng-Fei Ding, Chang-Duo Liang, Ming-Feng Ge
2020 J jnl
Neurocomputing
Juanjuan He, Ya-Qi Lin, Ming-Feng Ge, Chang-Duo Liang, Teng-Fei Ding, Leimin Wang
2020 J jnl
Complex.
Ming-Feng Ge, Chang-Duo Liang, Xisheng Zhan, Chao-Yang Chen, Guanghui Xu, Jie Chen
2020 J jnl
IEEE Access
Kai-Bo Zhou, Xiao-Kang Wu, Ming-Feng Ge, Chang-Duo Liang, Bingliang Hu
2020 J jnl
CoRR
Chang-Duo Liang, Ming-Feng Ge, Zhi-Wei Liu, Yan-Wu Wang, Hamid Reza Karimi
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())