Wei-Pang Yang

124 papers A* 2A 1B 8C 3Misc 2Journal 79Unranked 29
YearRankTypeTitle / Venue / Authors
2020 J jnl
IET Networks
Ko-Tsung Chu, Hua-Ting Hsu, Jyh-Jian Sheu, Wei-Pang Yang, Cheng-Chi Lee
2016 J jnl
Secur. Commun. Networks
Jyh-Jian Sheu, Yin-Kai Chen, Ko-Tsung Chu, Jih-Hsin Tang, Wei-Pang Yang
2012 J jnl
Informatica
Ting Yi Chang, Min-Shiang Hwang, Wei-Pang Yang
2011 J jnl
Inf. Sci.
Ting Yi Chang, Min-Shiang Hwang, Wei-Pang Yang
2011 J jnl
Inf. Technol. Control.
Ting Yi Chang, Min-Shiang Hwang, Wei-Pang Yang
2009 J jnl
Expert Syst. Appl.
Cheng-Jung Tsai, Chien-I Lee, Wei-Pang Yang
2008 J jnl
Inf. Sci.
Cheng-Jung Tsai, Chien-I Lee, Wei-Pang Yang
2008 J jnl
Expert Syst. Appl.
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2008 J jnl
Informatica
Cheng-Jung Tsai, Chien-I Lee, Wei-Pang Yang
2008 J jnl
Expert Syst. Appl.
Chien-I Lee, Cheng-Jung Tsai, Tong-Qin Wu, Wei-Pang Yang
2008 J jnl
Expert Syst. Appl.
Jung-Yi Lin, Hao-Ren Ke, Been-Chian Chien, Wei-Pang Yang
2008 J jnl
Expert Syst. Appl.
Su-Hsien Huang, Hao-Ren Ke, Wei-Pang Yang
2008 J jnl
Expert Syst. Appl.
Jen-Yuan Yeh, Hao-Ren Ke, Wei-Pang Yang
2007 conf
FSKD (4)
Chien-I Lee, Cheng-Jung Tsai, Jhe-Hao Wu, Wei-Pang Yang
2007 conf
FSKD (1)
Chien-I Lee, Cheng-Jung Tsai, Ya-ru Yang, Wei-Pang Yang
2007 conf
CLEF (Working Notes)
Pei-Cheng Cheng, Wei-Pang Yang
2007 J jnl
Pattern Recognit.
Jung-Yi Lin, Hao-Ren Ke, Been-Chian Chien, Wei-Pang Yang
2006 J jnl
J. Inf. Sci. Eng.
Been-Chian Chien, Jung-Yi Lin, Wei-Pang Yang
2006 J jnl
Electron. Libr.
Tien-Yu Hsu, Hao-Ren Ke, Wei-Pang Yang
2006 J jnl
Electron. Libr.
Yu-Liang Chi, Tien-Yu Hsu, Wei-Pang Yang
2006 J jnl
Electron. Libr.
Tien-Yu Hsu, Hao-Ren Ke, Wei-Pang Yang
2005 J jnl
Appl. Math. Comput.
Cheng-Chi Lee, Min-Shiang Hwang, Wei-Pang Yang
2005 J jnl
ACM SIGOPS Oper. Syst. Rev.
Ting Yi Chang, Min-Shiang Hwang, Wei-Pang Yang
2005 J jnl
Appl. Math. Comput.
Ting Yi Chang, Min-Shiang Hwang, Wei-Pang Yang
2005 conf
CLEF
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2005 J jnl
Inf. Process. Manag.
Su-Hsien Huang, Hao-Ren Ke, Wei-Pang Yang
2005 conf
ICDAT
Shian-Hua Lin, Tien-Yu Hsu, Kuan-Jen Feng, Wei-Pang Yang
2005 conf
CLEF (Working Notes)
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2005 conf
CLEF (Working Notes)
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2005 J jnl
Inf. Process. Manag.
Jen-Yuan Yeh, Hao-Ren Ke, Wei-Pang Yang, I-Heng Meng
2005 conf
ROCLING
Cheng-Chang Liu, Jen-Yuan Yeh, Hao-Ren Ke, Wei-Pang Yang
2004 conf
ROCLING
Wen Heng Yen, Hao-Ren Ke, Wei-Pang Yang
2004 conf
CLEF
Pei-Cheng Cheng, Jen-Yuan Yeh, Hao-Ren Ke, Been-Chian Chien, Wei-Pang Yang
2004 J jnl
J. Inf. Sci. Eng.
I-Heng Meng, Shin-Mu Tseng, Wei-Pang Yang
2004 conf
CLEF (Working Notes)
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2004 J jnl
Pattern Recognit.
Been-Chian Chien, Jung-Yi Lin, Wei-Pang Yang
2004 conf
CLEF (Working Notes)
Pei-Cheng Cheng, Jen-Yuan Yeh, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2004 conf
CLEF
Pei-Cheng Cheng, Been-Chian Chien, Hao-Ren Ke, Wei-Pang Yang
2003 conf
ICEIS (2)
I-Heng Meng, Wei-Pang Yang, Hou-Yi Lin, Yuei-Lin Chiang, Ben Chou, Shu-Ling Hsiao
2003 J jnl
J. Syst. Softw.
Min-Shiang Hwang, Wei-Pang Yang
2003 conf
ICCSA (1)
I-Heng Meng, Wei-Pang Yang
2003 J jnl
Fundam. Informaticae
Cheng-Chi Lee, Wei-Pang Yang, Min-Shiang Hwang
2002 J jnl
ACM SIGOPS Oper. Syst. Rev.
Cheng-Chi Lee, Min-Shiang Hwang, Wei-Pang Yang
2002 Misc conf
International Conference on Computational Science (1)
I-Heng Meng, Wei-Pang Yang, Wen-Chih Chen, Lu-Ping Chang
2002 Misc conf
IC-AI
I-Heng Meng, Wei-Pang Yang, Wen-Chih Chen, Lu-Ping Chang, Sheng-Hsiu Huang
2002 conf
ICADL
Jen-Yuan Yeh, Hao-Ren Ke, Wei-Pang Yang
2002 conf
ICEIS
I-Heng Meng, Wei-Pang Yang, Wen-Chih Chen, Lu-Ping Chang
2002 J jnl
J. Inf. Sci. Eng.
Hsien-Sheng Hsiao, Yeh-Hao Chin, Wei-Pang Yang
2001 J jnl
J. Vis. Lang. Comput.
Pu-Jien Cheng, Wei-Pang Yang
2000 B conf
ICPADS
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
2000 J jnl
IEEE Trans. Computers
Hsien-Sheng Hsiao, Yeh-Hao Chin, Wei-Pang Yang
1999 J jnl
Inf. Sci.
Pu-Jien Cheng, Wei-Pang Yang
1999 J jnl
J. Inf. Sci. Eng.
Cheng-Chi Lee, Min-Shiang Hwang, Wei-Pang Yang
1999 conf
CODAS
Su-Shang Huang, I-Heng Meng, Wei-Pang Yang
1999 J jnl
J. Inf. Sci. Eng.
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
1999 J jnl
Wirel. Networks
Chii-Hwa Lee, Min-Shiang Hwang, Wei-Pang Yang
1999 conf
DANTE
Pu-Jien Cheng, Wei-Pang Yang
1998 J jnl
Informatica (Slovenia)
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
1998 B conf
ICPADS
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
1998 conf
IW-MMDBMS
Chien-I Lee, Ye-In Chang, Wei-Pang Yang, Huang-Chi Chen, Shu-Ting Liao
1998 J jnl
IEEE Trans. Parallel Distributed Syst.
Hin-Sing Siu, Yeh-Hao Chin, Wei-Pang Yang
1998 J jnl
Data Knowl. Eng.
Frank Shou-Cheng Tseng, Jeng-Jye Chiang, Wei-Pang Yang
1998 J jnl
Inf. Sci.
Hin-Sing Siu, Yeh-Hao Chin, Wei-Pang Yang
1998 C conf
APSEC
I-Heng Meng, Wei-Pang Yang, Swu-Mei Lin, Mu-Ann Chen, Shih-Kung Chen, Jian-Cheng Dai
1997 conf
DEXA Workshop
Shin-Mu Tseng, Yeh-Hao Chin, Wei-Pang Yang
1997 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
1997 conf
ASIAN
Shin-Mu Tseng, Yeh-Hao Chin, Wei-Pang Yang
1997 J jnl
Data Knowl. Eng.
Min-Shiang Hwang, Wei-Pang Yang
1997 J jnl
J. Inf. Sci. Eng.
Wen-Wei Pan, Wei-Pang Yang
1997 J jnl
Mob. Networks Appl.
Jyhi-Kong Wey, Wei-Pang Yang, Lir-Fang Sun
1996 conf
PDIS
Chien-I Lee, Ye-In Chang, Wei-Pang Yang
1996 J jnl
IEEE Trans. Parallel Distributed Syst.
Hin-Sing Siu, Yeh-Hao Chin, Wei-Pang Yang
1996 J jnl
Inf. Sci.
Wen-Wei Pan, Wei-Pang Yang
1996 J jnl
Comput. Secur.
Min-Shiang Hwang, Wen-Guey Tzeng, Wei-Pang Yang
1996 J jnl
Inf. Process. Lett.
Shin-Jia Hwang, Chin-Chen Chang, Wei-Pang Yang
1996 J jnl
J. Inf. Sci. Eng.
Chien-Yuan Chen, Chin-Chen Chang, Wei-Pang Yang
1996 J jnl
J. Inf. Sci. Eng.
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1996 B conf
PIMRC
Jyhi-Kong Wey, Wei-Pang Yang, Yi-Bing Lin
1996 B conf
PIMRC
Jyhi-Kong Wey, Yee-Sing Hu, Chao-Hsing Chen, Wei-Pang Yang
1996 conf
IFIP World Conference on Mobile Communications
Chii-Hwa Lee, Min-Shiang Hwang, Wei-Pang Yang
1996 conf
RTDB
Shin-Mu Tseng, Yeh-Hao Chin, Wei-Pang Yang
1996 J jnl
Inf. Sci.
Annie Y. H. Chou, Wei-Pang Yang, Chin-Chen Chang
1996 J jnl
Inf. Sci.
Jyhi-Kong Wey, Lir-Fang Sun, Wei-Pang Yang
1995 J jnl
J. Syst. Softw.
Min-Shiang Hwang, Wei-Pang Yang
1995 J jnl
J. Inf. Sci. Eng.
Tyne Liang, Suh-Yin Lee, Wei-Pang Yang
1995 J jnl
IEEE J. Sel. Areas Commun.
Min-Shiang Hwang, Wei-Pang Yang
1995 C conf
SEKE
Wen-Wei Pan, Wei-Pang Yang
1995 A conf
ICDAR
Tyne Liang, Suh-Yin Lee, Wei-Pang Yang
1995 J jnl
J. Inf. Sci. Eng.
Annie Y. H. Chou, Wei-Pang Yang, Chin-Chen Chang
1995 J jnl
Parallel Algorithms Appl.
Yuh-Jiun Chen, Chin-Chen Chang, Wei-Pang Yang
1995 B conf
RTCSA
Shin-Mu Tseng, Yeh-Hao Chin, Wei-Pang Yang
1995 J jnl
J. Inf. Sci. Eng.
Yuh-Jiun Chen, Chin-Chen Chang, Wei-Pang Yang
1995 conf
Cryptography: Policy and Algorithms
Shin-Jia Hwang, Chin-Chen Chang, Wei-Pang Yang
1994 J jnl
Data Knowl. Eng.
Min-Shiang Hwang, Wei-Pang Yang
1994 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Judy C. R. Tseng, Tsong-Feng Hwang, Wei-Pang Yang
1993 J jnl
Distributed Parallel Databases
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1993 J jnl
IEEE Trans. Computers
Jenn-Yang Tien, Ching-Tien Ho, Wei-Pang Yang
1993 J jnl
Inf. Sci.
Pao-Chung Ho, Wei-Pang Yang, Meichun Hsu
1993 J jnl
Inf. Sci.
Been-Chian Chien, Wei-Pang Yang, Rong-Jaye Chen
1993 J jnl
Data Knowl. Eng.
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1993 J jnl
VLDB J.
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1992 J jnl
Int. J. Comput. Math.
Judy C. R. Tseng, Wei-Pang Yang
1992 J jnl
Comput. J.
Wei-Pang Yang, T. C. Chiu, W. C. Lee, Shang-Sheng Tung
1992 conf
RIDE-TQP
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1992 J jnl
J. Inf. Sci. Eng.
Tung-Shou Chen, Wei-Pang Yang
1992 J jnl
BIT
Tung-Shou Chen, Wei-Pang Yang, Richard C. T. Lee
1992 B conf
ISAAC
Been-Chian Chien, Rong-Jaye Chen, Wei-Pang Yang
1992 conf
Future Databases
Frank Shou-Cheng Tseng, Arbee L. P. Chen, Wei-Pang Yang
1992 J jnl
Data Knowl. Eng.
Frank S. C. Tseng, Arbee L. P. Chen, Wei-Pang Yang
1992 J jnl
Int. J. Comput. Math.
Pao-Chung Ho, Wei-Pang Yang, Meichun Hsu
1992 J jnl
Inf. Process. Lett.
Been-Chian Chien, Wei-Pang Yang
1991 B conf
COMPSAC
Been-Chian Chien, Wei-Pang Yang
1991 conf
SPDP
Jenn-Yang Tien, Ching-Tien Ho, Wei-Pang Yang
1991 J jnl
IEEE Trans. Knowl. Data Eng.
Jenn-Yang Tien, Wei-Pang Yang
1991 J jnl
J. Inf. Sci. Eng.
Jenn-Yang Tien, Wei-Pang Yang
1991 J jnl
Parallel Comput.
Jenn-Yang Tien, Wei-Pang Yang
1990 J jnl
Inf. Sci.
Meichun Hsu, Shang-Sheng Tung, Wei-Pang Yang
1989 J jnl
J. Inf. Sci. Eng.
Pao-Chung Ho, Wei-Pang Yang, Meichun Hsu
1989 C conf
SEKE
Jiann-Tsair Chen, Chiou-Rurng Tseng, Wei-Pang Yang
1989 B conf
DASFAA
Suh-Yin Lee, Man-Kwan Shan, Wei-Pang Yang
1989 J jnl
Pattern Recognit.
Suh-Yin Lee, Man-Kwan Shan, Wei-Pang Yang
1986 A* conf
VLDB
Meichun Hsu, Wei-Pang Yang
1985 J jnl
BIT
Wei-Pang Yang, M. W. Du
1984 A* conf
VLDB
Wei-Pang Yang, M. W. Du
redb/extractors/decompiler/apk/smali_normalization.py
← Index redb/extractors/decompiler/apk/smali_normalization.py python
"""Semantic normalization of Dalvik/smali instructions.

Analogous to Binary Ninja's LLIL normalization: strips register allocation
noise and instruction encoding variants while preserving semantic operations.

Three normalization levels (most aggressive to most detailed):
  - 'category':    semantic category only (MOV, ALU, CALL, ...)
  - 'opcode':      base opcode, width-invariant (add, sub, invoke, ...)
  - 'opcode_api':  opcode category + API method/field references for
                   invoke/field/alloc instructions (default for MinHash)

References:
  - Smali+ 12-category reduction (Canfora et al.)
  - MOSDroid opcode family grouping
  - DroidSIFT/DroidSim API-sensitive similarity
"""

