Varun Sharma

34 papers A* 1A 4B 1C 3Misc 4Journal 14Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
Ann. Oper. Res.
Alok Raj, Varun Sharma, Dhirendra Mani Shukla, Prateek Sharma
2025 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Xichu Ma, Varun Sharma, Min-Yen Kan, Wee Sun Lee, Ye Wang
2024 J jnl
Int. J. Syst. Assur. Eng. Manag.
Ritu Singhal, Varun Sharma, Ishita Singhal, Vikas Bansal
2024 J jnl
IEEE Access
Gaurav Tripathi, Vishal Krishna Singh, Varun Sharma, Majithia Vivek Vinodbhai
2023 conf
ICMLDE
Jitesh Pradhan, Rajshree Verma, Sumit Kumar, Varun Sharma
2023 C conf
DeSE
Varun Sharma, Hoshang Kolivand, Shiva Asadianfam, Dhiya Al-Jumeily, Manoj Jayabalan
2023 conf
ICOIN
Varun Sharma, Shatrunjay Rawat
2023 J jnl
Comput. Biol. Medicine
Shubham Shankar Mohol, Mohit Kumar, Varun Sharma
2023 C conf
DeSE
Varun Sharma, Hoshang Kolivand, Shiva Asadianfam, Dhiya Al-Jumeily, Manoj Jayabalan
2023 J jnl
CoRR
Varun Sharma
2023 J jnl
CoRR
Samin Batra, Varun Sharma, Yurou Sun, Xinyao Wang, Yinyu Wang
2022 J jnl
CoRR
Neha Baranwal, Varun Sharma
2021 J jnl
CoRR
Varun Sharma, Paul Chow
2021 A* conf
KDD
Martin Valdez-Vivas, Varun Sharma, Nick Stanisha, Shan Li, Luo Mi, Wei Jiang, Alex Kalinin, Josh Metzler
2021 A conf
FPGA
Varun Sharma, Paul Chow
2020 Misc conf
ICASSP
Akshit Tyagi, Varun Sharma, Rahul Gupta, Lynn Samson, Nan Zhuang, Zihang Wang, Bill Campbell
2019 J jnl
CoRR
Akshit Tyagi, Varun Sharma, Rahul Gupta, Lynn Samson, Nan Zhuang, Zihang Wang, Bill Campbell
2019 Misc conf
FCCM
Varun Sharma, Naif Tarafdar, Paul Chow
2018 J jnl
IEEE Micro
Naif Tarafdar, Nariman Eskandari, Varun Sharma, Charles Lo, Paul Chow
2017 conf
CSNet
Varun Sharma
2017 conf
ICTC
Varun Sharma
2016 B conf
CLOUD
Aditya Hegde, Rahul Ghosh, Tridib Mukherjee, Varun Sharma
2015 A conf
ICWS
Shruti Kunde, Rahul Ghosh, Tridib Mukherjee, Aditya Hegde, Varun Sharma
2015 Misc conf
ICNC
Varun Sharma, Chien-Chung Shen
2015 A conf
ICSOC
Varun Sharma, Abhishek Tripathi, Saurabh Srivastava, Aditya Hegde, Koustuv Dasgupta
2013 conf
SocialCom
Varun Sharma, Jeremy Carroll, Abhi Khune
2013 conf
IEEE BigData
Varun Sharma, Jeremy Carroll, Abhi Khune
2010 J jnl
Wirel. Networks
Jatinder Pal Singh, Tansu Alpcan, Piyush Agrawal, Varun Sharma
2010 J jnl
J. Mach. Learn. Res.
Gal Chechik, Varun Sharma, Uri Shalit, Samy Bengio
2009 conf
NIPS
Gal Chechik, Uri Shalit, Varun Sharma, Samy Bengio
2009 Misc conf
IbPRIA
Gal Chechik, Varun Sharma, Uri Shalit, Samy Bengio
2009 J jnl
Inf. Secur. J. A Glob. Perspect.
Varun Sharma
2007 C conf
WOWMOM
Jatinder Pal Singh, Tansu Alpcan, Piyush Agrawal, Varun Sharma
2007 A conf
CIDR
Alan J. Demers, Johannes Gehrke, Biswanath Panda, Mirek Riedewald, Varun Sharma, Walker M. White
tests/scripts/test_linking.py
← Index tests/scripts/test_linking.py python
#!/usr/bin/env python3
"""
Test script to verify the linking between decompiled and disassembled functions.
"""

