Venkatesh Ganti

47 papers A* 19A 2B 1Misc 1Journal 13Unranked 7
YearRankTypeTitle / Venue / Authors
2018 ch.
Encyclopedia of Database Systems (2nd ed.)
Venkatesh Ganti
2013 A conf
WSDM
Yeye He, Dong Xin, Venkatesh Ganti, Sriram Rajaraman, Nirav Shah
2013 book
Data Cleaning
Venkatesh Ganti, Anish Das Sarma
2011 A* conf
ICDE
Kaushik Chakrabarti, Surajit Chaudhuri, Venkatesh Ganti
2010 J jnl
Proc. VLDB Endow.
Dong Xin, Yeye He, Venkatesh Ganti
2010 A conf
WSDM
Venkatesh Ganti, Arnd Christian König, Xiao Li
2010 conf
SIGMOD Conference
Sanjay Agrawal, Kaushik Chakrabarti, Surajit Chaudhuri, Venkatesh Ganti, Arnd Christian König, Dong Xin
2009 ch.
Encyclopedia of Database Systems
Venkatesh Ganti
2009 A* conf
WWW
Sanjay Agrawal, Kaushik Chakrabarti, Surajit Chaudhuri, Venkatesh Ganti, Arnd Christian König, Dong Xin
2009 A* conf
WWW
Surajit Chaudhuri, Venkatesh Ganti, Dong Xin
2009 J jnl
Proc. VLDB Endow.
Surajit Chaudhuri, Venkatesh Ganti, Dong Xin
2008 conf
SIGMOD Conference
Kaushik Chakrabarti, Surajit Chaudhuri, Venkatesh Ganti, Dong Xin
2008 A* conf
KDD
Venkatesh Ganti, Arnd Christian König, Rares Vernica
2008 J jnl
Proc. VLDB Endow.
Sanjay Agrawal, Kaushik Chakrabarti, Surajit Chaudhuri, Venkatesh Ganti
2007 A* conf
VLDB
Surajit Chaudhuri, Bee-Chung Chen, Venkatesh Ganti, Raghav Kaushik
2007 conf
SIGMOD Conference
Surajit Chaudhuri, Anish Das Sarma, Venkatesh Ganti, Raghav Kaushik
2007 A* ed.
VLDB
Christoph Koch, Johannes Gehrke, Minos N. Garofalakis, Divesh Srivastava, Karl Aberer, Anand Deshpande, Daniela Florescu, Chee Yong Chan, Venkatesh Ganti, Carl-Christian Kanne, Wolfgang Klas, Erich J. Neuhold
2007 ed.
QDB
Venkatesh Ganti, Felix Naumann
2006 A* conf
ICDE
Surajit Chaudhuri, Venkatesh Ganti, Raghav Kaushik
2006 J jnl
IEEE Data Eng. Bull.
Surajit Chaudhuri, Venkatesh Ganti, Raghav Kaushik
2006 A* conf
VLDB
Arvind Arasu, Venkatesh Ganti, Raghav Kaushik
2006 conf
SIGMOD Conference
Kaushik Chakrabarti, Venkatesh Ganti, Jiawei Han, Dong Xin
2005 conf
SIGMOD Conference
Surajit Chaudhuri, Kris Ganjam, Venkatesh Ganti, Rahul Kapoor, Vivek R. Narasayya, Theo Vassilakis
2005 A* conf
ICDE
Surajit Chaudhuri, Venkatesh Ganti, Rajeev Motwani
2004 J jnl
Adv. Comput.
Surajit Chaudhuri, Umeshwar Dayal, Venkatesh Ganti
2004 A* conf
KDD
Eugene Agichtein, Venkatesh Ganti
2004 A* conf
ICDE
Surajit Chaudhuri, Venkatesh Ganti, Luis Gravano
2003 conf
SIGMOD Conference
Surajit Chaudhuri, Kris Ganjam, Venkatesh Ganti, Rajeev Motwani
2002 J jnl
J. Comput. Syst. Sci.
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan, Wei-Yin Loh
2002 A* conf
VLDB
Rohit Ananthakrishna, Surajit Chaudhuri, Venkatesh Ganti
2002 J jnl
SIGKDD Explor.
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
2001 J jnl
IEEE Trans. Knowl. Data Eng.
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
2001 J jnl
Computer
Surajit Chaudhuri, Umeshwar Dayal, Venkatesh Ganti
2000 A* conf
ICDE
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
2000 A* conf
VLDB
Venkatesh Ganti, Mong-Li Lee, Raghu Ramakrishnan
2000 J jnl
Data Min. Knowl. Discov.
Johannes Gehrke, Raghu Ramakrishnan, Venkatesh Ganti
1999 A* conf
PODS
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
1999 J jnl
IEEE Data Eng. Bull.
Viswanath Poosala, Venkatesh Ganti, Yannis E. Ioannidis
1999 conf
SIGMOD Conference
Johannes Gehrke, Venkatesh Ganti, Raghu Ramakrishnan, Wei-Yin Loh
1999 A* conf
KDD
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
1999 A* conf
ICDE
Venkatesh Ganti, Raghu Ramakrishnan, Johannes Gehrke, Allison L. Powell, James C. French
1999 B conf
SSDBM
Viswanath Poosala, Venkatesh Ganti
1999 A* conf
ICDE
Viswanath Poosala, Venkatesh Ganti
1999 J jnl
Computer
Venkatesh Ganti, Johannes Gehrke, Raghu Ramakrishnan
1998 A* conf
VLDB
Johannes Gehrke, Raghu Ramakrishnan, Venkatesh Ganti
1996 J jnl
Inf. Syst.
Rohan F. M. Aranha, Venkatesh Ganti, Srinivasa Narayanan, C. R. Muthukrishnan, S. T. S. Prasad, Krithi Ramamritham
1995 Misc conf
COMAD
Rohan F. M. Aranha, Venkatesh Ganti, Srinivasa Prasanna, C. R. Muthukrishnan, S. T. S. Prasad, Krithi Ramamritham
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"