Jaeyoung Choi

41 papers A* 4A 1B 1Misc 3Journal 10Unranked 13
YearRankTypeTitle / Venue / Authors
2020 J jnl
CoRR
Tony Zhao, Jaeyoung Choi, Gerald Friedland
2020 conf
MMM (2)
Tony Zhao, Jaeyoung Choi, Gerald Friedland
2019 conf
BigMM
Jaeyoung Choi, Martha A. Larson, Gerald Friedland, Alan Hanjalic
2019 conf
MIPR
Zhaoqin Ye, Jaeyoung Choi, Gerald Friedland
2018 J jnl
CoRR
Jaeyoung Choi, Istemi Ekin Akkus, Serge Egelman, Gerald Friedland, Robin Sommer, Michael Carl Tschantz, Nicholas Weaver
2018 conf
WPES@CCS
Michael Carl Tschantz, Serge Egelman, Jaeyoung Choi, Nicholas Weaver, Gerald Friedland
2018 J jnl
CoRR
Michael Carl Tschantz, Serge Egelman, Jaeyoung Choi, Nicholas Weaver, Gerald Friedland
2017 J jnl
IEEE Trans. Multim.
Liping Jing, Bo Liu, Jaeyoung Choi, Adam Janin, Julia Bernd, Michael W. Mahoney, Gerald Friedland
2017 J jnl
CoRR
Mario Michael Krell, Julia Bernd, Yifan Li, Daniel Ma, Jaeyoung Choi, Michael Ellsworth, Damian Borth, Gerald Friedland
2017 B conf
ICMR
Jaeyoung Choi, Martha A. Larson, Xinchao Li, Kevin Li, Gerald Friedland, Alan Hanjalic
2016 A* conf
ACM Multimedia
Liping Jing, Bo Liu, Jaeyoung Choi, Adam Janin, Julia Bernd, Michael W. Mahoney, Gerald Friedland
2016 J jnl
CoRR
Liping Jing, Bo Liu, Jaeyoung Choi, Adam Janin, Julia Bernd, Michael W. Mahoney, Gerald Friedland
2016 conf
MediaEval
Jaeyoung Choi, Claudia Hauff, Olivier Van Laere, Bart Thomee
2016 J jnl
CoRR
Jaeyoung Choi, Martha A. Larson, Xinchao Li, Gerald Friedland, Alan Hanjalic
2016 ed.
MediaEval
Guillaume Gravier, Claire-Hélène Demarty, Hervé Bredin, Bogdan Ionescu, Christina Boididou, Emmanuel Dellandréa, Jaeyoung Choi, Michael Riegler, Richard F. E. Sutcliffe, Igor Szöke, Gareth J. F. Jones, Martha A. Larson
2015 ch.
Multimodal Location Estimation of Videos and Images
Howard Lei, Jaeyoung Choi, Gerald Friedland
2015 ch.
Multimodal Location Estimation of Videos and Images
Venkatesan N. Ekambaram, Kannan Ramchandran, Jaeyoung Choi, Gerald Friedland
2015 ch.
Multimedia Data Mining and Analytics
Gerald Friedland, Adam Janin, Howard Lei, Jaeyoung Choi, Robin Sommer
2015 A* conf
ACM Multimedia
Jaeyoung Choi, Eungchan Kim, Martha A. Larson, Gerald Friedland, Alan Hanjalic
2015 ch.
Multimodal Location Estimation of Videos and Images
Jaeyoung Choi, Howard Lei, Venkatesan N. Ekambaram, Pascal Kelm, Luke R. Gottlieb, Thomas Sikora, Kannan Ramchandran, Gerald Friedland
2015 ch.
Multimodal Location Estimation of Videos and Images
Jaeyoung Choi, Gerald Friedland
2015 conf
MMCommons@ACM Multimedia
Julia Bernd, Damian Borth, Carmen Carrano, Jaeyoung Choi, Benjamin Elizalde, Gerald Friedland, Luke R. Gottlieb, Karl Ni, Roger A. Pearce, Douglas Poland, Khalid Ashraf, David A. Shamma, Bart Thomee
2015 book
Jaeyoung Choi, Gerald Friedland
2015 J jnl
IEEE Multim.
Julia Bernd, Blanca Gordo, Jaeyoung Choi, Bryan Morgan, Nicholas Henderson, Serge Egelman, Daniel D. Garcia, Gerald Friedland
2015 ch.
Multimodal Location Estimation of Videos and Images
Martha A. Larson, Pascal Kelm, Adam Rae, Claudia Hauff, Bart Thomee, Michele Trevisiol, Jaeyoung Choi, Olivier Van Laere, Steven Schockaert, Gareth J. F. Jones, Pavel Serdyukov, Vanessa Murdock, Gerald Friedland
2015 conf
MediaEval
Jaeyoung Choi, Claudia Hauff, Olivier Van Laere, Bart Thomee
2014 J jnl
IEEE Trans. Multim.
Luke R. Gottlieb, Gerald Friedland, Jaeyoung Choi, Pascal Kelm, Thomas Sikora
2014 conf
MediaEval
Jaeyoung Choi, Xinchao Li
2014 conf
GeoMM
Jaeyoung Choi, Bart Thomee, Gerald Friedland, Liangliang Cao, Karl Ni, Damian Borth, Benjamin Elizalde, Luke R. Gottlieb, Carmen Carrano, Roger A. Pearce, Douglas Poland
2014 ed.
MediaEval
Martha A. Larson, Bogdan Ionescu, Xavier Anguera, Maria Eskevich, Pavel Korshunov, Markus Schedl, Mohammad Soleymani, Georgios Petkos, Richard F. E. Sutcliffe, Jaeyoung Choi, Gareth J. F. Jones
2013 conf
GeoMM@ACM Multimedia
Pascal Kelm, Sebastian Schmiedeke, Jaeyoung Choi, Gerald Friedland, Venkatesan Nallampatti Ekambaram, Kannan Ramchandran, Thomas Sikora
2013 A* conf
ACM Multimedia
Jaeyoung Choi, Howard Lei, Venkatesan N. Ekambaram, Pascal Kelm, Luke R. Gottlieb, Thomas Sikora, Kannan Ramchandran, Gerald Friedland
2013 Misc conf
ICASSP
Howard Lei, Jaeyoung Choi, Gerald Friedland
2012 A conf
ICME
Jaeyoung Choi, Gerald Friedland, Venkatesan N. Ekambaram, Kannan Ramchandran
2012 Misc conf
ICASSP
Howard Lei, Jaeyoung Choi, Gerald Friedland
2012 conf
CrowdMM@ACM Multimedia
Luke R. Gottlieb, Jaeyoung Choi, Pascal Kelm, Thomas Sikora, Gerald Friedland
2012 conf
MediaEval
Jaeyoung Choi, Venkatesan N. Ekambaram, Gerald Friedland, Kannan Ramchandran
2011 conf
ICSC
Jaeyoung Choi, Gerald Friedland
2011 J jnl
Int. J. Semantic Comput.
Gerald Friedland, Jaeyoung Choi
2011 Misc conf
ICASSP
Howard Lei, Jaeyoung Choi, Adam Janin, Gerald Friedland
2011 A* conf
ACM Multimedia
Gerald Friedland, Jaeyoung Choi, Adam Janin
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)