Kameswara Rao Namuduri

31 papers B 7C 1Misc 1Journal 13Unranked 9
YearRankTypeTitle / Venue / Authors
2008 J jnl
Int. J. Auton. Adapt. Commun. Syst.
Sumakanth S. Kambhampati, Kameswara Rao Namuduri, Athanasios V. Vasilakos
2008 conf
IPSN
Harini Balasubramanian, Praveen Kumar Mitikiri, Kameswara Rao Namuduri
2008 J jnl
EURASIP J. Wirel. Commun. Netw.
Dan Lelescu, Peter Schelkens, Kameswara Rao Namuduri
2007 B conf
DCOSS
SreeRamya Yelisetty, Kameswara Rao Namuduri
2006 J jnl
Int. J. Biomed. Imaging
Pallavi Kahai, Kameswara Rao Namuduri, H. Thompson
2005 J jnl
EURASIP J. Wirel. Commun. Netw.
Raminder P. Mann, Kameswara Rao Namuduri, Ravi Pendse
2005 B conf
WCNC
Sanjeevi Balasubramanian, Sudharman K. Jayaweera, Kameswara Rao Namuduri
2005 conf
IFIP Int. Conf. Digital Forensics
Pallavi Kahai, Mannivannan Srinivasan, Kameswara Rao Namuduri
2004 J jnl
Pattern Recognit. Lett.
Imran Bashir, Kameswara Rao Namuduri, Ravi Pendse
2004 B conf
WCNC
Sanjeevi Balasubramanian, I. Elangovan, Sudharman K. Jayaweera, Kameswara Rao Namuduri
2004 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Kameswara Rao Namuduri
2004 J jnl
Pattern Recognit. Lett.
Kameswara Rao Namuduri, Veeru N. Ramaswamy
2003 J jnl
Pattern Recognit. Lett.
Kameswara Rao Namuduri, Veeru N. Ramaswamy
2001 conf
ITCC
Kameswara Rao Namuduri, Aiyuan Ji
2001 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Veeru N. Ramaswamy, Kameswara Rao Namuduri, N. Ranganathan
2000 B conf
ICIP
Kameswara Rao Namuduri, Karim Bouyoucef, Lance M. Kaplan
1999 conf
ISCAS (4)
Veeru N. Ramaswamy, Kameswara Rao Namuduri, N. Ranganathan
1999 J jnl
IEEE Trans. Signal Process.
Veeru N. Ramaswamy, N. Ranganathan, Kameswara Rao Namuduri
1998 conf
Storage and Retrieval for Image and Video Databases (SPIE)
Lance M. Kaplan, Romain Murenzi, Kameswara Rao Namuduri
1998 conf
Visual Information Processing
Jose G. Gonzalez, Mark J. T. Smith, Ingo S. Hontsch, Lina J. Karam, Kameswara Rao Namuduri, Harold H. Szu
1997 conf
ICIP (2)
Veeru N. Ramaswamy, Kameswara Rao Namuduri, N. Ranganathan
1996 C conf
ICCD
S. B. Aruru, N. Ranganathan, Kameswara Rao Namuduri
1996 B conf
ICPR
S. B. Aruru, N. Ranganathan, Kameswara Rao Namuduri
1996 B conf
ICPR
Veeru N. Ramaswamy, Kameswara Rao Namuduri, N. Ranganathan
1996 B conf
ICPR
Kameswara Rao Namuduri, N. Ranganathan, Hooman Rashedi
1995 J jnl
IEEE Trans. Image Process.
Nagarajan Ranganathan, Steve G. Romaniuk, Kameswara Rao Namuduri
1994 conf
ICPR (3)
N. Ranganathan, Steve G. Romaniuk, Kameswara Rao Namuduri
1994 J jnl
Pattern Recognit.
Kameswara Rao Namuduri, Rajiv Mehrotra, Nagarajan Ranganathan
1992 conf
ICPR (3)
Kameswara Rao Namuduri, Rajiv Mehrotra, N. Ranganathan
1992 J jnl
Pattern Recognit.
Rajiv Mehrotra, Kameswara Rao Namuduri, Nagarajan Ranganathan
1991 Misc conf
ICASSP
N. Ranganathan, Rajiv Mehrotra, Kameswara Rao Namuduri
redb/extractors/decompiler/bninja/analysis/medium_level.py
← Index redb/extractors/decompiler/bninja/analysis/medium_level.py python
import time

from binaryninja import (
    MediumLevelILOperation as MLIL_OP,
)

try:
    from ..function_type import FunctionTypeAnalysis
    from ..similarity.minhasher import MinHasher, TokenKind
    from ..utils.hashes import calculate_sha256, calculate_tlsh
    from .medium_level_normalization import MediumLevelNormalization
