Xiaobo Wang

75 papers A* 4A 3B 1C 2Journal 48Unranked 17
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eng. Appl. Artif. Intell.
Youhui Deng, Weizhi Yang, Haoran Chen, Xiaodan Zhang, Jiajia Li, Xiaobo Wang, Xiu Jin
2026 J jnl
IEEE Access
Zihan Li, Yimeng Zhang, Carmen M. Nawezi, Ting Li, Xiaobo Wang
2025 conf
VTC2025-Spring
Lizhi Qin, Lang Lin, Xiaobo Wang, Jiahui Chen, Yuming Chen, Hongzhi Zhao
2025 J jnl
Comput. Electron. Agric.
Youhui Deng, Weizhi Yang, Jiajia Li, Xiaodan Zhang, Yuan Rao, Haoran Chen, Jianghui Xiong, Xi Chen, Xiaobo Wang, Xiu Jin
2025 J jnl
Complex Intell. Syst.
Xiang Huang, Qiong Nong, Xiaobo Wang, Hongcheng Zhang, Kunpeng Du, Chunlin Yin, Li Yang, Bin Yan, Xuan Zhang
2025 J jnl
CoRR
Zekai Li, Xinhao Zhong, Samir Khaki, Zhiyuan Liang, Yuhao Zhou, Mingjia Shi, Ziqiao Wang, Xuanlei Zhao, Wangbo Zhao, Ziheng Qin, Mengxuan Wu, Pengfei Zhou, Haonan Wang, David Junhao Zhang, Jia-Wei Liu, Shaobo Wang, Dai Liu, Linfeng Zhang, Guang Li, Kun Wang, Zheng Zhu, Zhiheng Ma, Joey Tianyi Zhou, Jiancheng Lv, Yaochu Jin, Peihao Wang, Kaipeng Zhang, Lingjuan Lyu, Yiran Huang, Zeynep Akata, Zhiwei Deng, Xindi Wu, George Cazenavette, Yuzhang Shang, Justin Cui, Jindong Gu, Qian Zheng, Hao Ye, Shuo Wang, Xiaobo Wang, Yan Yan, Angela Yao, Mike Zheng Shou, Tianlong Chen, Hakan Bilen, Baharan Mirzasoleiman, Manolis Kellis, Konstantinos N. Plataniotis, Zhangyang Wang, Bo Zhao, Yang You, Kai Wang
2025 conf
ICCBN
Wenwei Ying, Xun Li, Xiaobo Wang, Zijie Niu, Anbo Zhang, Zhen Qiao
2025 J jnl
Comput. Electron. Agric.
Chuankun Zhang, Dan Jiang, Tianyu Wan, Yuan Rao, Xiu Jin, Tan Wang, Xiaobo Wang, Jiajia Li, Wu Zhang, Xing Shao
2025 J jnl
Energy Inform.
Penghui Xu, Xiaobo Wang, Zhichao Li
2025 C conf
INDIN
Yusen Guo, Yan Wang, Xiaobo Wang, Bo Peng, Xinyan Ran, Rui Mao
2025 J jnl
Eng. Appl. Artif. Intell.
Kanglei Wu, Tan Wang, Yuan Rao, Xiu Jin, Xiaobo Wang, Jiajia Li, Zhe Zhang, Zhaohui Jiang, Xing Shao, Wu Zhang
2025 J jnl
Concurr. Comput. Pract. Exp.
Xiaobo Wang, Xuan Zhang, Jing Cheng, Kunpeng Du, Chen Gao, Zhuxian Ma, Bo Liu
2024 J jnl
Sensors
Shan Yang, Qiyuan Zhang, Longxing Hu, Haina Ye, Xiaobo Wang, Ti Wang, Syuan Liu
2024 J jnl
Sensors
Xiaobo Wang, Bofeng Luo, Rongbo Zhang, Yang Song, Yaqian Zhao, Chengtao Luo
2024 J jnl
IEEE Trans. Veh. Technol.
Xiaobo Wang, Hongzhi Zhao, Yimin He, Peng Hu, Shihai Shao
2024 J jnl
IEEE Trans. Prof. Commun.
Belén López-Arroyo, Xiaobo Wang, Suguru Ishizaki
2024 J jnl
Comput. Electron. Agric.
Zhe Zhang, Xiu Jin, Yuan Rao, Tianyu Wan, Xiaobo Wang, Jiajia Li, Haoran Chen, Kanglei Wu, Fanchen Kong, Zhuo Tian, Xing Shao
2024 J jnl
CoRR
Xiangtian Li, Xiaobo Wang, Zhen Qi, Han Cao, Zhaoyang Zhang, Ao Xiang
2024 J jnl
CoRR
Dawulie Jinensibieke, Mieradilijiang Maimaiti, Wentao Xiao, Yuanhang Zheng, Xiaobo Wang
2024 J jnl
CoRR
Zhihao Li, Zhilu Lai, Xiaobo Wang, Wei Wang
2024 J jnl
Sensors
Chuanwen Luo, Linyuan Hui, Zikun Shang, Chenlong Wang, Mingyu Jin, Xiaobo Wang, Ning Li
2024 J jnl
Expert Syst. J. Knowl. Eng.
Chunlin Yin, Kunpeng Du, Qiong Nong, Hongcheng Zhang, Li Yang, Bin Yan, Xiang Huang, Xiaobo Wang, Xuan Zhang
2024 J jnl
CoRR
Chaoyi Tan, Xiangtian Li, Xiaobo Wang, Zhen Qi, Ao Xiang
2024 conf
ICCEIC
Ti Wang, Zhongyan Du, Xiaobo Wang, Shan Yang, Haina Ye
2024 J jnl
Comput. Electron. Agric.
Tianyu Wan, Xiu Jin, Yuan Rao, Jiajia Li, Tan Wang, Zhaohui Jiang, Wu Zhang, Shaowen Li, Tong Zhang, Xiaobo Wang
2023 conf
ICCAI
Wei Liu, Xufeng Ling, Jingxin Liang, Xiaobo Wang, Jie Yang
2023 A conf
IROS
Haotian Zhang, Yuan Ma, Xiaobo Wang, Rui Mao, Meili Wang
2023 J jnl
Circuits Syst. Signal Process.
Liwen Liu, Xiaobo Wang, Yongqi Hu, Chen Wang, Yan Xu
2023 J jnl
Genom. Proteom. Bioinform.
Xiumei Xing, Cheng Ai, Tianjiao Wang, Yang Li, Huitao Liu, Pengfei Hu, Guiwu Wang, Huamiao Liu, Hongliang Wang, Ranran Zhang, Junjun Zheng, Xiaobo Wang, Lei Wang, Yuxiao Chang, Qian Qian, Jinghua Yu, Lixin Tang, Shigang Wu, Xiujuan Shao, Alun Li, Peng Cui, Wei Zhan, Sheng Zhao, Zhichao Wu, Xiqun Shao, Yimeng Dong, Min Rong, Yihong Tan, Xuezhe Cui, Shuzhuo Chang, Xingchao Song, Tongao Yang, Limin Sun, Yan Ju, Pei Zhao, Huanhuan Fan, Ying Liu, Xinhui Wang, Wanyun Yang, Min Yang, Tao Wei, Shanshan Song, Jiaping Xu, Zhigang Yue, Qiqi Liang, Chunyi Li, Jue Ruan, Fuhe Yang
2023 J jnl
Complex.
Xiaobo Wang, Xuefei Wu, Zhe Nie, Zengxian Yan
2022 A* conf
CVPR
Kai Wang, Shuo Wang, Panpan Zhang, Zhipeng Zhou, Zheng Zhu, Xiaobo Wang, Xiaojiang Peng, Baigui Sun, Hao Li, Yang You
2022 J jnl
Appl. Math. Lett.
Xiaobo Wang, Qiliang Zhao, Man Jia, Senyue Lou
2022 J jnl
Signal Process.
Jiantao Wang, Xiaobo Wang, Junping Yin
2021 J jnl
IEEE Trans. Green Commun. Netw.
Xiaobo Wang, Yu Weng, Honghao Gao
2021 J jnl
CoRR
Kai Wang, Shuo Wang, Zhipeng Zhou, Xiaobo Wang, Xiaojiang Peng, Baigui Sun, Hao Li, Yang You
2021 B conf
ACIIDS
Xiaobo Wang, Wenyun Sun, Zhong Jin
2021 J jnl
Sensors
Shuailong Yang, Liu Yang, Fengguang Luo, Bin Li, Xiaobo Wang, Yuting Du, Deming Liu
2021 conf
ICCVW
Kai Wang, Shuo Wang, Jianfei Yang, Xiaobo Wang, Baigui Sun, Hao Li, Yang You
2021 J jnl
BMC Bioinform.
Yingxi Yang, Hui Wang, Wen Li, Xiaobo Wang, Shizhao Wei, Yulong Liu, Yan Xu
2021 conf
ICSAI
Tiezhen Jiang, Qi An, Jianhua Wang, Xiaobo Wang
2021 A* conf
AAAI
Xiaobo Wang
2021 A conf
Interspeech
Mengli Cheng, Chengyu Wang, Jun Huang, Xiaobo Wang
2020 J jnl
IEEE Access
Xiaobo Wang, Liu Yang, Fengguang Luo, Shuailong Yang, Yuting Du
2020 J jnl
CoRR
Xiaoyong Yang, Yadong Zhu, Yi Zhang, Xiaobo Wang, Quan Yuan
2020 J jnl
IEEE Access
Xijin Kuang, Kuining Li, Yi Xie, Cunxue Wu, Pingzhong Wang, Xiaobo Wang, Chunyun Fu
2020 J jnl
CoRR
Mengli Cheng, Chengyu Wang, Xu Hu, Jun Huang, Xiaobo Wang
2019 J jnl
Symmetry
Haohua Li, Xiaobo Wang, Ji Zhou
2019 J jnl
BMC Bioinform.
Hongli Fu, Yingxi Yang, Xiaobo Wang, Hui Wang, Yan Xu
2019 conf
iThings/GreenCom/CPSCom/SmartData
Chunming He, Xiaobo Wang, Lizhen Deng, Guoxia Xu
2019 A* conf
IJCAI
Jia-Jia Cai, Jun Tang, Qing-Guo Chen, Yao Hu, Xiaobo Wang, Sheng-Jun Huang
2019 A* conf
IJCAI
Xuan Wu, Qing-Guo Chen, Yao Hu, Dengbao Wang, Xiaodong Chang, Xiaobo Wang, Min-Ling Zhang
2019 J jnl
CoRR
Jianren Wang, Yihui He, Xiaobo Wang, Xinjia Yu, Xia Chen
2019 conf
BI
Xiaobo Wang, Dong-ni Pan, Xuebing Li
2019 conf
iThings/GreenCom/CPSCom/SmartData
Guangrun Xiao, Xiaobo Wang, Dezheng Liu
2018 J jnl
Trans. Inst. Meas. Control
Xiaobo Wang, Juelong Li, Jianchun Xing, Ronghao Wang, Liqiang Xie, Xiaocheng Zhang
2018 J jnl
Sci. China Inf. Sci.
Qiliang Zhang, Feifei Gao, Qing Sun, Xiaobo Wang
2018 J jnl
Wirel. Pers. Commun.
Daohua Zhu, Yajuan Guo, Lei Wei, Xiaobo Wang, Wei Huang, Haitao Jiang, Chao Zhou
2017 J jnl
Sensors
Jessamyn Dahmen, Brian L. Thomas, Diane J. Cook, Xiaobo Wang
2017 conf
5GWN
Ruichen Xu, Xiao Peng, Xiaobo Wang, Ji Fang, Bo Yuan
2017 J jnl
J. Reliab. Intell. Environ.
Jessamyn Dahmen, Diane J. Cook, Xiaobo Wang, Honglei Wang
2017 conf
SPAWC
Qiliang Zhang, Feifei Gao, Qing Sun, Xiaobo Wang
2015 J jnl
Database J. Biol. Databases Curation
Xiaobo Wang, Jian Wu, Jianli Liang, Feng Cheng, Xiaowu Wang
2014 conf
ICSOC Workshops
Chunxiang Xu, Yupeng Ma, Xiaobo Wang
2014 C conf
ICCC
Xiaofan Li, Qizhu Song, Hongbo Tao, Xiaoyong Liu, Sha Zhang, Xiaobo Wang, Qun Luo, Xiao Peng
2012 J jnl
J. Networks
Xiaobo Wang, Xianwei Zhou, Junde Song
2012 J jnl
Wirel. Pers. Commun.
Xiaobo Wang, Xian-Wei Zhou, Junde Song
2011 J jnl
J. Softw.
Liguo Chen, Xiaobo Wang, Chao Liu
2011 J jnl
IEEE Trans. Ind. Electron.
Yi Zheng, Shaoyuan Li, Xiaobo Wang
2011 conf
ICICA (LNCS)
Xiaobo Wang, Junde Song, Xianwei Zhou
2010 J jnl
Expert Syst. Appl.
Yi Zheng, Shaoyuan Li, Xiaobo Wang
2010 conf
WKDD
Rongfei Jia, Maozhong Jin, Xiaobo Wang
2008 conf
FSKD (1)
Chenxi Wang, Xiaobo Wang, Guohong Wang
2008 conf
TTSS
Xiaobo Wang, Guanhui Lai, Chao Liu
2000 conf
ICC (1)
Zhihong Yang, Xuejun Liu, Xiaobo Wang, Peixiang Gong
1995 A conf
GD
Xiaobo Wang, Isao Miyamoto
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