Weifeng Liu

56 papers C 3Journal 20Unranked 33
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Robotics Autom. Lett.
Chuang Chen, Weifeng Liu, Lei Cai
2026 J jnl
Signal Process.
Xiaomeng Cao, Jian Lan, Weifeng Liu, Ruiqing Xi
2024 conf
ICCAIS
Weifeng Liu, Wanyu Li, Liwen Ma
2024 conf
ICCAIS
Mengfan Zhang, Weifeng Liu, Xingyu Xia
2024 J jnl
IEEE Trans. Instrum. Meas.
Qiankun Sun, Weifeng Liu, Chenglin Wen, Lei Cai
2024 J jnl
Int. J. Mach. Learn. Cybern.
Chenglin Wen, Fangwen Zhao, Weifeng Liu
2023 conf
ICCAIS
Qiankun Sun, Weifeng Liu, Chenglin Wen
2023 J jnl
EURASIP J. Adv. Signal Process.
Weifeng Liu, Qiliang Liu, Yimei Chen, Hailong Cui
2023 J jnl
Sensors
Nan Zhang, Weifeng Liu, Xingyu Xia
2022 J jnl
Sensors
Miao Wang, Weifeng Liu, Chenglin Wen
2022 conf
ICCAIS
Liwen Ma, Weifeng Liu
2022 conf
CCIS
Liwen Ma, Weifeng Liu, Yaning Wang
2022 J jnl
Sensors
Fangwen Zhao, Weifeng Liu, Chenglin Wen
2022 conf
CCIS
Xingyu Xia, Weifeng Liu, Zhangming Peng
2022 conf
ICCAIS
Weifeng Liu, Nan Zhang, Yaning Wang, Wu Di
2022 J jnl
EURASIP J. Adv. Signal Process.
Weifeng Liu, Zhi Zhao, Qiliang Liu, Zhangming Peng
2022 J jnl
IEEE Robotics Autom. Lett.
Weijie Shi, Zhou He, Wei Tang, Weifeng Liu, Ziyue Ma
2021 conf
CCIS
Liwen Ma, Weifeng Liu
2021 conf
ICCAIS
Shaoyong Qu, Weifeng Liu, Jianning Li, Zhangming Peng
2021 conf
CCIS
Nan Zhang, Weifeng Liu, Yaning Wang
2021 conf
ICCAIS
Yaning Wang, Weifeng Liu, Jianning Li, Zhangming Peng
2021 conf
ICCAIS
Zhi Zhao, Weifeng Liu, Sen Wang, Shibo Gao
2021 conf
ICCAIS
Haojie Yang, Weifeng Liu, Zhangming Peng
2021 conf
ICCAIS
Jia Wei Tang, Weifeng Liu, Seng Wang, Shibo Gao
2020 J jnl
Sensors
Xinfeng Ru, Yudong Chi, Weifeng Liu
2019 conf
ICCAIS
Zhengwang Tian, Weifeng Liu, Xinfeng Ru
2019 J jnl
Sensors
Zhengwang Tian, Weifeng Liu, Xinfeng Ru
2019 J jnl
Sensors
Weifeng Liu, Yudong Chi
2019 conf
ICCAIS
Xinfeng Ru, Weifeng Liu, Zhengwang Tian
2019 J jnl
Sensors
Cong-Thanh Do, Tran Thien Dat Nguyen, Weifeng Liu
2018 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Weifeng Liu, Yimei Chen, Hailong Cui, Chenglin Wen
2018 C conf
FUSION
Yan Liu, Deqiang Han, Zhe Zhang, Weifeng Liu, Feihu Zhang
2018 conf
ICCAIS
Jing Zhang, Deqing Zhang, Mingyue Yang, Xiaobin Xu, Weifeng Liu, Chenglin Wen
2018 conf
ICCAIS
Jiarui Xing, Weifeng Liu, Mingxin Kong
2018 conf
ICCAIS
Mingxin Kong, Jing Zhang, Weifeng Liu, Guilin Zhang
2018 conf
ICCAIS
Yudong Chi, Weifeng Liu
2018 conf
ICARM
Meiguang He, Quanbo Ge, Weifeng Liu
2018 J jnl
Autom.
Weifeng Liu, Shujun Zhu, Chenglin Wen, Yongsheng Yu
2017 conf
ICCAIS
Weifeng Liu, Yimei Chen, Hailong Cui, Quanbo Ge
2017 conf
ICCAIS
Yimei Chen, Weifeng Liu, Xudong Wang
2017 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Amirali Khodadadian Gostar, Reza Hoseinnezhad, Alireza Bab-Hadiashar, Weifeng Liu
2016 C conf
FUSION
Weifeng Liu, Hailong Cui, Chenglin Wen
2016 conf
ICCAIS
Baishen Wei, Brett Nener, Weifeng Liu, Liang Ma
2016 conf
ICCAIS
Weifeng Liu, Shujun Zhu, Chenglin Wen
2015 conf
ICCAIS
Weifeng Liu, Chenglin Wen, Hailong Cui
2015 conf
ICCAIS
Weifeng Liu, Baishen Wei, Shujun Zhu
2015 conf
ICCAIS
Baishen Wei, Brett Nener, Weifeng Liu
2014 conf
ICSI (2)
Weifeng Liu, Chenglin Wen, Shuyu Ding
2014 conf
ICCAIS
Weifeng Liu, Guangzhou Luo, Chenglin Wen
2014 C conf
FUSION
Weifeng Liu, Chenglin Wen
2014 conf
ICCAIS
Weifeng Liu, Chenglin Wen
2012 J jnl
Signal Process.
Weifeng Liu, Chenglin Wen, Chongzhao Han, Feng Lian
2012 conf
ICSI (2)
Weifeng Liu, Zhong Chai, Chenglin Wen
2012 J jnl
Sci. China Inf. Sci.
Feng Lian, Chongzhao Han, Weifeng Liu, Jing Liu, Xianghui Yuan
2012 J jnl
Signal Process.
Feng Lian, Chongzhao Han, Weifeng Liu, Jing Liu, Jian Sun
2011 conf
ICSI (2)
Weifeng Liu, Chenglin Wen
redb/extractors/apk_extractors/apk_native_libs.py
← Index redb/extractors/apk_extractors/apk_native_libs.py python
import fnmatch
import hashlib
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.apk_extractor import APKExtractor
from redb.models.dataclasses import APKNativeLib

