Inyup Kang

84 papers B 13Misc 5Journal 41Unranked 25
YearRankTypeTitle / Venue / Authors
2023 J jnl
IEEE J. Solid State Circuits
Jun-Seok Park, Changsoo Park, Suknam Kwon, Taeho Jeon, Yesung Kang, Heonsoo Lee, Dongwoo Lee, James Kim, Hyeong-Seok Kim, YoungJong Lee, Sangkyu Park, MinSeong Kim, Sanghyuck Ha, Jihoon Bang, Jinpyo Park, Sukhwan Lim, Inyup Kang
2022 conf
ISSCC
Jun-Seok Park, Changsoo Park, Suknam Kwon, Hyeong-Seok Kim, Taeho Jeon, Yesung Kang, Heonsoo Lee, Dongwoo Lee, James Kim, YoungJong Lee, Sangkyu Park, Jun-Woo Jang, Sanghyuck Ha, MinSeong Kim, Jihoon Bang, Sukhwan Lim, Inyup Kang
2022 conf
ISSCC
Barosaim Sung, Hyun-Gi Seok, Jaekwon Kim, Jaehoon Lee, Taejin Jang, Ilhoon Jang, Youngmin Kim, Anna Yu, Jong-Hyun Jang, Jiyoung Lee, Jeongyeol Bae, Euiyoung Park, Sung-Jun Lee, Seokwon Lee, Joohan Kim, Beomkon Kim, Yong Lim, Seunghyun Oh, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2022 conf
VTC Spring
Ramin Soltani, HyukJoon Kwon, Mu-Sheng Lin, Jungwon Lee, Inyup Kang
2022 conf
ISSCC
Inyup Kang
2021 conf
ISSCC
Tae Sung Kim, Seokhyun Lee, Kyungkoo Lee, Sunyoung Shin, SeungSick Jun, Yongmi Lee, Seungyong Lee, Homin Kang, Changhyun Yim, Yohan Lim, Eikyung Moon, Sukhwan Lim, Kyung-Ah Jeong, Inyup Kang
2021 conf
ISSCC
Jongsoo Lee, Byoungjoong Kang, Seongwon Joo, Seokwon Lee, Joongho Lee, Seunghoon Kang, Ikkyun Jo, Suseop Ahn, Jaeseung Lee, Jeongyeol Bae, Won Ko, Woniun Jung, Sangho Lee, Sangsung Lee, Euiyoung Park, Sungiun Lee, Jeongkyun Woo, Jaehoon Lee, Yanghoon Lee, Kyungmin Lee, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2021 conf
ISSCC
Jun-Seok Park, Jun-Woo Jang, Heonsoo Lee, Dongwoo Lee, Sehwan Lee, Hanwoong Jung, Seungwon Lee, Suknam Kwon, Kyung-Ah Jeong, Joon-Ho Song, Sukhwan Lim, Inyup Kang
2021 conf
HCS
Jun-Seok Park, Heonsoo Lee, Dongwoo Lee, Jewoo Moon, Suknam Kwon, Sanghyuck Ha, MinSeong Kim, Junghun Park, Jihoon Bang, Sukhwan Lim, Inyup Kang
2020 conf
ISSCC
Jongsoo Lee, Jae-Yeol Han, Chilun Lo, Jongmi Lee, Wan Kim, Seungjin Kim, Byoungjoong Kang, Juyoung Han, Sangdon Jung, Takahiro Nomiyama, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2020 conf
VLSI Circuits
Sangwook Han, Jaehyuk Jang, Jaeseung Lee, Daechul Jeong, Joonhee Lee, Jongsoo Lee, Chung Lau, Juyoung Han, Sung-Jun Lee, Jeongyeol Bae, Ikkyun Cho, Sang-Yun Lee, Shinwoong Kim, Jae Hoon Lee, Yanghoon Lee, Jaehong Jung, Junho Huh, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2020 J jnl
IEEE J. Solid State Circuits
Jongsoo Lee, Jae-Yeol Han, Chilun Lo, Jongmi Lee, Wan Kim, Seungjin Kim, Byoungjoong Kang, Juyoung Han, Sangdon Jung, Takahiro Nomiyama, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2019 conf
ISSCC
Ji-Seon Paek, Takahiro Nomiyama, Jae-Yeol Han, Ik-hwan Kim, YuMi Lee, Dongsu Kim, Euiyoung Park, Sung-Jun Lee, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2019 J jnl
IEEE J. Solid State Circuits
Jongwoo Lee, Kiyong Son, Hyungsun Lim, Daechul Jeong, Ilyong Jong, Sanghyun Baek, Jae Hoon Lee, Ronghua Ni, Yongrong Zuo, Chih-Wei Yao, Seungchan Heo, Sangwook Han, Thomas Byunghak Cho, Inyup Kang, Joonhee Lee, Byoungjoong Kang, Jeongyeol Bae, Jaehyuk Jang, Seunghyun Oh, Ji-Soo Chang, Sanghoon Kang
2019 conf
ISSCC
Jongwoo Lee, Sangwook Han, Joonhee Lee, Byoungjoong Kang, Jeongyeol Bae, Jaehyuk Jang, Seunghyun Oh, Su-Seob Ahn, Sanghoon Kang, Quang-Diep Bui, Kiyong Son, Hyungsun Lim, Daechul Jeong, Ronghua Ni, Yongrong Zuo, Ilyong Jong, Chih-Wei Yao, Seungchan Heo, Thomas Byunghak Cho, Inyup Kang
2019 conf
ISSCC
Jinook Song, Yunkyo Cho, Jun-Seok Park, Jun-Woo Jang, Sehwan Lee, Joon-Ho Song, Jae-Gon Lee, Inyup Kang
2019 conf
ISSCC
Ji-Seon Paek, Dong-Su Kim, Jun-Suk Bang, Jongbeom Baek, Jeong-Hyun Choi, Takahiro Nomiyama, Jae-Yeol Han, Young-Hwan Choo, Yong-Sik Youn, Euiyoung Park, Sung-Jun Lee, Ik-hwan Kim, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2019 J jnl
CoRR
Woohyung Chun, Sung-Min Hong, Junho Huh, Inyup Kang
2018 conf
ISSCC
Takahiro Nomiyama, Yong-Sik Youn, Young-Hwan Choo, Dong-Su Kim, Jae-Yeol Han, Jun-Hee Jung, Jongbeom Baek, Sung-Jun Lee, Euiyoung Park, Jeong-Hyun Choi, Ji-Seon Paek, Jongwoo Lee, Thomas Byunghak Cho, Inyup Kang
2018 J jnl
IEEE Trans. Commun.
Mostafa El-Khamy, Hsien-Ping Lin, Jungwon Lee, Inyup Kang
2018 J jnl
CoRR
Woohyung Chun, Sung-Min Hong, Junho Huh, Inyup Kang
2018 J jnl
CoRR
Doyun Kim, Hanyoung Yim, Sanghyuck Ha, Changgwun Lee, Inyup Kang
2017 J jnl
CoRR
Mostafa El-Khamy, Hsien-Ping Lin, Jungwon Lee, Inyup Kang
2017 J jnl
IEEE Trans. Inf. Theory
Mostafa El-Khamy, Hessam Mahdavifar, Gennady Feygin, Jungwon Lee, Inyup Kang
2016 conf
ISSCC
Ji-Seon Paek, Yong-Sik Youn, Jeong-Hyun Choi, Dong-Su Kim, Jun-Hee Jung, Young-Hwan Choo, Sung-Jun Lee, Seung-Chul Lee, Thomas Byunghak Cho, Inyup Kang
2016 J jnl
IEEE Trans. Commun.
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2016 J jnl
IEEE Trans. Commun.
Seongwook Song, HyukJoon Kwon, Inyup Kang
2016 J jnl
IEEE Trans. Veh. Technol.
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2015 conf
ISSCC
Seung-Chul Lee, Ji-Seon Paek, Jun-Hee Jung, Yong-Sik Youn, Sung-Jun Lee, Min-Soo Cho, Jae-Jol Han, Jung-Hyun Choi, Yong-Whan Joo, Takahiro Nomiyama, Su-Ho Lee, Il-Young Sohn, Thomas Byunghak Cho, Byeong-Ha Park, Inyup Kang
2015 J jnl
IEEE Commun. Lett.
Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2015 B conf
GLOBECOM
Mostafa El-Khamy, Hsien-Ping Lin, Jungwon Lee, Hessam Mahdavifar, Inyup Kang
2015 J jnl
IEEE Trans. Commun.
Dongwoon Bai, Jungwon Lee, Sungsoo Kim, Hanju Kim, Inyup Kang
2015 J jnl
CoRR
Mostafa El-Khamy, Hsien-Ping Lin, Jungwon Lee, Hessam Mahdavifar, Inyup Kang
2015 J jnl
CoRR
Mostafa El-Khamy, Hessam Mahdavifar, Gennady Feygin, Jungwon Lee, Inyup Kang
2015 B conf
WCNC
Mostafa El-Khamy, Hessam Mahdavifar, Gennady Feygin, Jungwon Lee, Inyup Kang
2014 J jnl
CoRR
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2014 J jnl
IEEE Commun. Mag.
Wooseok Nam, Dongwoon Bai, Jungwon Lee, Inyup Kang
2014 B conf
GLOBECOM
Dongwoon Bai, Jungwon Lee, Inyup Kang
2014 Misc conf
ITA
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2014 conf
VTC Spring
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2014 conf
VTC Spring
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2014 conf
VTC Spring
Yoojin Choi, Dongwoon Bai, Jungwon Lee, Inyup Kang
2014 Misc conf
ICASSP
Jinhong Wu, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2014 B conf
ISIT
Keke Liu, Mostafa El-Khamy, Jungwon Lee, Inyup Kang, Arvind Yedla
2014 J jnl
IEEE Trans. Inf. Theory
Wooseok Nam, Dongwoon Bai, Jungwon Lee, Inyup Kang
2014 J jnl
IET Commun.
Mostafa El-Khamy, Jinhong Wu, Jungwon Lee, Inyup Kang
2014 J jnl
IEEE Trans. Commun.
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2014 Misc conf
CISS
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Jinhong Wu, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 B conf
WCNC
Jinhong Wu, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
IEEE Trans. Commun.
Dongwoon Bai, Wooseok Nam, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 Misc conf
ITA
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 B conf
WCNC
Yingqun Yu, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2013 B conf
ISIT
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2013 B conf
ISIT
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 B conf
GLOBECOM
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2013 J jnl
IEEE Commun. Lett.
Tiangao Gou, Claudio R. C. M. da Silva, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Hessam Mahdavifar, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
CoRR
Arvind Yedla, Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 conf
ICC
Mostafa El-Khamy, Jungwon Lee, Inyup Kang
2013 J jnl
IEEE Trans. Commun.
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2013 B conf
GLOBECOM
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2013 B conf
ISIT
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2012 J jnl
CoRR
Linbo Li, Inyup Kang
2012 conf
ICC
Jung Hyun Bae, Sungsoo Kim, Jungwon Lee, Inyup Kang
2012 J jnl
IEEE Signal Process. Lett.
Wooseok Nam, Heejin Roh, Jungwon Lee, Inyup Kang
2012 J jnl
CoRR
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2012 J jnl
CoRR
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2012 Misc conf
ITA
Jungwon Lee, HyukJoon Kwon, Inyup Kang
2012 J jnl
IEEE Commun. Mag.
Dongwoon Bai, Cheolhee Park, Jungwon Lee, Hoang Nguyen, Jaspreet Singh, Ankit Gupta, Zhouyue Pi, Taeyoon Kim, Chaiman Lim, Min-Goo Kim, Inyup Kang
2012 conf
VTC Fall
Dongwoon Bai, Jungwon Lee, Sungsoo Kim, Inyup Kang
2012 B conf
GLOBECOM
Mostafa El-Khamy, Jinhong Wu, Jungwon Lee, Heejin Roh, Inyup Kang
2012 J jnl
CoRR
Wooseok Nam, Dongwoon Bai, Jungwon Lee, Inyup Kang
2012 J jnl
CoRR
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2012 J jnl
CoRR
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2012 B conf
ISIT
Jung Hyun Bae, Jungwon Lee, Inyup Kang
2012 conf
VTC Fall
HyukJoon Kwon, Jungwon Lee, Inyup Kang
2012 conf
ACSCC
Dongwoon Bai, Jungwon Lee, Sungsoo Kim, Hanju Kim, Inyup Kang
2012 J jnl
CoRR
Jung Hyun Bae, Jungwon Lee, Inyup Kang
1998 J jnl
IEEE J. Solid State Circuits
Inyup Kang, Alan N. Willson Jr.
redb/extractors/decompiler/apk/smali_parser.py
← Index redb/extractors/decompiler/apk/smali_parser.py python
"""Smali file parser — extracts individual method bodies from apktool output.

Parses .smali files produced by apktool and extracts per-method bodies,
instruction counts, and register counts.
"""

