Kang-Sun Choi

36 papers A* 1B 2C 5Misc 1Journal 17Unranked 10
YearRankTypeTitle / Venue / Authors
2025 J jnl
Int. J. Document Anal. Recognit.
Maaz Ahmed, Min-Beom Kim, Kang-Sun Choi
2023 conf
GCH
Dongkeun Kim, Maaz Ahmed, Kang-Sun Choi
2021 J jnl
IEEE Access
Ye-Chan Choi, Sheriff Murtala, Beom-Chae Jeong, Kang-Sun Choi
2021 B conf
ICIP
Hyeonwoo Jeong, Byung-Hyun Yoon, Honggu Jeong, Kang-Sun Choi
2021 conf
ICAIIC
Hyeonwoo Jeong, Ye-Chan Choi, Kang-Sun Choi
2021 J jnl
IEEE Access
Ye-Chan Choi, Sheriff Murtala, Beom-Chae Jeong, Kang-Sun Choi
2021 A* conf
ICRA
Byung-Hyun Yoon, Hyeonwoo Jeong, Kang-Sun Choi
2020 C conf
ICCE
Jae-Min Sa, Byung-Hyun Yun, Kang-Sun Choi
2020 C conf
ICCE
Jae-Min Sa, Seong-jun Bae, Ye-Chan Choi, Kang-Sun Choi
2019 J jnl
J. Real Time Image Process.
Ki-Won Oh, Kang-Sun Choi
2019 J jnl
KSII Trans. Internet Inf. Syst.
Eui-Ju Heo, Sung-Jin Ahn, Kang-Sun Choi
2018 C conf
ICCE
Sung-Jin Ahn, Dong-Min Ko, Eui-Ju Heo, Kang-Sun Choi
2017 conf
ICIAR
Sung-Jin Ahn, Dong-Min Ko, Kang-Sun Choi
2017 J jnl
J. Vis. Commun. Image Represent.
Ji-Sang Bae, Sang-Ho Lee, Kang-Sun Choi, Jong-Ok Kim
2016 J jnl
IEICE Trans. Inf. Syst.
Jun-Sang Yoo, Ji-Hoon Choi, Kang-Sun Choi, Dae-Yeol Lee, Hui Yong Kim, Jong-Ok Kim
2016 J jnl
Comput. Vis. Image Underst.
Kang-Sun Choi, Ki-Won Oh
2015 Misc conf
IbPRIA
Kang-Sun Choi, Ki-Won Oh
2015 C conf
ICCE
Kang-Sun Choi, Ki-Won Oh
2013 J jnl
Digit. Signal Process.
Kang-Sun Choi
2012 C conf
ICCE
Kang-Sun Choi
2010 J jnl
IEEE Trans. Consumer Electron.
Tae-Hyun Kim, Kang-Sun Choi, Sung-Jea Ko
2010 J jnl
IEEE Trans. Consumer Electron.
Ji-Hoon Lee, Jong-Ok Kim, Jong-Woo Han, Kang-Sun Choi, Sung-Jea Ko
2010 J jnl
IEEE Trans. Consumer Electron.
Tae-Shick Wang, Kang-Sun Choi, Hyung-Seok Jang, Aldo W. Morales, Sung-Jea Ko
2010 J jnl
IEEE Trans. Consumer Electron.
Hyeong-Min Nam, Keun-Yung Byun, Jae-Yun Jeong, Kang-Sun Choi, Sung-Jea Ko
2009 J jnl
IEEE Trans. Consumer Electron.
Kang-Sun Choi, Sung-Jea Ko
2009 B conf
ICIP
Jong-Woo Han, Kang-Sun Choi, Tae-Shick Wang, Sung-Hyun Cheon, Sung-Jea Ko
2005 conf
Electronic Imaging: Image and Video Communications and Processing
Kang-Sun Choi, Antonio Ortega
2004 J jnl
Real Time Imaging
Byeong-Doo Choi, Kang-Sun Choi, Min-Cheol Hwang, Jun-Ki Cho, Sung-Jea Ko
2003 conf
ICCSA (1)
Yoon Kim, Kang-Sun Choi, Jae-Young Pyun, Byung-Tae Choi, Sung-Jea Ko
2003 conf
ISCIS
Kang-Sun Choi, Jun-Ki Cho, Min-Cheol Hwang, Sung-Jea Ko
2003 conf
DAGM-Symposium
Kang-Sun Choi, Jae-Young Pyun, Nam-Hyeong Kim, Byeong-Doo Choi, Sung-Jea Ko
2003 conf
DAGM-Symposium
Jae-Won Kim, Kang-Sun Choi, Byeong-Doo Choi, Jae Yong Lee, Sung-Jea Ko
2002 conf
Image Processing: Algorithms and Systems
Kang-Sun Choi, Aldo W. Morales, Sung-Jea Ko
2001 J jnl
IEEE Trans. Signal Process.
Kang-Sun Choi, Aldo W. Morales, Sung-Jea Ko
1999 conf
Electronic Imaging: Nonlinear Image Processing
Kang-Sun Choi, Kyung-Hoon Lee, Sung-Jea Ko, Aldo W. Morales
1999 J jnl
IEEE Trans. Consumer Electron.
Kang-Sun Choi, Jun-Suk Lee, Sung-Jea Ko
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)