import re
from typing import List

# ---------------------------------------------------------------------------
# Dalvik opcode -> semantic category mapping
# ---------------------------------------------------------------------------
# Prefix-matched against instruction opcodes. Order matters for overlapping
# prefixes (longer/more-specific prefixes should come first in iteration,
# but since we use startswith and break on first match, we order by
# specificity within the list).

OPCODE_CATEGORIES = {
    # Arithmetic/logic
    "add": "ALU", "sub": "ALU", "mul": "ALU", "div": "ALU",
    "rem": "ALU", "and": "ALU", "or": "ALU", "xor": "ALU",
    "shl": "ALU", "shr": "ALU", "ushr": "ALU", "neg": "ALU",
    "not": "ALU",
    # Data movement
    "move": "MOV", "const": "CONST",
    # Memory access (field/array)
    "iget": "LOAD", "sget": "LOAD", "aget": "LOAD",
    "iput": "STORE", "sput": "STORE", "aput": "STORE",
    # Invocations
    "invoke": "CALL",
    # Control flow
    "if": "BRANCH", "goto": "JMP",
    "switch": "SWITCH",
    "return": "RET",
    # Object/type
    "new": "ALLOC", "check": "TYPE", "instance": "TYPE",
    # Array
    "fill": "ARR", "array": "ARR",
    # Comparison
    "cmpl": "CMP", "cmpg": "CMP", "cmp": "CMP",
    # Exception / synchronization
    "throw": "EXC", "monitor": "SYNC",
    # Conversion (int-to-long, float-to-int, etc.)
    "int-to": "CONV", "long-to": "CONV", "float-to": "CONV",
    "double-to": "CONV",
}