# Known packer/protector native library names
KNOWN_PACKER_LIBS = {
    # Jiagu (360/Qihoo)
    "libjiagu.so", "libjiagu_a64.so", "libjiagu_x86.so", "libjiagu_x64.so",
    # Bangcle/SecNeo
    "libsecexe.so", "libsecmain.so", "libSecShell.so",
    # Baidu
    "libbaiduprotect.so",
    # Tencent (Legu)
    "libtxAppProtect.so", "libBugly.so",
    # iJiami
    "libexec.so", "libexecmain.so",
    # Alibaba
    "libmobisec.so", "libaliprotect.so",
    # APKProtect
    "libAPKProtect.so",
    # Pangxie (Pangolin)
    "libdexjni.so",
    # DexProtector
    "libdexprotector.so",
    # AppSolid
    "libAppSolid.so",
    # Kiwisec
    "libkwscmm.so",
    # DingXiang
    "libx3g.so",
    # NQ Shield
    "libnqshield.so",
    # Generic / other
    "libprotectClass.so",
    "libDexHelper.so",
    "libdexloader.so",
    "libfdog.so",
}

# Glob-style patterns for packer libs (e.g. libshella-*.so)
KNOWN_PACKER_PATTERNS = [
    "libshella-*.so",
    "libshell-super.*.so",
]


def is_known_packer_lib(filename):
    """Check if a native library filename matches known packer signatures."""
    if filename in KNOWN_PACKER_LIBS:
        return True
    for pattern in KNOWN_PACKER_PATTERNS:
        if fnmatch.fnmatch(filename, pattern):
            return True
    return False


class APKNativeLibExtractor(APKExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False,
        apk=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, apk,
        )
        self.native_libs = []
        self.abis = set()
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.APK_NATIVE_LIBS.value

    def extract(self):
        if not self._is_valid_apk():
            self.log.error(f"Invalid APK for {self.hash.sha256}")
            return None

        self.native_libs = []
        self.abis = set()

        zf = self._get_zip_file()
        if not zf:
            return None

        with zf:
            for info in zf.infolist():
                if not (info.filename.startswith("lib/") and info.filename.endswith(".so")):
                    continue
                parts = info.filename.split("/")
                if len(parts) < 3:
                    continue

                abi = parts[1]
                filename = parts[-1]
                self.abis.add(abi)

                try:
                    data = zf.read(info.filename)
                    lib_sha256 = hashlib.sha256(data).hexdigest()
                except Exception as e:
                    self.log.warning(f"Error reading native lib {info.filename}: {e}")
                    continue

                self.native_libs.append(APKNativeLib(
                    abi=abi,
                    filename=filename,
                    size=info.file_size,
                    sha256=lib_sha256,
                    is_known_packer=is_known_packer_lib(filename),
                ))

        if not self.native_libs:
            return None

        return {
            "native_lib_count": len(self.native_libs),
            "abis": sorted(self.abis),
            "native_libs": self.native_libs,
            "known_packer_libs": [
                lib for lib in self.native_libs if lib.is_known_packer
            ],
        }

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.native_libs:
                return None

            current_time = datetime.now(timezone.utc)
            data = []
            for lib in self.native_libs:
                data.append([
                    self.sha256,
                    lib.abi,
                    lib.filename,
                    lib.size,
                    lib.sha256,
                    int(lib.is_known_packer),
                    current_time,
                ])

            column_names = [
                'sha256', 'lib_abi', 'lib_filename', 'lib_size',
                'lib_sha256', 'lib_is_known_packer', 'analysis_date',
            ]

            column_type_names = [
                'FixedString(64)', 'LowCardinality(String)', 'String', 'UInt64',
                'FixedString(64)', 'UInt8', "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_apk_native_libs"