Kaihong Huang

31 papers A* 3A 6C 1Journal 18Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans Autom. Sci. Eng.
Mengsen Zhao, Kaihong Huang, Hao Lin, Shiyou Zhao, Hui Peng, Huimin Lu, Junhao Xiao
2026 J jnl
CoRR
Yufei Liu, Xieyuanli Chen, Hainan Pan, Chenghao Shi, Yanjie Chen, Kaihong Huang, Zhiwen Zeng, Huimin Lu
2026 J jnl
Pattern Recognit. Lett.
Junfeng Shi, Hainan Pan, Kaihong Huang
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Kaihong Huang, Zhangli Sun, Shuaibo Zhou, Lin Tu, Yi Xiong, Hangtong Wang, Chenxi Yang
2025 A conf
IROS
Junfeng Shi, Kaihong Huang, Hainan Pan, Junpeng Xu, Chuang Cheng, Hui Zhang
2025 A conf
IROS
Hainan Pan, Kaihong Huang, Xieyuanli Chen, Hongchuan Zhang, Junfeng Shi, Chuang Cheng, Bailiang Chen, Huimin Lu
2025 J jnl
CoRR
Zhiwei Zhang, Hui Zhang, Kaihong Huang, Chenghao Shi, Huimin Lu
2025 A conf
IROS
Yiming Fang, Xieyuanli Chen, Neng Wang, Kaihong Huang, Huimin Lu
2025 J jnl
CoRR
Kun Liu, Junhao Xiao, Hao Lin, Yue Cao, Hui Peng, Kaihong Huang, Huimin Lu
2025 J jnl
IEEE Robotics Autom. Lett.
Kun Liu, Junhao Xiao, Hao Lin, Yue Cao, Hui Peng, Kaihong Huang, Huimin Lu
2024 J jnl
Remote. Sens.
Kaihong Huang, Zhangli Sun, Yi Xiong, Lin Tu, Chenxi Yang, Hangtong Wang
2024 A* conf
DAC
Kaihong Huang, Dian Shen, Zhaoyang Wang, Juntao Yang, Beilun Wang
2023 J jnl
Remote. Sens.
Hainan Pan, Xieyuanli Chen, Junkai Ren, Bailiang Chen, Kaihong Huang, Hui Zhang, Huimin Lu
2023 J jnl
CoRR
Hainan Pan, Bailiang Chen, Kaihong Huang, Junkai Ren, Xieyuanli Chen, Huimin Lu
2023 A conf
IROS
Wenbang Deng, Kaihong Huang, Qinghua Yu, Huimin Lu, Zhiqiang Zheng, Xieyuanli Chen
2023 J jnl
CoRR
Wenbang Deng, Kaihong Huang, Qinghua Yu, Huimin Lu, Zhiqiang Zheng, Xieyuanli Chen
2023 J jnl
J. Field Robotics
Bailiang Chen, Kaihong Huang, Hainan Pan, Haoran Ren, Xieyuanli Chen, Junhao Xiao, Wenqi Wu, Huimin Lu
2022 conf
CACRE
Di Zhu, Chuang Cheng, Kaihong Huang, Lin Lang, Huimin Lu, Zhiqiang Zheng
2021 J jnl
Sensors
Kaihong Huang, Chunshu Li, Jiaqi Zhang, Beilun Wang
2021 conf
ROBIO
Haoran Ren, Kaihong Huang, Zhiqian Zhou, Xiao Li, Zongtan Zhou
2021 J jnl
IEEE Robotics Autom. Lett.
Chenghao Shi, Xieyuanli Chen, Kaihong Huang, Junhao Xiao, Huimin Lu, Cyrill Stachniss
2020 J jnl
IEEE Trans. Ind. Informatics
Junhao Xiao, Dan Xiong, Qinghua Yu, Kaihong Huang, Huimin Lu, Zhiwen Zeng
2020 J jnl
IEEE Access
Wenbang Deng, Kaihong Huang, Xieyuanli Chen, Zhiqian Zhou, Chenghao Shi, Ruibin Guo, Hui Zhang
2019 A* conf
ICRA
Kaihong Huang, Junhao Xiao, Cyrill Stachniss
2019 J jnl
IEEE Access
Chenghao Shi, Kaihong Huang, Qinghua Yu, Junhao Xiao, Huimin Lu, Chenggang Xie
2018
Kaihong Huang
2018 A conf
IROS
Kaihong Huang, Cyrill Stachniss
2018 A* conf
ICRA
Kaihong Huang, Cyrill Stachniss
2017 A conf
IROS
Kaihong Huang, Cyrill Stachniss
2016 J jnl
Ind. Robot
Dan Xiong, Junhao Xiao, Huimin Lu, Zhiwen Zeng, Qinghua Yu, Kaihong Huang, Xiaodong Yi, Zhiqiang Zheng
2012 C conf
RoboCup
Huimin Lu, Kaihong Huang, Dan Xiong, Xun Li, Zhiqiang Zheng
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("/", ".")