# Pre-compiled regexes for operand extraction
_METHOD_REF_RE = re.compile(r"(L[\w/$]+;->[\w<>]+\(.*?\)[\w/$;\[]*)")
_FIELD_REF_RE = re.compile(r"(L[\w/$]+;->[\w]+:[\w/$;\[]+)")
_CLASS_REF_RE = re.compile(r"(L[\w/$]+;)")
_CONST_STRING_RE = re.compile(r'^const-string(?:/jumbo)?\s')


def categorize_opcode(opcode: str) -> str:
    """Map a Dalvik opcode to its semantic category.

    Prefix-matched: 'add-int/2addr' matches 'add' -> 'ALU'.
    Returns 'OTHER' for unrecognized opcodes.
    """
    for prefix, cat in OPCODE_CATEGORIES.items():
        if opcode.startswith(prefix):
            return cat
    return "OTHER"


# Mapping from semantic categories to the ACFG feature vector indices
# used by Binary Ninja's build_block_features (cfg_features.py).
# This enables cross-platform ACFG feature comparison.
CATEGORY_TO_ACFG_INDEX = {
    "ALU": 0,       # CAT_ARITHMETIC
    "CONV": 0,      # arithmetic-adjacent
    "CMP": 4,       # CAT_COMPARISON
    "MOV": 2,       # CAT_TRANSFER
    "CONST": 2,     # transfer-adjacent (loading constants)
    "LOAD": 5,      # CAT_MEMORY
    "STORE": 5,     # CAT_MEMORY
    "CALL": 3,      # CAT_CALL
    "BRANCH": 1,    # CAT_LOGIC (conditional logic)
    "JMP": 1,       # CAT_LOGIC
    "SWITCH": 1,    # CAT_LOGIC
    "RET": 2,       # CAT_TRANSFER
    "ALLOC": 5,     # CAT_MEMORY (heap allocation)
    "TYPE": 6,      # CAT_OTHER
    "ARR": 5,       # CAT_MEMORY
    "EXC": 6,       # CAT_OTHER
    "SYNC": 6,      # CAT_OTHER
    "OTHER": 6,     # CAT_OTHER
}


