Injun Park

12 papers Journal 5Unranked 7
YearRankTypeTitle / Venue / Authors
2025 conf
ISSCC
Hyun-Seung Choi, Injun Park, Byungchoul Park, DongSeok Cho, Myung-Jae Lee, Youngcheol Chae
2022 J jnl
IEEE J. Solid State Circuits
Woojun Choi, Jan A. Angevare, Injun Park, Kofi A. A. Makinwa, Youngcheol Chae
2021 conf
ISSCC
Woojun Choi, Jan A. Angevare, Injun Park, Kofi A. A. Makinwa, Youngcheol Chae
2021 J jnl
IEEE J. Solid State Circuits
Chanmin Park, Wenda Zhao, Injun Park, Nan Sun, Youngcheol Chae
2021 J jnl
IEEE J. Solid State Circuits
Byungchoul Park, Injun Park, Chanmin Park, Woojun Choi, Yoondeok Na, Myung-Jae Lee, Youngcheol Chae
2020 J jnl
IEEE J. Solid State Circuits
Injun Park, Woojin Jo, Chanmin Park, Byungchoul Park, Jimin Cheon, Youngcheol Chae
2020 conf
VLSI Circuits
Wenda Zhao, Chanmin Park, Injun Park, Nan Sun, Youngcheol Chae
2019 conf
VLSI Circuits
Injun Park, Woojin Jo, Chanmin Park, Byungchoul Park, Jimin Cheon, Youngcheol Chae
2019 conf
VLSI Circuits
Byungchoul Park, Injun Park, Woojun Choi, Youngcheol Chae
2019 conf
ISSCC
Injun Park, Chanmin Park, Jimin Cheon, Youngcheol Chae
2019 conf
ISIE
Seon Hyeog Kim, Hyeong Min Lee, Gu-Young Kwon, Injun Park, Woojun Choi, Youngcheol Chae, Yong-June Shin
2019 J jnl
J. Intell. Robotic Syst.
Mun-Taek Choi, Jinseob Yeom, Yunhee Shin, Injun Park
redb/extractors/decompiler/bninja/analysis/strings.py
← Index redb/extractors/decompiler/bninja/analysis/strings.py python
from collections import Counter
import math

class StringAnalysis:
    def __init__(self, bv, functions):
        self.bv = bv
        self.functions = functions

    def entropy(self, s: str) -> float:
        """Compute Shannon entropy of a string."""
        if not s:
            return 0.0
        freq = Counter(s)
        length = len(s)
        return -sum((count / length) * math.log2(count / length) for count in freq.values())

    def analyze(self):
        """
        Extract unique strings from the binary.

        Deduplicates by (string, encoding) within the same binary, keeping the
        first occurrence (lowest offset). Cross-binary deduplication and
        aggregation is handled by ClickHouse materialized views.
        """
        strings = {}

        # Sort strings by their starting address
        sorted_entries = sorted(self.bv.strings, key=lambda e: e.start)

        for entry in sorted_entries:
            # Key is the string and its encoding
            key = (entry.value, entry.type.name)

            # Skip if this string (value + encoding) was already added.
            # Because entries are sorted by address, the first one is always kept.
            if key in strings:
                continue

            # Store only the first occurrence with schema-matching field names
            # entry.length is the raw byte length, len(entry.value) is decoded string length
            string_entry = {
                "string": entry.value,
                "string_raw": entry.raw,
                "string_encoding": entry.type.name,
                "string_offset": entry.start,
                "string_length": len(entry.value),
                "string_raw_length": entry.length,
                "string_entropy": self.entropy(entry.value),
            }

            strings[key] = string_entry

        # Return as list for export compatibility
        return list(strings.values())