Xiangwei Liu

33 papers C 1Journal 25Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
Reliab. Eng. Syst. Saf.
Xiuwen Fu, Mengyao Tian, Xiangwei Liu, Shaomin Wu, Rui Peng
2026 J jnl
Reliab. Eng. Syst. Saf.
Xiuwenfu, Mengyao Tian, Xiangwei Liu, Shaomin Wu, Rui Peng
2025 J jnl
Int. J. Interact. Mob. Technol.
Zhong Mengmeng, Han Xiao, Xiangwei Liu, Linying Li
2025 J jnl
IEEE Trans. Reliab.
Dingyi Zheng, Xiuwen Fu, Xiangwei Liu, Liudong Xing, Rui Peng
2025 J jnl
Comput. Ind. Eng.
Lingli Zhu, Xiuwen Fu, Xiangwei Liu, Shichang Du
2025 J jnl
IEEE Trans. Instrum. Meas.
Yonghong Wang, Zihua Zheng, Xiangwei Liu, Peizheng Yan, Junrui Li, Zhenmin Zhu
2025 J jnl
Reliab. Eng. Syst. Saf.
Xiuwen Fu, Dingyi Zheng, Xiangwei Liu, Liudong Xing, Rui Peng
2024 J jnl
Biomed. Signal Process. Control.
Fadilul-lah Yassaanah Issahaku, Xiangwei Liu, Ke Lu, Xianwen Fang, Sumaiya Bashiru Danwana, Ernest Asimeng
2023 J jnl
J. Knowl. Manag.
Yunlong Duan, Shuling Liu, Chang Mu, Xiangwei Liu, Edwin Cheng, Yongsong Liu
2021 J jnl
Comput. Intell. Neurosci.
Xi Zhang, Zixie Guo, Xiangwei Liu, Longjia Zhang
2020 J jnl
计算机科学
Juan Li, Xianwen Fang, Lili Wang, Xiangwei Liu
2019 J jnl
Reliab. Eng. Syst. Saf.
Xiangwei Liu, Daijie He, Gabriël Lodewijks, Yusong Pang, Jie Mei
2019 J jnl
Sensors
Peizheng Yan, Xiangwei Liu, Shuangle Wu, Fangyuan Sun, Qihan Zhao, Yonghong Wang
2019 J jnl
计算机科学
Huijing Hao, Xianwen Fang, Lili Wang, Xiangwei Liu
2019 J jnl
计算机科学
Li Ying, Xianwen Fang, Lili Wang, Xiangwei Liu
2019 J jnl
计算机科学
Jian Song, Xianwen Fang, Lili Wang, Xiangwei Liu
2018 J jnl
IEEE Access
Xianwen Fang, Rui Cao, Xiangwei Liu, Lili Wang
2018 conf
CSPS (1)
Junyang Zhao, Xiangwei Liu, Jianpeng Guo
2018 J jnl
计算机科学
Pengjun Zhai, Xianwen Fang, Xiangwei Liu
2017 J jnl
Neural Comput. Appl.
Yantao Li, Xiang Li, Xiangwei Liu
2017 conf
CSPS
Gang Yang, Xiangwei Liu, Jianpeng Guo
2016 J jnl
计算机科学
Xianwen Fang, Fang Zhao, Xiangwei Liu, Huan Fang
2016 J jnl
计算机科学
Pei Hua, Xianwen Fang, Xiangwei Liu
2016 J jnl
计算机科学
Hong Liu, Xiangwei Liu, Lili Wang
2015 J jnl
Pervasive Mob. Comput.
Yan Zhang, Jin Shi, Tian Zhang, Xiangwei Liu, Zhuzhong Qian
2014 J jnl
Comput. Ind.
Junhao Geng, Xitian Tian, Mingxing Bai, Xiaoliang Jia, Xiangwei Liu
2014 conf
IMIS
Yan Zhang, Xiangwei Liu, Jin Shi, Tian Zhang, Zhuzhong Qian
2013 conf
BIC-TA
Lu Liu, Xianwen Fang, Xiangwei Liu, Jing Ji
2013 conf
BIC-TA
Xiangwei Liu, Mimi Wang, Lu Liu
2011 conf
FSKD
Huiying Wang, Xiangwei Liu
2011 conf
FSKD
Huiying Wang, Xiangwei Liu
2005 C conf
ADMA
Xiangwei Liu, Pilian He
2003 J jnl
SIAM J. Discret. Math.
Xiangwei Liu, Gilbert Strang, Susan Ott
redb/extractors/decompiler/apk/library_filter.py
← Index redb/extractors/decompiler/apk/library_filter.py python
"""Package-based library filtering for APK DEX code analysis.

Determines whether a method belongs to a known library/framework package
and should be filtered out of content tables. This is the Android equivalent
of is_lib_or_thunk() in the Binary Ninja pipeline.
"""

import os
from typing import Dict, List


DEFAULT_LIBRARY_PREFIXES = [
    "android.",
    "androidx.",
    "com.google.android.",
    "com.google.firebase.",
    "com.google.gson.",
    "com.google.protobuf.",
    "kotlin.",
    "kotlinx.",
    "org.apache.",
    "com.squareup.",
    "io.reactivex.",
    "org.reactivestreams.",
    "com.facebook.",
    "com.crashlytics.",
    "io.fabric.",
    "org.junit.",
    "org.mockito.",
]


class LibraryFilter:
    """Filters library/framework classes from APK analysis."""

    def __init__(self, prefixes: List[str] = None):
        env_prefixes = os.getenv("APK_LIBRARY_PREFIXES")
        if env_prefixes:
            self._prefixes = [p.strip() for p in env_prefixes.split(",") if p.strip()]
        elif prefixes is not None:
            self._prefixes = prefixes
        else:
            self._prefixes = DEFAULT_LIBRARY_PREFIXES

        # Convert Dalvik-style prefixes to both formats for matching
        self._dot_prefixes = tuple(self._prefixes)

        self._stats = {"library": 0, "user": 0}

    def is_library(self, class_name: str) -> bool:
        """Check if a class belongs to a known library/framework package.

        Accepts both Java dot notation (com.example.Foo) and Dalvik
        descriptor notation (Lcom/example/Foo;).
        """
        # Normalize Dalvik descriptor to dot notation
        normalized = self._normalize_class_name(class_name)

        is_lib = normalized.startswith(self._dot_prefixes)
        if is_lib:
            self._stats["library"] += 1
        else:
            self._stats["user"] += 1
        return is_lib

    def get_filter_stats(self) -> Dict[str, int]:
        """Return counts of filtered vs. retained classes."""
        return dict(self._stats)

    @staticmethod
    def _normalize_class_name(class_name: str) -> str:
        """Convert Dalvik descriptor to dot notation.

        Lcom/example/Foo; -> com.example.Foo
        com.example.Foo -> com.example.Foo
        """
        if class_name.startswith("L") and class_name.endswith(";"):
            return class_name[1:-1].replace("/", ".")
        return class_name.replace("/", ".")