Wei Gao

15 papers Misc 1Journal 11Unranked 3
YearRankTypeTitle / Venue / Authors
2025 conf
ACL (Findings)
Xinzhe Zheng, Sijie Ji, Jiawei Sun, Renqi Chen, Wei Gao, Mani Srivastava
2025 J jnl
CoRR
Xinzhe Zheng, Sijie Ji, Jiawei Sun, Renqi Chen, Wei Gao, Mani Srivastava
2025 Misc conf
SenSys
Sijie Ji, Xinzhe Zheng, Wei Gao, Mani Srivastava
2024 J jnl
Sci. Robotics
Hong Han, Xiaotian Ma, Weiting Deng, Junhang Zhang, Songsong Tang, On Shun Pak, Lailai Zhu, Ernesto Criado-Hidalgo, Chen Gong, Emil Karshalev, Jounghyun Yoo, Ming You, Ann Liu, Canran Wang, Hao K. Shen, Payal N. Patel, Claire L. Hays, Peter J. Gunnarson, Lei Li, Yang Zhang, John O. Dabiri, Lihong V. Wang, Mikhail G. Shapiro, Di Wu, Qifa Zhou, Julia R. Greer, Wei Gao
2024 J jnl
CoRR
Sijie Ji, Xinzhe Zheng, Jiawei Sun, Renqi Chen, Wei Gao, Mani Srivastava
2023 J jnl
Nat. Mac. Intell.
Changhao Xu, Samuel A. Solomon, Wei Gao
2022 J jnl
Sci. Robotics
You Yu, Jiahong Li, Samuel A. Solomon, Jihong Min, Jiaobing Tu, Wei Guo, Changhao Xu, Yu Song, Wei Gao
2021 J jnl
IEEE J. Solid State Circuits
Arian Hashemi Talkhooncheh, You Yu, Abhinav Agarwal, William Wei-Ting Kuo, Kuan-Chang Xavier Chen, Minwo Wang, Gudrun Hoskuldsdottir, Wei Gao, Azita Emami
2020 conf
CICC
Arian Hashemi Talkhooncheh, You Yu, Abhinav Agarwal, William Wei-Ting Kuo, Kuan-Chang Xavier Chen, Minwo Wang, Gudrun Hoskuldsdottir, Wei Gao, Azita Emami
2020 J jnl
Sci. Robotics
You Yu, Joanna M. Nassar, Changhao Xu, Jihong Min, Yiran Yang, Adam Dai, Rohan Doshi, Adrian Huang, Yu Song, Rachel Gehlhar, Aaron D. Ames, Wei Gao
2020 J jnl
Sci. Robotics
Jiaobing Tu, Wei Gao
2019 J jnl
Sci. Robotics
Zhiguang Wu, Lei Li, Yiran Yang, Peng Hu, Yang Li, So-Yoon Yang, Lihong V. Wang, Wei Gao
2019 J jnl
Proc. IEEE
Kuniharu Takei, Wei Gao, Chuan Wang, Ali Javey
2017 J jnl
Sci. Robotics
Berta Esteban-Fernández de Ávila, Wei Gao, Liangfang Zhang, Joseph Wang
2009 conf
NEMS
Dong Ying, Wei Gao, You Zheng
redb/extractors/pe_extractor.py
← Index redb/extractors/pe_extractor.py python
import logging
from abc import ABCMeta, abstractmethod
import inspect

import magic
import pefile
from dotnetfile import DotNetPE

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


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

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious
        )
        self.pe = pe if pe else self._generate_pefile_object()
        self.dotnet = None

    def _generate_pefile_object(self):
        pe = None
        try:
            pe = pefile.PE(self.filepath)
            if not pe:
                raise pefile.PEFormatError("Empty file?")
        except pefile.PEFormatError as e:
            self.log.error(f"Format error {self.hash.sha256} Full error : {e}")
        return pe

    def _generate_dotnetfile_object(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        dotnet = None
        error = None
        try:
            dotnet = DotNetPE(self.filepath)
            if not dotnet:
                raise Exception("Empty file?")
        except Exception as e:
            self.log.error(
                f"Format error dotnet file {self.hash.sha256} Full error : {e}"
            )
            error = e
        return dotnet, error

    def _check_dotnet(self):
        try:
            file_type = magic.from_buffer(self.binary)
            if ".Net" in file_type:
                return True
            for entry in self.pe.OPTIONAL_HEADER.DATA_DIRECTORY:
                # IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR is typically 14
                if (
                    entry.name == "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR"
                    and entry.Size > 0
                ):
                    return True
            return False
        except AttributeError as e:
            self.log.error(
                f"AttributeError error dotnet file {self.hash.sha256} Full error : {e}"
            )
            return False

    def _is_signed(self):
        address = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        if address == 0:
            return False
        return True

    def _has_overlay(self):
        return bool(self.pe.get_overlay())