import sys
import os
from pathlib import Path

# Add the redb directory to the path
sys.path.insert(0, str(Path(__file__).parent / "redb"))

from redb.extractors.decompiler.DecompileBinja import DecompileBinja
import logging

def test_linking():
    """Test that decompiled and disassembled functions are properly linked."""
    
    # Setup logging
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger("test_linking")
    
    # Use a simple test binary (you'll need to provide a path to a test binary)
    test_binary = "test_files/hello"  # Adjust this path as needed
    
    if not os.path.exists(test_binary):
        print(f"Test binary not found: {test_binary}")
        print("Please provide a valid binary path for testing")
        return False
    
    try:
        # Create and run the extractor
        with DecompileBinja(test_binary, logger) as extractor:
            success = extractor.extract()
            
            if not success:
                print("Extraction failed")
                return False
            
            # Get the analysis results
            results = extractor.analysis_results
            
            if not results:
                print("No analysis results")
                return False
            
            print(f"Analysis completed successfully")
            print(f"Decompiled functions: {len(results['decompiled'])}")
            print(f"Disassembled functions: {len(results['disassembled'])}")
            
            # Test linking
            linking_issues = []
            linked_pairs = 0
            decompiled_only = 0
            disassembled_only = 0
            
            # Check decompiled functions have proper linking
            for decomp_func in results['decompiled']:
                decomp_hash = decomp_func.get('decompiled_function_hash')
                disasm_hash = decomp_func.get('disassembled_function_hash')
                
                if disasm_hash is None:
                    decompiled_only += 1
                    print(f"⚠️  Decompiled function {decomp_func.get('decompiled_function_name')} has no disassembled link (decompiled-only)")
                else:
                    linked_pairs += 1
                    print(f"✓ Decompiled function {decomp_func.get('decompiled_function_name')} linked to disassembled hash: {disasm_hash[:16]}...")
            
            # Check disassembled functions have proper linking
            for disasm_func in results['disassembled']:
                disasm_hash = disasm_func.get('disassembled_function_hash')
                decomp_hash = disasm_func.get('decompiled_function_hash')
                
                if decomp_hash is None:
                    disassembled_only += 1
                    print(f"⚠️  Disassembled function {disasm_func.get('disassembled_function_name')} has no decompiled link (disassembled-only)")
                else:
                    print(f"✓ Disassembled function {disasm_func.get('disassembled_function_name')} linked to decompiled hash: {decomp_hash[:16]}...")
            
            # Verify cross-references are consistent
            decompiled_hashes = {f['decompiled_function_hash']: f for f in results['decompiled']}
            disassembled_hashes = {f['disassembled_function_hash']: f for f in results['disassembled']}
            
            for decomp_func in results['decompiled']:
                decomp_hash = decomp_func.get('decompiled_function_hash')
                disasm_hash = decomp_func.get('disassembled_function_hash')
                
                if disasm_hash and disasm_hash in disassembled_hashes:
                    corresponding_disasm = disassembled_hashes[disasm_hash]
                    if corresponding_disasm.get('decompiled_function_hash') != decomp_hash:
                        linking_issues.append(f"Inconsistent linking: decompiled {decomp_hash[:16]}... -> disassembled {disasm_hash[:16]}... but reverse link doesn't match")
            
            # Summary
            print(f"\n📊 Linking Summary:")
            print(f"  - Linked function pairs: {linked_pairs}")
            print(f"  - Decompiled-only functions: {decompiled_only}")
            print(f"  - Disassembled-only functions: {disassembled_only}")
            print(f"  - Total functions processed: {len(results['decompiled']) + len(results['disassembled'])}")
            
            if linking_issues:
                print(f"\n❌ Linking issues found:")
                for issue in linking_issues:
                    print(f"  - {issue}")
                return False
            else:
                print(f"\n✅ All linking tests passed!")
                print(f"✅ Cross-references are consistent!")
                return True
                
    except Exception as e:
        print(f"Test failed with exception: {e}")
        return False

if __name__ == "__main__":
    success = test_linking()
    sys.exit(0 if success else 1)