Ilya Musabirov

42 papers A* 3A 2B 2C 1Misc 2Journal 12Unranked 20
YearRankTypeTitle / Venue / Authors
2025 conf
HCI (47)
Ilya Musabirov
2025 A conf
LAK
Ilya Musabirov, Mohi Reza, Haochen Song, Steven Moore, Pan Chen, Harsh Kumar, Tong Li, John C. Stamper, Norman L. Bier, Anna N. Rafferty, Thomas W. Price, Nina Deliu, Audrey Durand, Michael Liut, Joseph Jay Williams
2025 conf
DataEd@SIGMOD
Harsh Kumar, Mohi Reza, Jeb Thomas-Mitchell, Ilya Musabirov, Lisa Zhang, Michael Liut
2025 J jnl
CoRR
Haochen Song, Ilya Musabirov, Ananya Bhattacharjee, Audrey Durand, Meredith Franklin, Anna N. Rafferty, Joseph Jay Williams
2024 A* conf
CHI
Mohi Reza, Nathan M. Laundry, Ilya Musabirov, Peter Dushniku, Zhi Yuan "Michael" Yu, Kashish Mittal, Tovi Grossman, Michael Liut, Anastasia Kuzminykh, Joseph Jay Williams
2024 J jnl
Proc. ACM Hum. Comput. Interact.
Harsh Kumar, Ilya Musabirov, Mohi Reza, Jiakai Shi, Xinyuan Wang, Joseph Jay Williams, Anastasia Kuzminykh, Michael Liut
2024 conf
WCCCE
Ilya Musabirov, Angela M. Zavaleta Bernuy, Pan Chen, Michael Liut, Joseph Jay Williams
2024 B conf
L@S
Harsh Kumar, Ruiwei Xiao, Benjamin Lawson, Ilya Musabirov, Jiakai Shi, Xinyuan Wang, Huayin Luo, Joseph Jay Williams, Anna N. Rafferty, John C. Stamper, Michael Liut
2024 J jnl
CoRR
Harsh Kumar, Ruiwei Xiao, Benjamin Lawson, Ilya Musabirov, Jiakai Shi, Xinyuan Wang, Huayin Luo, Joseph Jay Williams, Anna N. Rafferty, John C. Stamper, Michael Liut
2024 J jnl
CoRR
Harsh Kumar, Mohi Reza, Jeb Mitchell, Ilya Musabirov, Lisa Zhang, Michael Liut
2024 A* conf
AAAI
Harsh Kumar, Tong Li, Jiakai Shi, Ilya Musabirov, Rachel Kornfield, Jonah Meyerhoff, Ananya Bhattacharjee, Chris J. Karr, Theresa Nguyen, David C. Mohr, Anna N. Rafferty, Sofia S. Villar, Nina Deliu, Joseph Jay Williams
2023 conf
SIGCSE (2)
Ilya Musabirov, Angela M. Zavaleta Bernuy, Michael Liut, Joseph Jay Williams
2023 J jnl
CoRR
Mohi Reza, Nathan Laundry, Ilya Musabirov, Peter Dushniku, Zhi Yuan "Michael" Yu, Kashish Mittal, Tovi Grossman, Michael Liut, Anastasia Kuzminykh, Joseph Jay Williams
2023 conf
SIGCSE (2)
Ilya Musabirov
2023 conf
SIGCSE (2)
Alena Suvorova, Ilya Musabirov, Denis Bulygin, Rustem Faidrakhmanov
2023 conf
SIGCSE (2)
Joseph Jay Williams, Nathan Laundry, Ilya Musabirov, Angela M. Zavaleta Bernuy, Michael Liut
2023 conf
CHI Extended Abstracts
Harsh Kumar, Yiyi Wang, Jiakai Shi, Ilya Musabirov, Norman A. S. Farb, Joseph Jay Williams
2023 J jnl
CoRR
Harsh Kumar, Ilya Musabirov, Mohi Reza, Jiakai Shi, Anastasia Kuzminykh, Joseph Jay Williams, Michael Liut
2023 J jnl
CoRR
Ilya Musabirov, Angela M. Zavaleta Bernuy, Pan Chen, Michael Liut, Joseph Jay Williams
2023 conf
EduCHI
Mohi Reza, Ilya Musabirov, Nathan Laundry, Michael Liut, Joseph Jay Williams
2023 J jnl
CoRR
Harsh Kumar, Tong Li, Jiakai Shi, Ilya Musabirov, Rachel Kornfield, Jonah Meyerhoff, Ananya Bhattacharjee, Chris J. Karr, Theresa Nguyen, David C. Mohr, Anna N. Rafferty, Sofia S. Villar, Nina Deliu, Joseph Jay Williams
2022 conf
LSGCS@L@S
Ilya Musabirov, Joseph Jay Williams
2022 J jnl
CoRR
Harsh Kumar, Ilya Musabirov, Jiakai Shi, Adele Lauzon, Kwan Kiu Choy, Ofek Gross, Dana Kulzhabayeva, Joseph Jay Williams
2020 J jnl
Int. J. Emerg. Technol. Learn.
Ilya Musabirov, Denis Bulygin
2020 A conf
SIGCSE
Ilya Musabirov, Vsevolod Suschevskiy
2019 conf
CHI PLAY (Companion)
Ekaterina Marchenko, Ilya Musabirov
2019 J jnl
Int. J. Emerg. Technol. Learn.
Ilya Musabirov, Stanislav Pozdniakov, Ksenia Tenisheva
2018 J jnl
CoRR
Ilya Musabirov, Denis Bulygin, Paul Okopny, Ksenia Konstantinova
2018 B conf
ITiCSE
Ilya Musabirov, Alina Bakhitova
2018 conf
WWW (Companion Volume)
Daniel Alexandrov, Viktor Karepin, Ilya Musabirov, Daria Chuprina
2018 conf
CHI Extended Abstracts
Ilya Musabirov, Denis Bulygin, Paul Okopny, Ksenia Konstantinova
2017 A* conf
CHI
Ilya Musabirov, Denis Bulygin, Paul Okopny, Alexander Sirotkin
2017 C conf
ACE
Ksenia Konstantinova, Denis Bulygin, Paul Okopny, Ilya Musabirov
2017 conf
Koli Calling
Ilya Musabirov, Alina Bakhitova
2016 conf
WebSci
Daniel Alexandrov, Viktor Karepin, Ilya Musabirov
2016 Misc conf
NordiCHI
Ilya Musabirov, Paul Okopny, Stanislav Pozdniakov
2016 conf
WebSci
Vadim Voskresenskiy, Ilya Musabirov, Daniel Alexandrov
2016 conf
AIST (Supplement)
Alexander Sirotkin, Ilya Musabirov, Paul Okopny, Denis Bulygin, Vladimir Ivanov
2016 conf
WebSci
Daniel Alexandrov, Alexey Gorgadze, Ilya Musabirov
2015 Misc conf
CHI PLAY
Ilya Musabirov, Paul Okopny, Denis Bulygin
2014 conf
SocInfo Workshops
Paul Okopny, Ilya Musabirov, Daniel Alexandrov
2014 conf
SocInfo Workshops
Vadim Voskresenskiy, Kirill Sukharev, Ilya Musabirov, Daniel Alexandrov
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)