Imran Ashraf

34 papers A* 2A 3C 1Journal 21Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Imran Ashraf, Mukhtar Ullah, Muhammad Faisal Nadeem, Muhammad Nouman Noor
2024 J jnl
Int. J. Imaging Syst. Technol.
Samra Siddiqui, Tallha Akram, Imran Ashraf, Muddassar Raza, Muhammad Attique Khan, Robertas Damasevicius
2024 J jnl
Multim. Tools Appl.
Asif Mehmood, Muhammad Attique Khan, Muhammad Sharif, Sajid Ali Khan, Muhammad Shaheen, Tanzila Saba, Naveed Riaz, Imran Ashraf
2022 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Nader Khammassi, Imran Ashraf, J. van Someren, Razvan Nane, Anna M. Krol, M. A. Rol, Lingling Lao, Koen Bertels, Carmen G. Almudéver
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Lingling Lao, Hans van Someren, Imran Ashraf, Carmen G. Almudéver
2021 J jnl
Image Vis. Comput.
Farhat Afza, Muhammad Attique Khan, Muhammad Sharif, Seifedine Nimer Kadry, Gunasekaran Manogaran, Tanzila Saba, Imran Ashraf, Robertas Damasevicius
2021 J jnl
CoRR
Anna M. Krol, Aritra Sarkar, Imran Ashraf, Zaid Al-Ars, Koen Bertels
2021 J jnl
Multim. Tools Appl.
Junaid Tariq, Ammar Armghan, Amir Ijaz, Imran Ashraf
2021 J jnl
CoRR
Koen Bertels, Aritra Sarkar, Anna M. Krol, Ravish Budhrani, J. Samadi, E. Geoffroy, J. Matos, R. Abreu, Georges G. E. Gielen, Imran Ashraf
2021 J jnl
IEEE Micro
Koen Bertels, Aritra Sarkar, Imran Ashraf
2021 J jnl
CoRR
Koen Bertels, Aritra Sarkar, Imran Ashraf
2020 J jnl
CoRR
Nader Khammassi, Imran Ashraf, J. van Someren, Razvan Nane, Anna M. Krol, M. Adriaan Rol, Lingling Lao, Koen Bertels, Carmen G. Almudéver
2020 J jnl
J. Vis. Commun. Image Represent.
Junaid Tariq, Ammar Armghan, Amir Ijaz, Imran Ashraf
2020 A conf
DATE
Koen Bertels, Aritra Sarkar, Thomas Hubregtsen, M. Serrao, Abid A. Mouedenne, Amitabh Yadav, Anna M. Krol, Imran Ashraf
2020 J jnl
IEEE Trans. Emerg. Top. Comput.
Jintao Yu, Razvan Nane, Imran Ashraf, Mottaqiallah Taouil, Said Hamdioui, Henk Corporaal, Koen Bertels
2020 J jnl
IEEE Access
Muhammad Attique Khan, Muhammad Shahzad Sarfraz, Majed Alhaisoni, Abdulaziz A. Albesher, Shuihua Wang, Imran Ashraf
2019 J jnl
IEEE Access
Sohaib Majzoub, Resve A. Saleh, Imran Ashraf, Mottaqiallah Taouil, Said Hamdioui
2019 C conf
ISCAS
Leon Riesebos, Xiang Fu, A. A. Moueddenne, Lingling Lao, Savvas Varsamopoulos, Imran Ashraf, J. van Someren, Nader Khammassi, Carmen G. Almudéver, Koen Bertels
2019 A* conf
HPCA
Xiang Fu, Leon Riesebos, M. A. Rol, Jeroen van Straten, J. van Someren, Nader Khammassi, Imran Ashraf, R. F. L. Vermeulen, V. Newsum, K. K. L. Loh, J. C. de Sterke, W. J. Vlothuizen, R. N. Schouten, Carmen G. Almudéver, Leonardo DiCarlo, Koen Bertels
2018 J jnl
IEEE Micro
Xiang Fu, M. A. Rol, Cornelis Christiaan Bultink, J. van Someren, Nader Khammassi, Imran Ashraf, R. F. L. Vermeulen, J. C. de Sterke, W. J. Vlothuizen, R. N. Schouten, Carmen G. Almudéver, Leonardo DiCarlo, Koen Bertels
2018 J jnl
IEEE Trans. Computers
Imran Ashraf, Nader Khammassi, Mottaqiallah Taouil, Koen Bertels
2018 J jnl
Quantum
Ben Criger, Imran Ashraf
2018 J jnl
CoRR
Xiang Fu, Leon Riesebos, M. A. Rol, Jeroen van Straten, J. van Someren, Nader Khammassi, Imran Ashraf, R. F. L. Vermeulen, V. Newsum, K. K. L. Loh, J. C. de Sterke, W. J. Vlothuizen, R. N. Schouten, Carmen G. Almudéver, Leonardo DiCarlo, Koen Bertels
2017 J jnl
CoRR
Xiang Fu, M. A. Rol, Cornelis Christiaan Bultink, J. van Someren, Nader Khammassi, Imran Ashraf, R. F. L. Vermeulen, J. C. de Sterke, W. J. Vlothuizen, R. N. Schouten, Carmen G. Almudéver, Leonardo DiCarlo, Koen Bertels
2017 A* conf
MICRO
Xiang Fu, Michiel Adriaan Rol, Cornelis Christiaan Bultink, J. van Someren, Nader Khammassi, Imran Ashraf, R. F. L. Vermeulen, J. C. de Sterke, W. J. Vlothuizen, R. N. Schouten, Carmen G. Almudéver, Leonardo DiCarlo, Koen Bertels
2017 A conf
DATE
Nader Khammassi, Imran Ashraf, Xiang Fu, Carmen G. Almudéver, Koen Bertels
2017 A conf
DATE
Carmen G. Almudéver, Lingling Lao, Xiang Fu, Nader Khammassi, Imran Ashraf, Dan Iorga, Savvas Varsamopoulos, Christopher Eichler, Andreas Wallraff, Lotte Geck, Andre Kruth, Joachim Knoch, Hendrik Bluhm, Koen Bertels
2015 conf
ISVLSI
Imran Ashraf, Koen Bertels, Nader Khammassi, Jean-Christophe Le Lann
2015 conf
ACOMP
Cuong Pham-Quoc, Imran Ashraf, Zaid Al-Ars, Koen Bertels
2015 conf
IDT
Imran Ashraf, Mottaqiallah Taouil, Koen Bertels
2013 conf
Euro-Par Workshops
Imran Ashraf, Sayyed Arash Ostadzadeh, Roel Meeuws, Koen Bertels
2012 conf
WODA
Imran Ashraf, Sayyed Arash Ostadzadeh, Roel Meeuws, Koen Bertels
2012 conf
IPDPS Workshops
Faisal Nadeem, Imran Ashraf, Sayyed Arash Ostadzadeh, Stephan Wong, Koen Bertels
2012 conf
ARC
Sayyed Arash Ostadzadeh, Roel Meeuws, Imran Ashraf, Carlo Galuzzi, Koen Bertels
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)