Wei Chen

22 papers A* 3Journal 11Unranked 8
YearRankTypeTitle / Venue / Authors
2026 J jnl
Expert Syst. Appl.
Guang Liu, Mengqi Liao, Wei Chen, Zhiyu Zhang, Huaiyu Wan, Youfang Lin
2025 conf
ACL (1)
Zhiyu Zhang, Wei Chen, Youfang Lin, Huaiyu Wan
2025 J jnl
CoRR
Zhiyu Zhang, Wei Chen, Youfang Lin, Huaiyu Wan
2025 J jnl
IEEE Trans. Knowl. Data Eng.
Wei Chen, Haoyu Huang, Zhiyu Zhang, Tianyi Wang, Youfang Lin, Liang Chang, Huaiyu Wan
2025 A* conf
AAAI
Shuyuan Zhao, Wei Chen, Boyan Shi, Liyong Zhou, Shuohao Lin, Huaiyu Wan
2024 J jnl
CoRR
Wei Chen, Yuting Wu, Shuhan Wu, Zhiyu Zhang, Mengqi Liao, Youfang Lin, Huaiyu Wan
2024 conf
LREC/COLING
Shuohao Lin, Wei Chen, Yunpeng Gao, Zhishu Jiang, Mengqi Liao, Zhiyu Zhang, Shuyuan Zhao, Huaiyu Wan
2024 A* conf
ICDE
Wei Chen, Huaiyu Wan, Yuting Wu, Shuyuan Zhao, Jiayaqi Cheng, Yuxin Li, Youfang Lin
2024 A* conf
ICDE
Yuyang Wei, Wei Chen, Xiaofang Zhang, Pengpeng Zhao, Jianfeng Qu, Lei Zhao
2024 J jnl
CoRR
Shuyuan Zhao, Wei Chen, Boyan Shi, Liyong Zhou, Shuohao Lin, Huaiyu Wan
2023 J jnl
CoRR
Wei Chen, Huaiyu Wan, Yuting Wu, Shuyuan Zhao, Jiayaqi Cheng, Yuxin Li, Youfang Lin
2023 conf
EMNLP (Findings)
Shuhan Wu, Huaiyu Wan, Wei Chen, Yuting Wu, Junfeng Shen, Youfang Lin
2023 J jnl
CoRR
Shuhan Wu, Huaiyu Wan, Wei Chen, Yuting Wu, Junfeng Shen, Youfang Lin
2022 J jnl
Knowl. Based Syst.
Wei Chen, Huaiyu Wan, Shengnan Guo, Haoyu Huang, Shaojie Zheng, Jiamu Li, Shuohao Lin, Youfang Lin
2021 J jnl
Data Intell.
Qian Guo, Wei Chen, Huaiyu Wan
2021 J jnl
Appl. Intell.
Liang Chang, Wei Chen, Jianbo Huang, Chenzhong Bin, Wenkai Wang
2021 J jnl
Sci. Program.
Tianlong Gu, Hongliang Chen, Chenzhong Bin, Liang Chang, Wei Chen
2021 conf
EMBC
He Wang, Mirabel Ewura Esi Acquah, Xinmiao Zhang, Qian Xu, Wei Chen, Dong-Yun Gu
2019 conf
PRICAI (1)
Guiming Zhu, Chenzhong Bin, Tianlong Gu, Liang Chang, Yanpeng Sun, Wei Chen, Zhonghao Jia
2019 conf
AIIPCC
Wenkai Wang, Liang Chang, Chenzhong Bin, Wen Xuan, Wei Chen, Long Li
2019 conf
PRICAI (1)
Wei Chen, Liang Chang, Chenzhong Bin, Tianlong Gu, Zhonghao Jia
2018 conf
ISCID (2)
Yiqin Luo, Liang Chang, Guanjun Rao, Wei Chen, Tianlong Gu
redb/extractors/apk_extractor.py
← Index redb/extractors/apk_extractor.py python
import logging
import zipfile
from abc import ABCMeta, abstractmethod

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


@abstractmethod
class APKExtractor(Extractor, metaclass=ABCMeta):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        known_benign=False,
        known_malicious=False,
        apk=None,
    ):
        # Read binary data before calling super().__init__ so that the
        # binary property override is available during hash computation.
        with open(filepath, "rb") as f:
            self._binary_data = f.read()

        self.apk = apk if apk else self._generate_apk_object(filepath)

        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            known_benign=known_benign,
            known_malicious=known_malicious,
        )

    @property
    def binary(self):
        """Override to use already-read binary data."""
        return self._binary_data

    def _generate_apk_object(self, filepath):
        """Parse APK using androguard."""
        apk = None
        try:
            # Suppress verbose androguard loguru DEBUG/INFO output
            from loguru import logger as loguru_logger
            loguru_logger.disable("androguard")
            from androguard.core.apk import APK
            apk = APK(filepath)
            if not apk.is_valid_APK():
                logger.warning(
                    f"APK validation warning for {filepath}"
                )
                # Still return the object — partial parsing may still work
        except Exception as e:
            logger.error(
                f"Format error parsing APK {filepath}: {e}"
            )
        return apk

    def _is_valid_apk(self):
        """Check if the APK object was parsed successfully."""
        return self.apk is not None

    def _get_zip_file(self):
        """Get a zipfile.ZipFile handle for direct archive inspection."""
        try:
            return zipfile.ZipFile(self.filepath, 'r')
        except (zipfile.BadZipFile, Exception) as e:
            self.log.error(f"Failed to open APK as ZIP: {e}")
            return None

    def _list_files(self):
        """List all files in the APK archive."""
        if not self._is_valid_apk():
            return []
        try:
            return self.apk.get_files()
        except Exception as e:
            self.log.error(f"Error listing APK files: {e}")
            return []