def normalize_instruction(line: str, level: str = "opcode_api") -> str:
    """Normalize a single smali instruction line.

    Args:
        line: A single smali instruction (whitespace-stripped).
        level: Normalization level:
            'category'   - most aggressive: just semantic category
            'opcode'     - base opcode only, width/addressing-mode invariant
            'opcode_api' - category + API references for invoke/field/alloc
                          (default, best for MinHash similarity)

    Returns:
        Normalized instruction string, or empty string for non-instructions.
    """
    stripped = line.strip()
    if not stripped:
        return ""

    parts = stripped.split(None, 1)
    opcode = parts[0]
    operands = parts[1] if len(parts) > 1 else ""

    if level == "category":
        return categorize_opcode(opcode)

    if level == "opcode":
        # Strip type/width suffixes for invariance:
        # add-int, add-long, add-float -> 'add'
        # add-int/2addr -> 'add'
        base = re.split(r"[-/]", opcode)[0]
        return base

    if level == "opcode_api":
        # const-string: preserve string content (encrypted strings are a
        # key malware indicator)
        if _CONST_STRING_RE.match(stripped):
            # Extract the string literal
            str_match = re.search(r'"(.*)"', operands)
            if str_match:
                return f"CONST_STR \"{str_match.group(1)}\""
            return "CONST_STR"

        # invoke-*: preserve method reference
        if opcode.startswith("invoke"):
            ref = _METHOD_REF_RE.search(operands)
            if ref:
                return f"CALL {ref.group(1)}"
            return "CALL"

        # Field access: preserve field reference
        if opcode.startswith(("iget", "iput", "sget", "sput")):
            ref = _FIELD_REF_RE.search(operands)
            if ref:
                cat = "LOAD" if "get" in opcode else "STORE"
                return f"{cat} {ref.group(1)}"
            # Fallback: try space-separated format from androguard
            # e.g. "iget v0, p0, Lcom/Foo;->field Ljava/lang/String;"
            space_ref = re.search(
                r"(L[\w/$]+;->[\w]+)\s+([\w/$;\[]+)", operands
            )
            if space_ref:
                cat = "LOAD" if "get" in opcode else "STORE"
                return f"{cat} {space_ref.group(1)}:{space_ref.group(2)}"
            cat = "LOAD" if "get" in opcode else "STORE"
            return cat

        # new-instance: preserve allocated type
        if opcode.startswith("new-instance") or opcode == "new-array":
            ref = _CLASS_REF_RE.search(operands)
            if ref:
                return f"ALLOC {ref.group(1)}"
            return "ALLOC"

        # Everything else: just the category
        return categorize_opcode(opcode)

    # Unknown level: return raw opcode
    return opcode


def normalize_method_body(
    body: str, level: str = "opcode_api"
) -> List[str]:
    """Normalize all instructions in a smali method body.

    Filters out directives (.), labels (:), comments (#), and blank lines.
    Returns a list of normalized instruction strings.

    Args:
        body: Raw smali method body text.
        level: Normalization level (see normalize_instruction).

    Returns:
        List of normalized instruction strings (no empty strings).
    """
    normalized = []
    for line in body.split("\n"):
        stripped = line.strip()
        # Skip non-instructions
        if not stripped:
            continue
        if stripped.startswith((".",":", "#")):
            continue
        result = normalize_instruction(stripped, level)
        if result:
            normalized.append(result)
    return normalized