Xiaoguang Mei

87 papers A* 6A 1C 4Misc 3Journal 73
YearRankTypeTitle / Venue / Authors
2026 A* conf
AAAI
Tianwei Ye, Yong Ma, Xiaoguang Mei
2026 A* conf
AAAI
Yifan Xia, Tianwei Ye, Jun Huang, Xiaoguang Mei, Jiayi Ma
2026 J jnl
CoRR
Tianwei Ye, Xiaoguang Mei, Yifan Xia, Fan Fan, Jun Huang, Jiayi Ma
2026 J jnl
IEEE Trans. Image Process.
Xiang Fang, Shihua Zhang, Hao Zhang, Xiaoguang Mei, Huabing Zhou, Jiayi Ma
2025 J jnl
CoRR
Tianwei Ye, Yong Ma, Xiaoguang Mei
2025 J jnl
Pattern Recognit.
Pei Yang, Yong Ma, Xiaoguang Mei, Qihai Chen, Minghui Wu, Jiayi Ma
2025 J jnl
Geo spatial Inf. Sci.
Yucheng Sun, Yong Ma, Yuan Yao, Xiaoguang Mei, Jun Huang, Jiayi Ma
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yingsong Cheng, Xinya Wang, Yong Ma, Xiaoguang Mei, Minghui Wu, Jiayi Ma
2025 J jnl
IEEE CAA J. Autom. Sinica
You Du, Yong Ma, Jun Huang, Xiaoguang Mei, Jinhui Qin, Fan Fan
2025 J jnl
Geo spatial Inf. Sci.
Yingsong Cheng, Yong Ma, Fan Fan, Jiayi Ma, Yuan Yao, Xiaoguang Mei
2025 A* conf
IJCAI
Meng Yang, Fan Fan, Jun Huang, Yong Ma, Xiaoguang Mei, Zhanchuan Cai, Jiayi Ma
2025 J jnl
CoRR
Wendi Liu, Pei Yang, Wenhui Hong, Xiaoguang Mei, Jiayi Ma
2024 J jnl
IEEE Trans. Instrum. Meas.
Zhao Cai, Yong Ma, Jun Huang, Xiaoguang Mei, Fan Fan
2024 A* conf
AAAI
Hebaixu Wang, Meiqi Gong, Xiaoguang Mei, Hao Zhang, Jiayi Ma
2024 J jnl
IEEE CAA J. Autom. Sinica
Yifan Lu, Jiayi Ma, Xiaoguang Mei, Jun Huang, Xiao-Ping (Steven) Zhang
2024 J jnl
Inf. Fusion
Erting Pan, Yang Yu, Xiaoguang Mei, Jun Huang, Jiayi Ma
2024 J jnl
Comput. Biol. Medicine
Yantao Chen, Yong Ma, Xiaoguang Mei, Lin Zhang, Zhigang Fu, Jiayi Ma
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Wendi Liu, Yong Ma, Xiaozhu Wang, Jun Huang, Qihai Chen, Hao Li, Xiaoguang Mei
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yang Yu, Erting Pan, Yong Ma, Xiaoguang Mei, Qihai Chen, Jiayi Ma
2024 A* conf
CVPR
Yang Yu, Erting Pan, Xinya Wang, Yuheng Wu, Xiaoguang Mei, Jiayi Ma
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Qiwen Jin, Yong Ma, Fan Fan, Jun Huang, Xiaoguang Mei, Jiayi Ma
2023 J jnl
IEEE CAA J. Autom. Sinica
Erting Pan, Yong Ma, Xiaoguang Mei, Jun Huang, Fan Fan, Jiayi Ma
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yucheng Sun, Han Xu, Yong Ma, Minghui Wu, Xiaoguang Mei, Jun Huang, Jiayi Ma
2023 J jnl
IEEE Geosci. Remote. Sens. Lett.
Wendi Liu, Xiaoguang Mei, Yong Ma, Jun Huang, Qihai Chen, Hao Li
2023 J jnl
Pattern Recognit.
Erting Pan, Yong Ma, Xiaoguang Mei, Fan Fan, Jiayi Ma
2023 J jnl
Pattern Recognit.
Erting Pan, Yong Ma, Xiaoguang Mei, Jun Huang, Qihai Chen, Jiayi Ma
2023 J jnl
Appl. Intell.
Mingfan Chu, Yong Ma, Xiaoguang Mei, Jun Huang, Fan Fan
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Erting Pan, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Jiayi Ma
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Zongyi Peng, Yong Ma, Yujie Zhang, Hao Li, Fan Fan, Xiaoguang Mei
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Aoxiang Fan, Xingyu Jiang, Yong Ma, Xiaoguang Mei, Jiayi Ma
2022 J jnl
IEEE Trans. Computational Imaging
Han Xu, Yucheng Sun, Xiaoguang Mei, Xin Tian, Jiayi Ma
2022 A* conf
CVPR
Aoxiang Fan, Jiayi Ma, Xin Tian, Xiaoguang Mei, Wei Lin
2022 J jnl
Remote. Sens.
Yuan Yao, Mengbi Wang, Ganghui Fan, Wendi Liu, Yong Ma, Xiaoguang Mei
2022 J jnl
IEEE Trans. Ind. Informatics
Jiayi Ma, Shenyue Wang, Kaining Zhang, Zheng He, Jun Huang, Xiaoguang Mei
2022 J jnl
IEEE Trans. Computational Imaging
Xinya Wang, Yingsong Cheng, Xiaoguang Mei, Junjun Jiang, Jiayi Ma
2022 J jnl
Pattern Recognit.
Zizhuo Li, Yong Ma, Xiaoguang Mei, Jun Huang, Jiayi Ma
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Ganghui Fan, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Jiayi Ma
2022 J jnl
Remote. Sens.
Chen Ma, Junjun Jiang, Huayi Li, Xiaoguang Mei, Chengchao Bai
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Zongyi Peng, Yong Ma, Xiaoguang Mei, Jun Huang, Fan Fan
2022 J jnl
Remote. Sens.
Yujie Zhang, Xiaoguang Mei, Yong Ma, Xingyu Jiang, Zongyi Peng, Jun Huang
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Jiayi Ma, Xinyu Ye, Huabing Zhou, Xiaoguang Mei, Fan Fan
2022 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Yang Yu, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Hao Li
2022 J jnl
IEEE CAA J. Autom. Sinica
Shasha Mei, Yong Ma, Xiaoguang Mei, Jun Huang, Fan Fan
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Erting Pan, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Jiayi Ma
2022 J jnl
IEEE CAA J. Autom. Sinica
Jiayi Ma, Linfeng Tang, Fan Fan, Jun Huang, Xiaoguang Mei, Yong Ma
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Qiwen Jin, Yong Ma, Xiaoguang Mei, Jiayi Ma
2022 J jnl
Inf. Fusion
Zhuliang Le, Jun Huang, Han Xu, Fan Fan, Yong Ma, Xiaoguang Mei, Jiayi Ma
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Chenhong Sui, Jun Zhou, Chang Li, Qiang Zheng, Jie Feng, Xiaoguang Mei, Jing Wang
2021 J jnl
Remote. Sens.
Yang Yu, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Jiayi Ma
2021 J jnl
IEEE Geosci. Remote. Sens. Lett.
Yong Ma, Ganghui Fan, Qiwen Jin, Jun Huang, Xiaoguang Mei, Jiayi Ma
2021 J jnl
Remote. Sens.
Erting Pan, Yong Ma, Fan Fan, Xiaoguang Mei, Jun Huang
2021 J jnl
Inf. Sci.
Yuanshu Zhang, Yong Ma, Xiaobing Dai, Hao Li, Xiaoguang Mei, Jiayi Ma
2021 A conf
IROS
Kaining Zhang, Xingyu Jiang, Xiaoguang Mei, Huabing Zhou, Jiayi Ma
2021 J jnl
Entropy
Hao Li, Yuanshu Zhang, Yong Ma, Xiaoguang Mei, Shan Zeng, Yaqin Li
2021 Misc conf
ICASSP
Ganghui Fan, Yong Ma, Jun Huang, Xiaoguang Mei, Jiayi Ma
2021 Misc conf
ICASSP
Qiwen Jin, Yong Ma, Xiaoguang Mei, Hao Li, Jiayi Ma
2021 Misc conf
ICASSP
Erting Pan, Yong Ma, Xiaoguang Mei, Fan Fan, Jiayi Ma
2020 J jnl
Neural Comput. Appl.
Jun Huang, Zhuliang Le, Yong Ma, Xiaoguang Mei, Fan Fan
2020 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yujie Zhang, Zhiying Wan, Xingyu Jiang, Xiaoguang Mei
2020 J jnl
IEEE Trans. Image Process.
Jiayi Ma, Han Xu, Junjun Jiang, Xiaoguang Mei, Xiao-Ping (Steven) Zhang
2020 J jnl
Inf. Sci.
Jun Chen, Xuejiao Li, Linbo Luo, Xiaoguang Mei, Jiayi Ma
2020 J jnl
Neurocomputing
Yang Wang, Xiaoguang Mei, Yong Ma, Jun Huang, Fan Fan, Jiayi Ma
2020 J jnl
Neurocomputing
Erting Pan, Xiaoguang Mei, Quande Wang, Yong Ma, Jiayi Ma
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Chenhong Sui, Chang Li, Jie Feng, Xiaoguang Mei
2019 C conf
IGARSS
Linbo Luo, Qi Wan, Jun Chen, Yongtao Wang, Xiaoguang Mei
2019 C conf
IGARSS
Erting Pan, Yong Ma, Xiaobing Dai, Fan Fan, Jun Huang, Xiaoguang Mei, Jiayi Ma
2019 C conf
IGARSS
Qiwen Jin, Yong Ma, Xiaoguang Mei, Xiaobing Dai, Hao Li, Fan Fan, Jun Huang
2019 J jnl
Signal Process.
Jiahao Wang, Jun Chen, Huihui Xu, Shuaibin Zhang, Xiaoguang Mei, Jun Huang, Jiayi Ma
2019 J jnl
Remote. Sens.
Yong Ma, Qiwen Jin, Xiaoguang Mei, Xiaobing Dai, Fan Fan, Hao Li, Jun Huang
2019 J jnl
Remote. Sens.
Qiwen Jin, Yong Ma, Erting Pan, Fan Fan, Jun Huang, Hao Li, Chenhong Sui, Xiaoguang Mei
2019 J jnl
IEEE Access
Jiayi Ma, Xinya Wang, Yijia He, Xiaoguang Mei, Ji Zhao
2019 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yong Ma, Yuanshu Zhang, Xiaoguang Mei, Xiaobing Dai, Jiayi Ma
2019 J jnl
Remote. Sens.
Xiaoguang Mei, Erting Pan, Yong Ma, Xiaobing Dai, Jun Huang, Fan Fan, Qinglei Du, Hong Zheng, Jiayi Ma
2019 C conf
IGARSS
Erting Pan, Yong Ma, Xiaoguang Mei, Xiaobing Dai, Fan Fan, Xin Tian, Jiayi Ma
2019 J jnl
IEEE Access
Yong Ma, Yuchen Wang, Xiaoguang Mei, Chengyin Liu, Xiaobing Dai, Fan Fan, Jun Huang
2018 J jnl
IEEE Geosci. Remote. Sens. Lett.
Yong Ma, Chang Li, Hao Li, Xiaoguang Mei, Jiayi Ma
2018 J jnl
IEEE Access
Qinglei Du, Aoxiang Fan, Yong Ma, Fan Fan, Jun Huang, Xiaoguang Mei
2018 J jnl
Neurocomputing
Xiaoguang Mei, Yong Ma, Chang Li, Fan Fan, Jun Huang, Jiayi Ma
2017 J jnl
Inf. Sci.
Fan Fan, Yong Ma, Chang Li, Xiaoguang Mei, Jun Huang, Jiayi Ma
2017 J jnl
IEEE Access
Yong Ma, Jiahao Wang, Huihui Xu, Shuaibin Zhang, Xiaoguang Mei, Jiayi Ma
2017 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yong Ma, Chang Li, Xiaoguang Mei, Chengyin Liu, Jiayi Ma
2017 J jnl
Remote. Sens.
Chang Li, Yong Ma, Xiaoguang Mei, Fan Fan, Jun Huang, Jiayi Ma
2016 J jnl
IEEE Geosci. Remote. Sens. Lett.
Jinhui Han, Yong Ma, Jun Huang, Xiaoguang Mei, Jiayi Ma
2016 J jnl
IEEE Geosci. Remote. Sens. Lett.
Chang Li, Yong Ma, Jun Huang, Xiaoguang Mei, Chengyin Liu, Jiayi Ma
2016 J jnl
IEEE Geosci. Remote. Sens. Lett.
Chang Li, Yong Ma, Xiaoguang Mei, Chengyin Liu, Jiayi Ma
2016 J jnl
Remote. Sens.
Chang Li, Yong Ma, Xiaoguang Mei, Chengyin Liu, Jiayi Ma
2015 J jnl
Sensors
Xiaoguang Mei, Yong Ma, Chang Li, Fan Fan, Jun Huang, Jiayi Ma
tests/unit/test_apk_method_extractor.py
← Index tests/unit/test_apk_method_extractor.py python
"""
Unit tests for APK method-level content extraction, hashing, and similarity.

Tests SHA-256 normalization, ssdeep/TLSH computation, obfuscation detection,
and Dalvik-to-Java type conversion.
"""
import pytest

