Xiaobing Zhang

71 papers A* 2A 2B 2C 1Journal 51Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Autom.
Peng Wang, Mou Chen, Shuzhi Sam Ge, Xiaobing Zhang
2026 J jnl
Reliab. Eng. Syst. Saf.
Menglong Wu, Xiaobing Zhang, Weiwei Shan, Yang Liu, Yanfeng Jiang
2026 J jnl
Clust. Comput.
Binjie Lu, Xiaobing Zhang
2025 J jnl
Appl. Soft Comput.
Hao Yan, Xiaobing Zhang
2025 J jnl
CoRR
Arega Getaneh Abate, Xiufeng Liu, Ruyu Liu, Xiaobing Zhang
2025 J jnl
IEEE Trans. Ind. Electron.
Jinhong Liu, Xiaobing Zhang, Weiwei Geng, Baohua Wang
2025 J jnl
Symmetry
Maocheng Hong, Zhengyang Zhao, Jianxiang Jiang, Xiaoyang Zhao, Jingli Yan, Huaidong Chen, Xiaobing Zhang
2024 conf
CISP-BMEI
Ye Yan, Long Hang, Yuan Tian, Shengming Huang, Xiaoliang Luo, Xinzheng Jie, Xiaobing Zhang, Jiale Sheng, Jinhua Lin, Yuhan Dong
2024 J jnl
Comput. Math. Appl.
Huizhi He, Xiaobing Zhang
2024 J jnl
Comput. Secur.
Heyu Chang, Xiaobing Zhang, Nianwen Si, Ping Wu
2024 J jnl
Symmetry
Xinghao Wang, Liang Zhang, Xiaobing Zhang
2024 J jnl
Symmetry
Liang Zhang, Xinghao Wang, Xiaobing Zhang
2024 J jnl
Frontiers Neurorobotics
Chuang Lin, Xiaobing Zhang
2024 J jnl
Int. J. Comput. Intell. Syst.
Xiaobing Zhang, Heyu Chang, Yaohui Hao, Dexian Chang
2024 C conf
iSPEC
Per Sieverts Nielsen, Ramazan Sari, Xiufeng Liu, Xiaobing Zhang, Daniel Møller Sneum
2023 J jnl
EURASIP J. Adv. Signal Process.
Xiaobing Zhang, Binjie Lu, Liang Qiao
2023 conf
VR Workshops
Patrick Gebhardt, Maximilian Weiß, Pascal Huszár, Xingyao Yu, Alexander Achberger, Xiaobing Zhang, Michael Sedlmair
2023 J jnl
IEEE Access
Qinglin He, Xiaobing Zhang, Jianxin Hu, Zehua Sheng, Qi Li, Si-Yuan Cao, Hui-Liang Shen
2023 J jnl
Int. J. Circuit Theory Appl.
Xiaobing Zhang, Guohua Zhou, Shuyi Liu
2023 J jnl
CoRR
Xiaobing Zhang, Zhenhao Tang, Zi Long, Xianghua Fu
2023 J jnl
IEEE J. Biomed. Health Informatics
Peng Qi, Xiaobing Zhang, Ioannis Kakkos, Kuijun Wu, Sujie Wang, Jingjia Yuan, Lingyun Gao, George K. Matsopoulos, Yu Sun
2023 J jnl
IEEE Trans. Intell. Veh.
Peng Wang, Kenan Yong, Mou Chen, Xiaobing Zhang
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Peng Wang, Xiaobing Zhang
2022 J jnl
Appl. Intell.
Xiongcheng Duan, Xiaobing Zhang
2022 J jnl
CoRR
Peng Wang, Haibin Wang, Shuzhi Sam Ge, Xiaobing Zhang
2022 J jnl
Pattern Recognit.
Zhipeng Luo, Xiaobing Zhang, Shijian Lu, Shuai Yi
2022 J jnl
Artif. Intell. Rev.
Weizhi Liao, Jiarui Zhou, Yu Wang, Yanchao Yin, Xiaobing Zhang
2022 conf
WAT@COLING
Zhenhao Tang, Xiaobing Zhang, Zi Long, Xianghua Fu
2022 J jnl
CoRR
Zhenhao Tang, Xiaobing Zhang, Zi Long, Xianghua Fu
2022 J jnl
IEEE Trans. Cybern.
Peng Wang, Shuzhi Sam Ge, Xiaobing Zhang, Di Yu
2022 J jnl
Autom.
Peng Wang, Weidong Zhang, Xiaobing Zhang, Shuzhi Sam Ge
2022 J jnl
IEEE Trans. Ind. Electron.
Guohua Zhou, Xiaobing Zhang, Kai Gao, Qingxin Tian, Shungang Xu
2021 J jnl
CoRR
Zhipeng Luo, Xiaobing Zhang, Shijian Lu, Shuai Yi
2021 J jnl
IEEE Trans. Ind. Electron.
Minrui Leng, Guohua Zhou, Qingxin Tian, Guodong Xu, Xiaobing Zhang
2021 J jnl
CoRR
Peng Wang, Ziyin Chen, Xiaobing Zhang
2021 J jnl
IEEE Trans. Ind. Electron.
Qingxin Tian, Guohua Zhou, Ruijun Liu, Xiaobing Zhang, Minrui Leng
2020 conf
ECCV (12)
Xiaobing Zhang, Shijian Lu, Haigang Gong, Zhipeng Luo, Ming Liu
2020 conf
ECCV (15)
Jiaxing Huang, Shijian Lu, Dayan Guan, Xiaobing Zhang
2020 J jnl
CoRR
Jiaxing Huang, Shijian Lu, Dayan Guan, Xiaobing Zhang
2020 J jnl
EURASIP J. Wirel. Commun. Netw.
Yixin Yan, Wan Shi, Xiaobing Zhang
2020 A conf
CIKM
Xiaobing Zhang, Hailiang Xu, Jian Yang, Jia Sun, Fan Chen, Leiyun Li
2020 J jnl
Neurocomputing
Weizhi Liao, Yu Wang, Yanchao Yin, Xiaobing Zhang, Pan Ma
2020 J jnl
Appl. Soft Comput.
Zhili Long, Xiaobing Zhang, Cong Li, Jin Niu, Xiaojun Wu, Zuohua Li
2020 conf
ICONIP (4)
Xiaobing Zhang, Shijian Lu, Haigang Gong, Minghui Liu, Ming Liu
2019 J jnl
Fuzzy Sets Syst.
Peng Wang, Xiaobing Zhang, Jihong Zhu
2019 J jnl
IEEE Trans. Ind. Electron.
Peng Wang, Xiaobing Zhang, Jihong Zhu
2019 J jnl
Medical Biol. Eng. Comput.
Xiaobing Zhang, Xuebin Yu, Qingquan Bao, Liming Yang, Yu Sun, Peng Qi
2019 J jnl
IEEE Trans. Fuzzy Syst.
Peng Wang, Xiaobing Zhang, Jihong Zhu
2019 conf
CACRE
Ronghua He, Zhili Long, Xiaobing Zhang, Yuyang Yuan
2019 J jnl
CoRR
Donghui Ding, Xin Jiang, Jiaping Wang, Hao Wang, Xiaobing Zhang, Yi Sun
2019 J jnl
IACR Cryptol. ePrint Arch.
Donghui Ding, Xin Jiang, Jiaping Wang, Hao Wang, Xiaobing Zhang, Yi Sun
2019 A* conf
AAAI
Xiaobing Zhang, Haigang Gong, Xili Dai, Fan Yang, Nianbo Liu, Ming Liu
2018 J jnl
J. Comput. Phys.
Tao Xue, Xiaobing Zhang, Kumar K. Tamma
2018 conf
CSAE
Xiang Wang, Yuntong Tian, Pei Du, Xiaobing Zhang, Weike Wang, Qiang Hao, Bing Xu, Zhun Zhang, Zongmin Zhao
2018 B conf
ISIT
Xiaobing Zhang, Venkat Anantharam, Yanlin Geng
2018 J jnl
Entropy
Xiaobing Zhang, Venkat Anantharam, Yanlin Geng
2018 J jnl
J. Comput. Phys.
Jianqiang Wang, Xiaobing Zhang
2017 conf
COMPSAC (2)
Xiaobing Zhang, Qiliang Yang, Jianchun Xing, Deshuai Han, Ying Chen
2017 J jnl
Sensors
Lin Wen, Liping Qiu, Yongxiang Wu, Xiaoxiao Hu, Xiaobing Zhang
2017 conf
COMPSAC (2)
Deshuai Han, Jianchun Xing, Qiliang Yang, Juelong Li, Xiaobing Zhang, Ying Chen
2016 conf
COMPSAC Workshops
Xiaobing Zhang, Qiliang Yang, Jianchun Xing, Deshuai Han
2015 J jnl
Int. J. Comput. Integr. Manuf.
Wei Liu, Xionghui Zhou, Xiaobing Zhang, Qiang Niu
2013 conf
IEEE WISA
Yun Li, Jie Xu, Xiaobing Zhang, Chen Li, Yingjuan Zhang
2013 J jnl
IEEE J. Sel. Areas Commun.
Yi Sun, Yang Richard Yang, Xiaobing Zhang, Yang Guo, Jun Li, Kavé Salamatian
2013 J jnl
IEEE Netw.
Yi Sun, Yang Guo, Zhenyu Li, Jiali Lin, Gaogang Xie, Xiaobing Zhang, Kavé Salamatian
2012 A* conf
INFOCOM
Yi Sun, Yang Richard Yang, Xiaobing Zhang, Yang Guo, Jun Li, Kavé Salamatian
2011 J jnl
CoRR
Yi Zhang, Guifeng Su, Xiaobing Zhang
2010 J jnl
Sensors
Zhiwei Zhao, Wei Lei, Xiaobing Zhang, Baoping Wang, Helong Jiang
2009 conf
WGEC
Xiaobing Zhang, Yizhuo Jia
2006 A conf
IROS
Hongru Tang, Aiguo Song, Xiaobing Zhang
2000 B conf
ICNP
Xiaobing Zhang, Shyhtsun Felix Wu, Zhi Fu, Tsung-Li Wu
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