import os
import re
from dataclasses import dataclass, field
from typing import Dict, List, Optional


@dataclass
class SmaliMethod:
    """Parsed smali method data."""
    class_name: str
    method_name: str
    method_signature: str
    body: str
    instruction_count: int = 0
    register_count: int = 0
    access_flags: List[str] = field(default_factory=list)


# Directives start with '.' — these are metadata, not instructions
_DIRECTIVE_RE = re.compile(r"^\s*\.")
# Labels start with ':'
_LABEL_RE = re.compile(r"^\s*:")
# Blank or comment lines
_BLANK_OR_COMMENT_RE = re.compile(r"^\s*(#.*)?$")
# Method declaration
_METHOD_START_RE = re.compile(
    r"^\.method\s+(.*?)\s+(\S+)\(([^)]*)\)(\S+)\s*$"
)
_METHOD_START_SIMPLE_RE = re.compile(
    r"^\.method\s+(.*)"
)
# .registers or .locals directive
_REGISTERS_RE = re.compile(r"^\s*\.registers\s+(\d+)")
_LOCALS_RE = re.compile(r"^\s*\.locals\s+(\d+)")
# .line directive
_LINE_RE = re.compile(r"^\s*\.line\s+\d+")


class SmaliParser:
    """Parser for apktool smali output files."""

    @staticmethod
    def parse_smali_file(filepath: str) -> List[SmaliMethod]:
        """Parse a single .smali file and return list of methods.

        Each .smali file contains one class with all its methods.
        """
        with open(filepath, "r", encoding="utf-8", errors="replace") as f:
            content = f.read()

        return SmaliParser._parse_smali_content(content, filepath)

    @staticmethod
    def _parse_smali_content(content: str, source: str = "") -> List[SmaliMethod]:
        """Parse smali text content and extract methods."""
        lines = content.split("\n")
        methods = []

        # Extract class name from .class directive
        class_name = ""
        for line in lines:
            if line.startswith(".class "):
                parts = line.split()
                class_name = parts[-1]  # Last token is the class descriptor
                break

        in_method = False
        method_lines = []
        method_header = ""
        access_flags = []
        skip_method = False

        for line in lines:
            if line.startswith(".method "):
                in_method = True
                method_lines = []
                method_header = line
                skip_method = False

                # Parse access flags and method signature
                remainder = line[len(".method "):].strip()
                tokens = remainder.split()
                access_flags = []
                method_sig_token = tokens[-1] if tokens else ""

                for t in tokens[:-1]:
                    access_flags.append(t)

                # Skip abstract and native methods (no body)
                if "abstract" in access_flags or "native" in access_flags:
                    skip_method = True

            elif line.startswith(".end method"):
                if in_method and not skip_method:
                    body = "\n".join(method_lines)
                    method_name, signature = SmaliParser._parse_method_sig(
                        method_header
                    )
                    instruction_count = SmaliParser.count_instructions(body)
                    register_count = SmaliParser._extract_register_count(body)

                    methods.append(
                        SmaliMethod(
                            class_name=class_name,
                            method_name=method_name,
                            method_signature=signature,
                            body=body,
                            instruction_count=instruction_count,
                            register_count=register_count,
                            access_flags=access_flags,
                        )
                    )
                in_method = False
                method_lines = []
                access_flags = []

            elif in_method and not skip_method:
                method_lines.append(line)

        return methods

    @staticmethod
    def parse_smali_directory(dirpath: str) -> Dict[str, SmaliMethod]:
        """Parse all .smali files in a directory tree.

        Returns dict keyed by 'ClassName->methodName(signature)ReturnType'.
        """
        result = {}
        for root, _dirs, files in os.walk(dirpath):
            for fname in files:
                if fname.endswith(".smali"):
                    fpath = os.path.join(root, fname)
                    try:
                        methods = SmaliParser.parse_smali_file(fpath)
                        for m in methods:
                            key = SmaliParser.make_method_key(
                                m.class_name, m.method_name, m.method_signature
                            )
                            result[key] = m
                    except Exception:
                        continue
        return result

    @staticmethod
    def normalize_smali_body(body: str) -> str:
        """Normalize smali body for consistent hashing.

        Strips comments, .line directives, normalizes whitespace.
        """
        lines = []
        for line in body.split("\n"):
            stripped = line.strip()
            # Skip empty lines, comments, and .line directives
            if not stripped or stripped.startswith("#"):
                continue
            if _LINE_RE.match(stripped):
                continue
            lines.append(stripped)
        return "\n".join(lines)

    @staticmethod
    def count_instructions(body: str) -> int:
        """Count actual Dalvik instructions (skip directives, labels, blanks)."""
        count = 0
        for line in body.split("\n"):
            stripped = line.strip()
            if not stripped:
                continue
            if _DIRECTIVE_RE.match(stripped):
                continue
            if _LABEL_RE.match(stripped):
                continue
            if _BLANK_OR_COMMENT_RE.match(stripped):
                continue
            count += 1
        return count

    @staticmethod
    def _extract_register_count(body: str) -> int:
        """Extract register count from .registers or .locals directive.

        apktool outputs .locals (local registers only) by default.
        .registers (total = locals + params) is used with --use-registers.
        We return whichever is present.
        """
        for line in body.split("\n"):
            stripped = line.strip()
            m = _REGISTERS_RE.match(stripped)
            if m:
                return int(m.group(1))
            m = _LOCALS_RE.match(stripped)
            if m:
                return int(m.group(1))
        return 0

    @staticmethod
    def _parse_method_sig(header_line: str) -> tuple:
        """Parse method name and signature from .method header line.

        Input: '.method public onCreate(Landroid/os/Bundle;)V'
        Returns: ('onCreate', '(Landroid/os/Bundle;)V')
        """
        remainder = header_line[len(".method "):].strip()
        tokens = remainder.split()
        if not tokens:
            return ("unknown", "()")

        # Last token contains methodName(params)returnType
        method_part = tokens[-1]

        paren_idx = method_part.find("(")
        if paren_idx == -1:
            return (method_part, "()")

        method_name = method_part[:paren_idx]
        signature = method_part[paren_idx:]

        return (method_name, signature)

    @staticmethod
    def make_method_key(class_name: str, method_name: str, signature: str) -> str:
        """Build a canonical method key for cross-tool matching.

        Format: 'Lcom/example/Foo;->methodName(params)ReturnType'
        """
        return f"{class_name}->{method_name}{signature}"