Xianmin Wang

115 papers B 5C 2Journal 96Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
Pattern Anal. Appl.
Yi Ding, Yilin Zhang, Xiaoyong Zhang, Mingsheng Cao, Xianmin Wang
2026 J jnl
Comput. Medical Imaging Graph.
Xianmin Wang, Mingfeng Lin, Jing Li
2026 J jnl
Frontiers Neurorobotics
Xianmin Wang, Jing Li
2025 J jnl
IEEE Trans. Emerg. Top. Comput. Intell.
Di Wu, Yuanpeng Hu, Kechen Liu, Jing Li, Xianmin Wang, Song Deng, Nenggan Zheng, Xin Luo
2025 J jnl
Quantum Inf. Process.
Jing Li, Weihua Chen, Xianmin Wang
2025 J jnl
Frontiers Neurorobotics
Xianmin Wang, Jing Li
2025 J jnl
IEEE Trans. Fuzzy Syst.
Ye Cui, Hanyu E, Witold Pedrycz, ZhiWu Li, Xianmin Wang
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Kai Wang, Xubing Zhang, Xianmin Wang, Lili Yu
2025 J jnl
Eng. Appl. Artif. Intell.
Kai Wang, Xubing Zhang, Xianmin Wang, Zhouyuan Qian
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yue Shen, Xianmin Wang, Xiaoyu Yi, Li Cao, Haixiang Guo, Haixia Mao, Xubing Zhang, Chen Liu, Xuewen Wang
2025 J jnl
Quantum Inf. Process.
Jing Li, Congcong Wang, Xianmin Wang
2025 J jnl
ISPRS Int. J. Geo Inf.
Xin Gao, Xianmin Wang, Li Cao, Haixiang Guo, Wenxue Chen, Xing Zhai
2024 J jnl
Wirel. Networks
Wei Wang, Xianmin Wang, Mingliang Zhou, Xuekai Wei, Jing Li, Xiaojun Ren, Xuemei Zong
2024 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Xuewen Wang, Xianmin Wang, Yuchen Zheng, Zhiwei Liu, Wenxiang Xia, Haixiang Guo, Dongdong Li
2024 J jnl
IEEE Trans. Mob. Comput.
Shaowei Wang, Yuntong Li, Yusen Zhong, Kongyang Chen, Xianmin Wang, Zhili Zhou, Fei Peng, Yuqiu Qian, Jiachun Du, Wei Yang
2024 J jnl
Remote. Sens.
Aomei Zhang, Xianmin Wang, Chong Xu, Qiyuan Yang, Haixiang Guo, Dongdong Li
2024 J jnl
IEEE Trans. Fuzzy Syst.
Witold Pedrycz, Xianmin Wang
2024 J jnl
Eng. Appl. Artif. Intell.
Ziyu Cheng, Xianmin Wang, Jing Li, Feng Liu, Yutong Xie, Haiyan Liang
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xuewen Wang, Xianmin Wang, Haixiang Guo, Aomei Zhang
2023 J jnl
Soft Comput.
Jinbo Li, Witold Pedrycz, Xianmin Wang, Peng Liu
2023 J jnl
Remote. Sens.
Qiyuan Yang, Xianmin Wang, Xinlong Zhang, Jianping Zheng, Yu Ke, Lizhe Wang, Haixiang Guo
2023 conf
AIS&P (1)
Xingjiang Cheng, Fuxing Zhang, Yun Peng, Xianmin Wang, Teng Huang, Ziye Zhou, Duncan S. Wong, Changyu Dong
2023 J jnl
Intell. Autom. Soft Comput.
Qi Liu, Jing Li, Xianmin Wang, Wenpeng Zhao
2023 J jnl
Comput. Stand. Interfaces
Yuling Chen, Yufeng Li, Qi Chen, Xianmin Wang, Tao Li, Chaoyue Tan
2023 B conf
MDM
Gaoming Zhang, Sen Lin, Xianmin Wang, Teng Huang, Xuan Hu, Lingyun Zou
2023 J jnl
Intell. Data Anal.
Tianxiang Zheng, Xianmin Wang, Yixiang Chen, Fujia Yu, Jing Li
2023 J jnl
Intell. Autom. Soft Comput.
Zhicong Qiu, Xianmin Wang, Huawei Ma, Songcao Hou, Jing Li, Zuoyong Li
2023 J jnl
Int. J. Digit. Earth
Xuewen Wang, Xianmin Wang, Xinlong Zhang, Lizhe Wang, Haixiang Guo, Dongdong Li
2022 J jnl
IEEE Trans. Fuzzy Syst.
Witold Pedrycz, Adam Gacek, Xianmin Wang
2022 J jnl
Sensors
Jiewei Lai, Yantong Huo, Ruitao Hou, Xianmin Wang
2022 J jnl
Int. J. Intell. Syst.
Zeren Luo, Chuangwei Zhu, Lujie Fang, Guang Kou, Ruitao Hou, Xianmin Wang
2022 J jnl
Int. J. Intell. Syst.
Xuekai Wei, Jin Li, Mingliang Zhou, Xianmin Wang
2022 J jnl
Int. J. Intell. Syst.
Yuling Chen, Juan Ma, Xianmin Wang, Xinyu Zhang, Huiyu Zhou
2022 J jnl
Frontiers Neurorobotics
Xianmin Wang, Jing Li, Qi Liu, Wenpeng Zhao, Zuoyong Li, Wenhao Wang
2022 J jnl
IEEE Trans. Cybern.
Xingchen Hu, Yinghua Shen, Witold Pedrycz, Xianmin Wang, Adam Gacek, Bingsheng Liu
2022 conf
SmartWorld/UIC/ScalCom/DigitalTwin/PriComp/Meta
Yuanpeng Hu, Xianmin Wang, Cheng Liang, Jing Li, Di Wu, Yi He
2022 J jnl
Concurr. Comput. Pract. Exp.
Xin Xie, Xunyi Jiang, Weiru Wang, Bin Wang, Tiancheng Wan, Wenliang Tang, Xianmin Wang
2022 J jnl
Int. J. Intell. Syst.
Cheng Ji, Zongwei Zhu, Xianmin Wang, Wenjie Zhai, Xuemei Zong, Anqi Chen, Mingliang Zhou
2022 J jnl
Int. J. Intell. Syst.
Anli Yan, Ruitao Hou, Xiaozhang Liu, Hongyang Yan, Teng Huang, Xianmin Wang
2021 conf
WCSP
Zhaoni Liu, Xianmin Wang, Zhikun Chen, Ming Zhao, Sihai Zhang, Jingyue Li
2021 J jnl
IEEE Trans. Fuzzy Syst.
Witold Pedrycz, Adam Gacek, Xianmin Wang
2021 J jnl
Enterp. Inf. Syst.
Xianmin Wang, Jing Li, Hongyang Yan
2021 J jnl
IEEE Trans. Fuzzy Syst.
Bowen Zhang, Witold Pedrycz, Xianmin Wang, Adam Gacek
2021 J jnl
Int. J. Mach. Learn. Cybern.
Hongqiao Chen, Keda Lu, Xianmin Wang, Jin Li
2021 J jnl
IEEE Trans. Fuzzy Syst.
Yinghua Shen, Witold Pedrycz, Xuyang Jing, Adam Gacek, Xianmin Wang, Bingsheng Liu
2021 J jnl
IEEE Trans. Intell. Transp. Syst.
Xianmin Wang, Xiaohui Kuang, Jin Li, Jing Li, Xiaofeng Chen, Zheli Liu
2020 J jnl
J. Netw. Comput. Appl.
Teng Huang, Qixiang Zhang, Jiabao Liu, Ruitao Hou, Xianmin Wang, Ya Li
2020 J jnl
Inf. Sci.
Teng Huang, Yongfeng Chen, Bingjian Yao, Bifen Yang, Xianmin Wang, Ya Li
2020 J jnl
IEEE Trans. Cybern.
Yinghua Shen, Witold Pedrycz, Xianmin Wang
2020 J jnl
IEEE Trans. Ind. Electron.
Xiaozhen Zhao, Chenguo Yao, Zehong Zhou, Chengxiang Li, Xianmin Wang, Tianyu Zhu, Ahmed Abu-Siada
2020 J jnl
IEEE Trans. Fuzzy Syst.
Yinghua Shen, Witold Pedrycz, Yuan Chen, Xianmin Wang, Adam Gacek
2020 J jnl
Soft Comput.
Jianhong Zhang, Wenle Bai, Xianmin Wang
2020 conf
ML4CS (3)
Zongwei Zhu, Chao Wu, Cheng Ji, Xianmin Wang
2020 J jnl
Int. J. Intell. Syst.
Zongwei Zhu, Chao Wu, Cheng Ji, Xianmin Wang
2020 J jnl
Appl. Soft Comput.
Xu Gou, Linbo Qing, Yi Wang, Mulin Xin, Xianmin Wang
2020 B conf
GLOBECOM
Xianmin Wang, Zhikun Chen, Sihai Zhang, Jinkang Zhu
2019 J jnl
IEEE Access
Zhijun Wei, Jin Li, Xianmin Wang, Chong-zhi Gao
2019 J jnl
Inf. Sci.
Qikun Zhang, Xianmin Wang, Junling Yuan, Lu Liu, Ruifang Wang, Hong Huang, Yuanzhang Li
2019 J jnl
J. Netw. Comput. Appl.
Xiaosong Zhang, Liehuang Zhu, Xianmin Wang, Changyou Zhang, Hongfei Zhu, Yu-an Tan
2019 conf
WTS
Zhiwei Mao, Xianmin Wang
2019 J jnl
J. Univers. Comput. Sci.
Xianmin Wang, Yu Zhang, Brij Bhooshan Gupta, Hongfei Zhu, Dongxi Liu
2019 J jnl
IEEE Trans. Cybern.
Yinghua Shen, Witold Pedrycz, Xianmin Wang
2019 B conf
FUZZ-IEEE
Yinghua Shen, Witold Pedrycz, Ronei Marcos de Moraes, Xingchen Hu, Xianmin Wang, Adam Gacek
2019 conf
CSS (2)
Xiaohui Kuang, Ming Zhang, Hu Li, Gang Zhao, Huayang Cao, Zhendong Wu, Xianmin Wang
2019 J jnl
IEEE Access
Chengxiang Li, Yan Zhou, Pengfei Wang, Xianmin Wang, Shoulong Dong, Jian Du, Zhigang Liao, Chenguo Yao, Jianwen Tan, Yan Mi
2019 J jnl
J. Parallel Distributed Comput.
Jing Li, Xianmin Wang, Zhengan Huang, Licheng Wang, Yang Xiang
2019 J jnl
Inf. Sci.
Xianmin Wang, Jing Li, Jin Li, Hongyang Yan
2019 J jnl
Knowl. Based Syst.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2019 J jnl
IEEE Access
Zhanqiang Liu, Licheng Wang, Xianmin Wang, Xiaoying Shen, Lixiang Li
2019 conf
WCSP
Xianmin Wang, Tian Lan, Sihai Zhang, Jinkang Zhu
2019 J jnl
J. Parallel Distributed Comput.
Xianmin Wang, Jing Li, Xiaohui Kuang, Yu-an Tan, Jin Li
2019 J jnl
Concurr. Comput. Pract. Exp.
Jing Li, Licheng Wang, Lihua Wang, Xianmin Wang, Zhengan Huang, Jin Li
2018 J jnl
Inf. Sci.
Chen Liang, Xianmin Wang, Xiaosong Zhang, Yu Zhang, Kashif Sharif, Yu-an Tan
2018 J jnl
Sensors
Hongfei Zhu, Yu-an Tan, Liehuang Zhu, Xianmin Wang, Quanxin Zhang, Yuanzhang Li
2018 J jnl
J. Netw. Comput. Appl.
Qikun Zhang, Yong Gan, Lu Liu, Xianmin Wang, Xiangyang Luo, Yuanzhang Li
2018 J jnl
Wirel. Commun. Mob. Comput.
Liaoliang Jiang, Tong Li, Xuan Li, Mohammed Atiquzzaman, Haseeb Ahmad, Xianmin Wang
2018 J jnl
J. Netw. Comput. Appl.
Chen Liang, Yu-an Tan, Xiaosong Zhang, Xianmin Wang, Jun Zheng, Quanxin Zhang
2018 J jnl
Secur. Commun. Networks
Youwen Zhu, Yue Zhang, Jiabin Yuan, Xianmin Wang
2018 J jnl
Pattern Recognit.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2018 J jnl
Secur. Commun. Networks
Libing Wu, Zhiyan Xu, Debiao He, Xianmin Wang
2018 J jnl
Soft Comput.
Li Yang, Yuting Cheng, Xianmin Wang, Qiang Liu
2018 J jnl
IEICE Trans. Commun.
Zhiwei Mao, Xianmin Wang
2018 B conf
NSS
Weizhi Meng, Jianfeng Wang, Xianmin Wang, Joseph K. Liu, Zuoxia Yu, Jin Li, Yongjun Zhao, Sherman S. M. Chow
2018 J jnl
Wirel. Commun. Mob. Comput.
Ye Li, Zoe Lin Jiang, Xuan Wang, Junbin Fang, En Zhang, Xianmin Wang
2017 J jnl
IEEE Geosci. Remote. Sens. Lett.
Ke Wu, Yanfei Zhong, Xianmin Wang, Weiwei Sun
2017 J jnl
Appl. Soft Comput.
Xingchen Hu, Witold Pedrycz, Guohua Wu, Xianmin Wang
2017 J jnl
Knowl. Based Syst.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2017 J jnl
Knowl. Based Syst.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2017 J jnl
IEEE Trans. Fuzzy Syst.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2017 J jnl
IEEE Access
Ke Wu, Qian Du, Xiangyun Hu, Xianmin Wang
2016 J jnl
Soft Comput.
Ke Wu, Lifei Wei, Xianmin Wang, Ruiqing Niu
2016 J jnl
IEEE Trans. Fuzzy Syst.
Witold Pedrycz, Xianmin Wang
2016 C conf
IGARSS
Xianmin Wang, Qizhi Xu
2016 J jnl
Appl. Soft Comput.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2015 J jnl
Int. J. Approx. Reason.
Jinbo Li, Witold Pedrycz, Xianmin Wang
2015 J jnl
Pattern Recognit. Lett.
Witold Pedrycz, Adam Gacek, Xianmin Wang
2015 J jnl
Int. J. Approx. Reason.
Xingchen Hu, Witold Pedrycz, Xianmin Wang
2015 J jnl
计算机科学
Yunchao Hao, Xianmin Wang
2013 J jnl
J. Comput.
Shuzhi Li, Xianmin Wang
2011 J jnl
J. Softw.
Xianmin Wang, Ruiqing Niu
2011 J jnl
IEICE Trans. Commun.
Zhiwei Mao, Kewei Yuan, Xianmin Wang
2010 J jnl
J. Softw.
Xianmin Wang, Ruiqing Niu
2009 J jnl
Sensors
Xianmin Wang, Ruiqing Niu
2008 J jnl
IEEE Trans. Wirel. Commun.
Zhiwei Mao, Xianmin Wang
2008 conf
CSSE (3)
Xianmin Wang, Ruiqing Niu
2007 B conf
GLOBECOM
Zhiwei Mao, Xianmin Wang, Xiaofeng Wang
2007 J jnl
IEEE Trans. Wirel. Commun.
Zhiwei Mao, Xianmin Wang, Xiaofeng Wang
2006 conf
CCECE
Xianmin Wang, Zhiwei Mao
2006 conf
VTC Fall
Zhiwei Mao, Xianmin Wang
2005 C conf
ADMA
Xianmin Wang, Zequn Guan, Chenhan Wu
2005 J jnl
IEICE Trans. Commun.
Xianmin Wang, Zhiwei Mao
2005 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xianmin Wang, Wu-Sheng Lu, Andreas Antoniou
2003 J jnl
IEEE Trans. Signal Process.
Xianmin Wang, Wu-Sheng Lu, Andreas Antoniou
2002 conf
ISCAS (1)
Xianmin Wang, Wu-Sheng Lu, Andreas Antoniou
2001 conf
ISCAS (4)
Xianmin Wang, Wu-Sheng Lu, Andreas Antoniou
redb/extractors/elf_extractor.py
← Index redb/extractors/elf_extractor.py python
import logging
from abc import ABCMeta, abstractmethod
import inspect

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


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

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious
        )
        # Store ELF object if provided, otherwise we'll create it per-operation for security
        self._provided_elf = elf
        self._elf_file_valid = None  # Cache validity check

    def _with_elf_file(self, operation):
        """Safely execute an operation with an ELF file using context manager.

        Args:
            operation: A callable that takes an ELFFile object and returns a result

        Returns:
            The result of the operation, or None if an error occurred
        """
        if self._provided_elf:
            try:
                return operation(self._provided_elf)
            except ELFError as e:
                if "String Table not found" in str(e):
                    self.log.warning(f"String table missing in ELF {self.hash.sha256}: {e}")
                    return None
                else:
                    self.log.error(f"ELF format error {self.hash.sha256} Full error: {e}")
                    return None
            except Exception as e:
                self.log.error(f"Error processing ELF file {self.hash.sha256} Full error: {e}")
                return None

        try:
            with open(self.filepath, 'rb') as f:
                elf = ELFFile(f)
                if not elf:
                    raise ELFError("Empty file?")
                return operation(elf)
        except ELFError as e:
            if "String Table not found" in str(e):
                self.log.warning(f"String table missing in ELF {self.hash.sha256}: {e}")
                return None
            else:
                self.log.error(f"ELF format error {self.hash.sha256} Full error: {e}")
                return None
        except Exception as e:
            self.log.error(f"Error reading ELF file {self.hash.sha256} Full error: {e}")
            return None

    def _is_elf_file(self):
        """Check if the file is a valid ELF binary."""
        if self._elf_file_valid is not None:
            return self._elf_file_valid

        def check_elf_validity(elf):
            # pyelftools ELFFile object existing means it's valid ELF
            # Just check that we can access the header
            header = elf.header
            return header is not None

        try:
            result = self._with_elf_file(check_elf_validity)
            self._elf_file_valid = bool(result)
            return self._elf_file_valid
        except Exception as e:
            self.log.error(f"Error checking ELF file: {e}")
            self._elf_file_valid = False
            return False

    def _is_64bit(self):
        """Check if the ELF binary is 64-bit."""
        def check_64bit(elf):
            return elf.header.get('e_ident', {}).get('EI_CLASS') == 'ELFCLASS64'

        try:
            result = self._with_elf_file(check_64bit)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking ELF bitness: {e}")
            return False

    def _is_stripped(self):
        """Check if the ELF binary is stripped (no symbol table)."""
        def check_stripped(elf):
            # Look for symbol table sections
            for section in elf.iter_sections():
                if section.name in ['.symtab', '.strtab']:
                    return False
            return True

        try:
            result = self._with_elf_file(check_stripped)
            return result if result is not None else True
        except Exception as e:
            self.log.error(f"Error checking if ELF is stripped: {e}")
            return True

    def _has_debug_info(self):
        """Check if the ELF binary contains debug information."""
        def check_debug_info(elf):
            # Look for debug sections
            debug_sections = ['.debug_info', '.debug_line', '.debug_str', '.debug_abbrev']
            for section in elf.iter_sections():
                if section.name in debug_sections:
                    return True
            return False

        try:
            result = self._with_elf_file(check_debug_info)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking debug info: {e}")
            return False

    def _get_architecture(self):
        """Get the architecture of the ELF binary."""
        def get_arch(elf):
            machine = elf.header.get('e_machine', 'EM_NONE')

            # Map common machine types to readable names
            arch_map = {
                'EM_386': 'x86',
                'EM_X86_64': 'x86_64',
                'EM_ARM': 'ARM',
                'EM_AARCH64': 'ARM64',
                'EM_MIPS': 'MIPS',
                'EM_PPC': 'PowerPC',
                'EM_PPC64': 'PowerPC64',
                'EM_SPARC': 'SPARC',
                'EM_RISCV': 'RISC-V'
            }

            return arch_map.get(machine, machine)

        try:
            result = self._with_elf_file(get_arch)
            return result if result is not None else "unknown"
        except Exception as e:
            self.log.error(f"Error getting architecture: {e}")
            return "unknown"

    def _get_endianness(self):
        """Get the endianness of the ELF binary."""
        def get_endian(elf):
            data_encoding = elf.header.get('e_ident', {}).get('EI_DATA')
            if data_encoding == 'ELFDATA2LSB':
                return "little"
            elif data_encoding == 'ELFDATA2MSB':
                return "big"
            return "unknown"

        try:
            result = self._with_elf_file(get_endian)
            return result if result is not None else "unknown"
        except Exception as e:
            self.log.error(f"Error getting endianness: {e}")
            return "unknown"

    def _get_file_type(self):
        """Get the file type of the ELF binary."""
        def get_file_type(elf):
            etype = elf.header.get('e_type', 'ET_NONE')

            # Map file types to readable names
            type_map = {
                'ET_NONE': 'none',
                'ET_REL': 'relocatable',
                'ET_EXEC': 'executable',
                'ET_DYN': 'shared_object',
                'ET_CORE': 'core_dump'
            }

            return type_map.get(etype, etype)

        try:
            result = self._with_elf_file(get_file_type)
            return result if result is not None else "unknown"
        except Exception as e:
            self.log.error(f"Error getting file type: {e}")
            return "unknown"

    def _is_pie(self):
        """Check if the ELF binary is position-independent executable."""
        def check_pie(elf):
            # PIE binaries are typically ET_DYN type
            etype = elf.header.get('e_type', 'ET_NONE')
            if etype == 'ET_DYN':
                # Check if it has an entry point (executable) vs library
                entry_point = elf.header.get('e_entry', 0)
                return entry_point > 0
            return False

        try:
            result = self._with_elf_file(check_pie)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking PIE: {e}")
            return False

    def _has_stack_protection(self):
        """Check if the binary has stack protection (canaries)."""
        def check_stack_protection(elf):
            # Look for stack protection symbols
            stack_symbols = ['__stack_chk_fail', '__stack_chk_guard']

            for section in elf.iter_sections():
                if hasattr(section, 'iter_symbols'):
                    for symbol in section.iter_symbols():
                        if symbol.name in stack_symbols:
                            return True
            return False

        try:
            result = self._with_elf_file(check_stack_protection)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking stack protection: {e}")
            return False

    def _has_nx_bit(self):
        """Check if the binary has NX bit (non-executable stack)."""
        def check_nx_bit(elf):
            # Look for GNU_STACK segment
            for segment in elf.iter_segments():
                if segment.header.get('p_type') == 'PT_GNU_STACK':
                    flags = segment.header.get('p_flags', 0)
                    # Check if execute flag is NOT set (NX enabled)
                    return not (flags & 0x1)  # PF_X = 0x1
            return False

        try:
            result = self._with_elf_file(check_nx_bit)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking NX bit: {e}")
            return False

    def _has_relro(self):
        """Check if the binary has RELRO (Relocation Read-Only)."""
        def check_relro(elf):
            # Look for GNU_RELRO segment
            for segment in elf.iter_segments():
                if segment.header.get('p_type') == 'PT_GNU_RELRO':
                    return True
            return False

        try:
            result = self._with_elf_file(check_relro)
            return bool(result)
        except Exception as e:
            self.log.error(f"Error checking RELRO: {e}")
            return False

    def _get_build_id(self):
        """Extract build ID from notes section."""
        def get_build_id(elf):
            # Look for build ID in notes sections
            for section in elf.iter_sections():
                if section.name == '.note.gnu.build-id':
                    for note in section.iter_notes():
                        if note['n_type'] == 'NT_GNU_BUILD_ID':
                            # Convert bytes to hex string
                            build_id = note['n_desc']
                            if isinstance(build_id, bytes):
                                return build_id.hex()
                            return str(build_id)
            return None

        try:
            result = self._with_elf_file(get_build_id)
            return result
        except Exception as e:
            self.log.error(f"Error getting build ID: {e}")
            return None

    def _count_sections(self):
        """Count the number of sections in the ELF file."""
        def count_sections(elf):
            return elf.header.get('e_shnum', 0)

        try:
            result = self._with_elf_file(count_sections)
            return result if result is not None else 0
        except Exception as e:
            self.log.error(f"Error counting sections: {e}")
            return 0

    def _count_segments(self):
        """Count the number of segments (program headers) in the ELF file."""
        def count_segments(elf):
            return elf.header.get('e_phnum', 0)

        try:
            result = self._with_elf_file(count_segments)
            return result if result is not None else 0
        except Exception as e:
            self.log.error(f"Error counting segments: {e}")
            return 0

    def _count_symbols(self):
        """Count the total number of symbols in symbol tables."""
        def count_symbols(elf):
            symbol_count = 0
            for section in elf.iter_sections():
                if hasattr(section, 'iter_symbols'):
                    symbol_count += section.num_symbols()
            return symbol_count

        try:
            result = self._with_elf_file(count_symbols)
            return result if result is not None else 0
        except Exception as e:
            self.log.error(f"Error counting symbols: {e}")
            return 0

    def _get_dependencies(self):
        """Get list of dynamic dependencies."""
        def get_dependencies(elf):
            dependencies = []
            dynamic_section = elf.get_section_by_name('.dynamic')
            if dynamic_section:
                for tag in dynamic_section.iter_tags():
                    if tag.entry.d_tag == 'DT_NEEDED':
                        dependencies.append(tag.needed)
            return dependencies

        try:
            result = self._with_elf_file(get_dependencies)
            return result if result is not None else []
        except Exception as e:
            self.log.error(f"Error getting dependencies: {e}")
            return []