except ImportError:
    from redb.extractors.decompiler.bninja.analysis.medium_level_normalization import MediumLevelNormalization
    from redb.extractors.decompiler.bninja.similarity.minhasher import MinHasher
    from redb.extractors.decompiler.bninja.function_type import FunctionTypeAnalysis
    from redb.extractors.decompiler.bninja.utils.hashes import calculate_sha256, calculate_tlsh


_MLIL_CALL_OPS = (
    MLIL_OP.MLIL_CALL,
    MLIL_OP.MLIL_CALL_SSA,
    MLIL_OP.MLIL_CALL_UNTYPED,
    MLIL_OP.MLIL_CALL_UNTYPED_SSA,
    MLIL_OP.MLIL_TAILCALL,
    MLIL_OP.MLIL_TAILCALL_SSA,
    MLIL_OP.MLIL_TAILCALL_UNTYPED,
    MLIL_OP.MLIL_TAILCALL_UNTYPED_SSA,
)

_MLIL_CONTROL_FLOW_OPS = (
    MLIL_OP.MLIL_IF,
    MLIL_OP.MLIL_GOTO,
    MLIL_OP.MLIL_JUMP,
    MLIL_OP.MLIL_JUMP_TO,
    MLIL_OP.MLIL_RET,
    MLIL_OP.MLIL_RET_HINT,
    MLIL_OP.MLIL_NORET,
) + _MLIL_CALL_OPS


class MediumLevelAnalysis:
    def __init__(self, function, bv, logger):
        self.function = function
        self.name = function.name
        self.start = function.start
        self.mlil_func = function.mlil
        self.bv = bv
        self.logger = logger
        self.errors = []

    def log_error(self, message, function_name, address, exception=None, error_location="unknown"):
        error_msg = f"Error in function {function_name} at {address}: {message}"
        if exception:
            error_msg += f" - {str(exception)}"
        self.logger.error(error_msg)

        error = {
            "function_name": function_name,
            "function_address": str(address),
            "error_location": error_location,
            "error_message": message,
            "error_details": str(exception) if exception else "",
            "error_type": type(exception).__name__ if exception else "Unknown",
            "timestamp": int(time.time() * 1000),
        }
        self.errors.append(error)

    def _collect_mlil_skeleton_and_typed(self):
        mlil = self.mlil_func
        if not mlil:
            return [], [], [], []

        start = self.start
        norm = MediumLevelNormalization()

        skeleton = []
        skeleton_with_addr = []
        typed = []
        typed_with_addr = []

        for il in mlil.instructions:
            skel_norm = norm.normalize_instruction_all_levels(il)
            typed_norm = norm.normalize_instr_with_operands(il)

            skeleton.append(skel_norm)
            typed.append(typed_norm)

            offset = il.address - start
            if offset < 0:
                offset = 0

            skeleton_with_addr.append((offset, skel_norm))
            typed_with_addr.append((offset, typed_norm))

        return skeleton, skeleton_with_addr, typed, typed_with_addr

    def analyze(self):
        (
            instr_skeleton,
            body_mlil_skeleton_vector,
            instr_typed,
            body_mlil_typed_vector,
        ) = self._collect_mlil_skeleton_and_typed()

        instr_skeleton_str = str(instr_skeleton)
        sha256_skeleton = calculate_sha256(instr_skeleton_str)
        tlsh_skeleton = calculate_tlsh(instr_skeleton_str)

        instr_typed_str = str(instr_typed)
        sha256_typed = calculate_sha256(instr_typed_str)
        tlsh_typed = calculate_tlsh(instr_typed_str)

        seed = 0xdeadbeef
        minhash_mlil_skeleton = MinHasher(seed, self.mlil_func, TokenKind.MLIL).calculateMinHash()
        minhash_mlil_typed = MinHasher(seed, self.mlil_func, TokenKind.TYPED_MLIL).calculateMinHash()

        medium_level_json = {
            "function_address": self.start,
            "body_mlil_skeleton_vector": body_mlil_skeleton_vector,
            "sha256_mlil_skeleton": sha256_skeleton,
            "tlsh_mlil_skeleton": tlsh_skeleton,
            "minhash_mlil_skeleton": minhash_mlil_skeleton,
            "body_mlil_typed_vector": body_mlil_typed_vector,
            "sha256_mlil_typed": sha256_typed,
            "tlsh_mlil_typed": tlsh_typed,
            "minhash_mlil_typed": minhash_mlil_typed,
        }

        return medium_level_json, self.errors