Man Jiang

42 papers A* 2B 3C 2Journal 29Unranked 6
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jiong Liu, Xiaoping Wang, Zhanfei Chen, Zhigang Zeng, Jingang Lai, Man Jiang
2025 J jnl
IEEE Trans. Emerg. Top. Comput. Intell.
Chunyan Diao, Dafang Zhang, Wei Liang, Man Jiang, Kuanching Li
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Jiansheng Wang, Mingwei Wei, Daqing Wang, Man Jiang, Lifu Gao
2025 J jnl
Inf. Res.
Man Jiang, Siluo Yang, Shuang Tao
2025 J jnl
IEEE Trans. Cogn. Dev. Syst.
Dongdong Xiong, Xiaoping Wang, Yiming Jiang, Chao Yang, Man Jiang, Jingang Lai, Zhigang Zeng
2025 A* conf
CVPR
Linke Ouyang, Yuan Qu, Hongbin Zhou, Jiawei Zhu, Rui Zhang, Qunshu Lin, Bin Wang, Zhiyuan Zhao, Man Jiang, Xiaomeng Zhao, Jin Shi, Fan Wu, Pei Chu, Minghao Liu, Zhenxiang Li, Chao Xu, Bo Zhang, Botian Shi, Zhongying Tu, Conghui He
2025 A* conf
AAAI
Qi Wu, Mingyan Han, Ting Jiang, Chengzhi Jiang, Jinting Luo, Man Jiang, Haoqiang Fan, Shuaicheng Liu
2025 J jnl
INFOR Inf. Syst. Oper. Res.
Rong Wu, Lin Zhu, Man Jiang
2024 B conf
CogSci
Man Jiang, Jianxiu Jin, Xubin Huang, Zirui Xiang, Lin Shu
2024 J jnl
Scientometrics
Qiang Gao, Man Jiang
2024 J jnl
J. Informetrics
Man Jiang, Siluo Yang, Qiang Gao
2024 J jnl
CoRR
Linke Ouyang, Yuan Qu, Hongbin Zhou, Jiawei Zhu, Rui Zhang, Qunshu Lin, Bin Wang, Zhiyuan Zhao, Man Jiang, Xiaomeng Zhao, Jin Shi, Fan Wu, Pei Chu, Minghao Liu, Zhenxiang Li, Chao Xu, Bo Zhang, Botian Shi, Zhongying Tu, Conghui He
2024 J jnl
IEEE Trans. Engineering Management
Xuejun Ding, Mengyu Li, Yong Tian, Man Jiang
2023 J jnl
J. Comput. Inf. Sci. Eng.
Yinqiang Deng, Long Liu, Mingyang Li, Man Jiang, Bo Peng, Yue Yang
2023 J jnl
Int. J. Comput. Vis. Robotics
Man Jiang, Shoulin Yin
2023 J jnl
Int. J. Swarm Intell. Res.
Shoulin Yin, Liguo Wang, Qunming Wang, Jinghui Yang, Man Jiang
2023 J jnl
Int. J. Data Warehous. Min.
Man Jiang, Qilong Han, Haitao Zhang, Hexiang Liu
2022 J jnl
Sensors
Xuhao Li, Lifu Gao, Huibin Cao, Yuxiang Sun, Man Jiang, Yue Zhang
2022 J jnl
J. Intell. Fuzzy Syst.
Man Jiang
2022 conf
SNAMS
Yuhang Zhang, Qian Zhang, Man Jiang, Jiangtao Su
2021 conf
ICCIR
Man Jiang, Nan Xiao
2021 J jnl
Sensors
Lihuan Huo, Rulong Bai, Man Jiang, Bing Chen, Jianfeng Chen, Penghui Huang, Guisheng Liao
2021 conf
ICA3PP (1)
Chunyan Diao, Dafang Zhang, Wei Liang, Kuan-Ching Li, Man Jiang
2021 conf
BIBM
Feng Kuang, Lin Shu, Haoqiang Hua, Shibin Wu, Lulu Zhang, Xiangmin Xu, Yunhe Liu, Man Jiang
2020 J jnl
IEEE Access
Haoxiang Zhang, Man Jiang, Qiqi Kou
2020 J jnl
IEEE Access
Wenchang Lai, Pengfei Ma, Wei Liu, Can Li, Rongtao Su, Yanxing Ma, Jian Wu, Man Jiang, Pu Zhou
2019 J jnl
Sci. China Inf. Sci.
Tao Wang, Xinyao Shi, Jin Wang, Yijun Xu, Jie Chen, Zhuo Dong, Man Jiang, Pengfei Ma, Rongtao Su, Yanxing Ma, Jian Wu, Kai Zhang, Pu Zhou
2017 J jnl
Remote. Sens.
Man Jiang, Weiwei Sun, Gang Yang, Dianfa Zhang
2016 J jnl
Remote. Sens.
Weiwei Sun, Man Jiang, Weiyue Li, Yinnian Liu
2016 conf
WPMC
Man Jiang, Chaowei Wang
2016 C conf
IGARSS
Man Jiang, Weiwei Sun
2016 C conf
IGARSS
Weiwei Sun, Man Jiang, Liangpei Zhang
2015 J jnl
J. Inf. Hiding Multim. Signal Process.
Hongfeng Zhu, Xin Hao, Yifeng Zhang, Man Jiang
2015 J jnl
IEEE Trans. Control. Syst. Technol.
Mifeng Ren, Jianhua Zhang, Man Jiang, Mei Yu, Jinliang Xu
2015 J jnl
J. Inf. Hiding Multim. Signal Process.
Hongfeng Zhu, Man Jiang, Xin Hao, Yan Zhang
2014 B conf
ICIP
Jun Wang, Yuehuan Wang, Man Jiang, Xiaoyun Yan
2014 J jnl
Entropy
Mifeng Ren, Di Wu, Jianhua Zhang, Man Jiang
2014 J jnl
J. Vis. Commun. Image Represent.
Jun Wang, Yuehuan Wang, Man Jiang, Xiaoyun Yan, Mengmeng Song
2014 B conf
ICIP
Xiaoyun Yan, Yuehuan Wang, Man Jiang, Jun Wang
2013 conf
ACPR
Xiaoyun Yan, Yuehuan Wang, Mengmeng Song, Man Jiang
2012 J jnl
Entropy
Mifeng Ren, Jianhua Zhang, Man Jiang, Ye Tian, Guolian Hou
2010 J jnl
Artif. Intell. Rev.
Zhao Zhang, Man Jiang, Ning Ye
tests/unit/test_decompile_strings.py
← Index tests/unit/test_decompile_strings.py python
"""Unit tests for bninja/analysis/strings.py — StringAnalysis."""
import pytest
import math
from unittest.mock import MagicMock


