Xianqing Jin

19 papers B 2Misc 1Unranked 16
YearRankTypeTitle / Venue / Authors
2022 conf
CSNDSP
Yixun Xiang, Xianqing Jin, Nuo Huang, Chen Gong
2021 conf
VTC Fall
Jiaqi He, Xianqing Jin, Chen Gong, Nuo Huang, Zhengyuan Xu
2020 conf
ICC Workshops
Yonghe Zhu, Chen Gong, Jianghua Luo, Meiyu Jin, Xianqing Jin, Zhengyuan Xu
2020 conf
ICC Workshops
Weibin Jiang, Xianqing Jin, Yingwen Zhang, Meiyu Jin, Chen Gong, Zhengyuan Xu
2019 conf
ICC Workshops
Jiajun Deng, Xianqing Jin, Xiaoting Ma, Meiyu Jin, Chen Gong, Zhengyuan Xu
2019 conf
WCSP
Minan Chen, Xianqing Jin, Zhengyuan Xu
2019 conf
WCSP
Xiaoting Ma, Xianqing Jin, Jiajun Deng, Meiyu Jin, Chen Gong, Zhengyuan Xu
2019 conf
WCSP
Shangbin Li, Xianqing Jin, Chen Gong, Shuang Liang, Qiqi Pan, Zhengyuan Xu
2018 conf
ICC Workshops
Qingqing Hu, Xianqing Jin, Zhengyuan Xu
2017 B conf
IWCMC
Chao Liu, Xianqing Jin, Wenwei Zhu, Meiyu Jin, Zhengyuan Xu
2017 B conf
IWCMC
Haifeng Luan, Xianqing Jin, Weijie Liu, Meiyu Jin, Zhengyuan Xu
2017 conf
WCSP
Mian Zeng, Kaixiong Zhou, Chen Gong, Shun Lou, Xianqing Jin, Zhengyuan Xu
2017 conf
ECOC
Runyao Yang, Xianqing Jin, Meiyu Jin, Zhengyuan Xu
2017 conf
OFC
Feng Feng, Xianqing Jin, Dominic C. O'Brien, Frank P. Payne, Timothy D. Wilkinson
2016 conf
OFC
Feng Feng, Xuhan Guo, George S. D. Gordon, Xianqing Jin, Frank P. Payne, Yongmin Jung, Qiongyue Kang, Shaif-Ul Alam, Pranabesh Barua, J. K. Sahu, David J. Richardson, Ian H. White, Timothy D. Wilkinson
2016 Misc conf
ICCS
Yanfeng Mao, Haifeng Luan, Weijie Liu, Runyao Yang, Meiyu Jin, Xianqing Jin, Zhengyuan Xu
2016 conf
OFC
Kai Shi, Ariel Gómez, Xianqing Jin, Yongmin Jung, Crisanto Quintana, Dominic C. O'Brien, Frank P. Payne, Pranabesh Barua, Jayanta Kumar Sahu, Qiongyue Kang, Shaif-Ul Alam, David J. Richardson, Benn C. Thomsen
2015 conf
OFC
Feng Feng, George S. D. Gordon, Xianqing Jin, Dominic C. O'Brien, Frank P. Payne, Yongmin Jung, Qiongyue Kang, J. K. Sahu, Shaif-Ul Alam, David J. Richardson, Timothy D. Wilkinson
2014 conf
ECOC
Qiongyue Kang, Ee Leong Lim, Yongmin Jung, Xianqing Jin, Frank P. Payne, Shaif-Ul Alam, David J. Richardson
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 []