Ishan Verma

27 papers B 4C 2Misc 2Journal 4Unranked 15
YearRankTypeTitle / Venue / Authors
2025 conf
ACIS
Tanay Kumar Gupta, Tushar Goel, Ishan Verma
2024 conf
KG4S@ESWC
Tanay Kumar Gupta, Tushar Goel, Ishan Verma, Lipika Dey, Sachit Bhardwaj
2021 conf
COMAD/CODS
Aninda Sukla, Abir Naskar, Tushar Goel, Suyash Sangwan, Akshara Rai, Mohammad Shakir, Ishan Verma, Tirthankar Dasgupta, Lipika Dey
2021 conf
COMAD/CODS
Palak Jain, Tushar Goel, Ishan Verma, Mohammad Shakir, Lipika Dey, Geetika Sharma
2021 C conf
FedCSIS
Akshara Rai, Suyash Sangwan, Tushar Goel, Ishan Verma, Lipika Dey
2021 conf
WWW (Companion Volume)
Tushar Goel, Vipul Chauhan, Ishan Verma, Tirthankar Dasgupta, Lipika Dey
2019 conf
COMAD/CODS
Nidhi Saraswat, Ishan Verma, Viren Gupta
2019 J jnl
CoRR
Sachin Thukral, Arnab Chatterjee, Hardik Meisheri, Tushar Kataria, Aman Agarwal, Ishan Verma, Lipika Dey
2019 conf
MIDAS@PKDD
Saumya Bhadani, Ishan Verma, Lipika Dey
2018 B conf
WI
Ishan Verma, Rahul Ahuja, Hardik Meisheri, Lipika Dey
2018 B conf
ASONAM
Sachin Thukral, Hardik Meisheri, Tushar Kataria, Aman Agarwal, Ishan Verma, Arnab Chatterjee, Lipika Dey
2018 J jnl
CoRR
Sachin Thukral, Hardik Meisheri, Tushar Kataria, Aman Agarwal, Ishan Verma, Arnab Chatterjee, Lipika Dey
2018 Misc conf
COMSNETS
Lipika Dey, Ishan Verma
2018 B conf
WI
Kaustubh Mani, Ishan Verma, Hardik Meisheri, Lipika Dey
2017 Misc conf
SEMANTiCS
Tirthankar Dasgupta, Lipika Dey, Abir Naskar, Rupsa Saha, Ishan Verma, Ramakrishnan S. Srinivasan
2017 B conf
WI
Ishan Verma, Lipika Dey, Hardik Meisheri
2017 J jnl
CoRR
Kaustubh Mani, Ishan Verma, Lipika Dey
2017 conf
COMPUTE
Ishan Verma, Lokendra Singh
2017 J jnl
IEEE Intell. Informatics Bull.
Lipika Dey, Hardik Meisheri, Ishan Verma
2016 conf
IJCRS
Lipika Dey, Kunal Ranjan, Ishan Verma, Abir Naskar
2016 conf
IJCRS
Tirthankar Dasgupta, Lipika Dey, Ishan Verma
2016 conf
ICDM Workshops
Nidhi Saraswat, Lipika Dey, Ishan Verma, Hemant Gupta
2015 conf
WI-IAT (3)
Ishan Verma, Lipika Dey
2015 conf
PReMI
Ishan Verma, Lipika Dey, Ramakrishnan S. Srinivasan, Lokendra Singh
2013 C conf
FUSION
Lipika Dey, Ishan Verma, Arpit Khurdiya, Sameera Bharadwaja H.
2013 conf
Web Intelligence/IAT Workshops
Lipika Dey, Ishan Verma
2012 conf
Web Intelligence
Arpit Khurdiya, Lipika Dey, Diwakar Mahajan, Ishan Verma
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)