# StringAnalysis has no binaryninja imports, just collections and math
from redb.extractors.decompiler.bninja.analysis.strings import StringAnalysis


# ============================================================================
# Helper mocks
# ============================================================================

class MockStringEntry:
    """Mock for a Binary Ninja string reference."""
    def __init__(self, value, raw=None, start=0, length=0, type_name="Utf8String"):
        self.value = value
        self.raw = raw if raw is not None else (value.encode("utf-8") if isinstance(value, str) else value)
        self.start = start
        self.length = length if length else len(self.raw)
        self.type = MagicMock()
        self.type.name = type_name


class MockBinaryView:
    """Mock binary view with a strings list."""
    def __init__(self, strings=None):
        self.strings = strings or []


# ============================================================================
# 6a. StringAnalysis
# ============================================================================


class TestStringAnalysisEntropy:
    def setup_method(self):
        self.sa = StringAnalysis(bv=MockBinaryView(), functions=[])

    def test_entropy_empty_string(self):
        assert self.sa.entropy("") == 0.0

    def test_entropy_single_char(self):
        assert self.sa.entropy("aaaa") == 0.0

    def test_entropy_uniform_distribution(self):
        # "abcd" -> 4 unique chars, each p=1/4, entropy = log2(4) = 2.0
        result = self.sa.entropy("abcd")
        assert result == pytest.approx(2.0)

    def test_entropy_binary_string(self):
        # "ab" -> 2 unique chars, each p=1/2, entropy = log2(2) = 1.0
        result = self.sa.entropy("ab")
        assert result == pytest.approx(1.0)


class TestStringAnalysisAnalyze:
    def test_analyze_deduplication(self):
        """Duplicate (string, encoding) pairs -> only first kept."""
        entries = [
            MockStringEntry("hello", start=100, type_name="Utf8String"),
            MockStringEntry("hello", start=200, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        assert result[0]["string_offset"] == 100

    def test_analyze_sorted_by_address(self):
        """First occurrence (lowest offset) is the one kept."""
        entries = [
            MockStringEntry("world", start=500, type_name="Utf8String"),
            MockStringEntry("world", start=100, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        # The analyze() sorts by start, so 100 comes first
        assert result[0]["string_offset"] == 100

    def test_analyze_empty_bv(self):
        bv = MockBinaryView(strings=[])
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert result == []

    def test_analyze_output_schema(self):
        entries = [MockStringEntry("test_string", start=0, type_name="Utf8String")]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        r = result[0]
        required_keys = [
            "string",
            "string_raw",
            "string_encoding",
            "string_offset",
            "string_length",
            "string_raw_length",
            "string_entropy",
        ]
        for key in required_keys:
            assert key in r, f"Missing key: {key}"