pytestmark = [pytest.mark.unit, pytest.mark.apk, pytest.mark.decompile]


class TestHashingFunctions:
    """Tests for hashing utility functions."""

    def test_sha256_deterministic(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        h1 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        h2 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        assert h1 == h2

    def test_sha256_hex_length(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert len(compute_sha256("test")) == 64

    def test_sha256_different_inputs(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert compute_sha256("aaa") != compute_sha256("bbb")

    def test_ssdeep_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_ssdeep
        assert compute_ssdeep("short") is None

    def test_tlsh_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_tlsh
        assert compute_tlsh("x") is None


class TestObfuscationDetection:
    """Tests for obfuscation indicator detection."""

    def test_short_method_name_single_char(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("a", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_short_method_name_two_chars(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("ab", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_normal_method_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("onCreate", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is False

    def test_short_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/a;", "", 10)
        assert r["short_class_name"] is True

    def test_normal_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/example/MainActivity;", "", 10)
        assert r["short_class_name"] is False

    def test_string_encryption_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = (
            'const-string v0, "xyz"\n'
            'invoke-static {v0}, Lcom/Enc;->decrypt(Ljava/lang/String;)Ljava/lang/String;\n'
        )
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is True

    def test_no_string_encryption(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'const-string v0, "hello"\ninvoke-virtual {v0}, Ljava/lang/String;->length()I'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is False

    def test_reflection_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {v0, v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is True

    def test_no_reflection(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {p0}, Lcom/Foo;->bar()V'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is False

    def test_excessive_goto_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto :label"] * 10)
        # threshold = max(5, 20*0.15=3) = 5, 10 > 5
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True

    def test_no_excessive_goto(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "goto :label\nreturn-void"
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 100)
        assert r["excessive_goto_count"] is False

    def test_goto_16_counted(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto/16 :label"] * 10)
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True


class TestDalvikTypeConversion:
    """Tests for Dalvik-to-Java type conversion."""

    def test_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("V") == "void"

    def test_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("I") == "int"
        assert dalvik_type_to_java("Z") == "boolean"
        assert dalvik_type_to_java("J") == "long"
        assert dalvik_type_to_java("F") == "float"
        assert dalvik_type_to_java("D") == "double"
        assert dalvik_type_to_java("B") == "byte"
        assert dalvik_type_to_java("S") == "short"
        assert dalvik_type_to_java("C") == "char"

    def test_object_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("Ljava/lang/String;") == "String"
        assert dalvik_type_to_java("Lcom/example/Foo;") == "Foo"

    def test_array_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("[I") == "int[]"
        assert dalvik_type_to_java("[Ljava/lang/String;") == "String[]"

    def test_empty_returns_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("") == "void"


class TestJavaPrototypeConversion:
    """Tests for method signature to Java prototype conversion."""

    def test_simple_method(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        assert dalvik_to_java_prototype("foo", "()V") == "void foo()"

    def test_method_with_params(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("bar", "(ILjava/lang/String;)Z")
        assert result == "boolean bar(int, String)"

    def test_method_returning_object(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("create", "()Lcom/example/Foo;")
        assert result == "Foo create()"

    def test_empty_signature(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("m", "")
        assert "m()" in result


class TestDalvikParamParsing:
    """Tests for parsing Dalvik parameter descriptors."""

    def test_empty(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("") == []

    def test_single_primitive(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("I") == ["I"]

    def test_multiple_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("IZJ") == ["I", "Z", "J"]

    def test_single_object(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("Ljava/lang/String;") == ["Ljava/lang/String;"]

    def test_mixed(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("ILjava/lang/String;Z")
        assert result == ["I", "Ljava/lang/String;", "Z"]

    def test_arrays(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("[I[Ljava/lang/String;")
        assert result == ["[I", "[Ljava/lang/String;"]

    def test_two_objects(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("Landroid/os/Bundle;Ljava/lang/String;")
        assert len(result) == 2