Xianye Ben

67 papers A* 2A 1B 1Journal 51Unranked 10
YearRankTypeTitle / Venue / Authors
2026 ed.
CCBR
Wei Jia, Lu Leng, Jie Gui, Xiangbo Shu, Xianye Ben, Zhenan Sun, Yuming Fang, Weidong Min, Jun Chu
2026 J jnl
Digit. Signal Process.
Xianming Wu, Yu Yang, Xianye Ben, Lei Chen
2026 J jnl
Pattern Recognit.
Hanyue Du, Xianye Ben, Xiaowei Feng, Zunxiao Xu, Lei Chen, Qiang Wu
2026 J jnl
ACM Trans. Embed. Comput. Syst.
Xiaoyu Ji, Cheng Chen, Gangqiang Yang, Hongchao Zhou, Hailiang Xiong, Xianye Ben, Zhiguo Wan
2026 J jnl
CoRR
Jingzhe Ma, Meng Zhang, Jianlong Yu, Kun Liu, Zunxiao Xu, Xue Cheng, Junjie Zhou, Yanfei Wang, Jiahang Li, Zepeng Wang, Kazuki Osamura, Rujie Liu, Narishige Abe, Jingjie Wang, Shunli Zhang, Haojun Xie, Jiajun Wu, Weiming Wu, Wenxiong Kang, Qingshuo Gao, Jiaming Xiong, Xianye Ben, Lei Chen, Lichen Song, Junjian Cui, Haijun Xiong, Junhao Lu, Bin Feng, Mengyuan Liu, Ji Zhou, Baoquan Zhao, Ke Xu, Yongzhen Huang, Liang Wang, Manuel Jesús Marín-Jiménez, Md Atiqur Rahman Ahad, Shiqi Yu
2026 J jnl
Neural Networks
Zuowei Wang, Sen Xu, Naixuan Guo, Xuesheng Bian, Xiufang Xu, Shanliang Yao, Xianye Ben, Tian Zhou
2026 J jnl
Displays
Yongcan Zhao, Yinghao Zhang, Tianfeng Xia, Tianhuan Huang, Xianye Ben, Lei Chen
2026 J jnl
IEEE Trans. Emerg. Top. Comput. Intell.
Fengqian Ding, Bo Li, Han Liu, Chuandong Lyu, Xianye Ben, Hongchao Zhou
2026 J jnl
IEEE Trans. Inf. Forensics Secur.
Hanyue Du, Xianye Ben, Xiankai Lu, Zunxiao Xu, Qingshuo Gao, Qiang Wu
2025 J jnl
IEEE Trans. Big Data
Fengqian Ding, Bo Li, Xianye Ben, Jia Zhao, Hongchao Zhou
2025 J jnl
Multim. Syst.
Ying Zhou, Lei Chen, Tianhuan Huang, Ju Liu, Xianye Ben
2025 J jnl
J. Intell. Inf. Syst.
Yao Gao, Rui Su, Xianye Ben, Lei Chen
2025 J jnl
IACR Trans. Cryptogr. Hardw. Embed. Syst.
Cheng Chen, Gangqiang Yang, Hongchao Zhou, Hailiang Xiong, Xianye Ben, Zhiguo Wan
2025 B conf
IJCB
Jingzhe Ma, Meng Zhang, Jianlong Yu, Kun Liu, Zunxiao Xu, Xue Cheng, Junjie Zhou, Yanfei Wang, Jiahang Li, Zepeng Wang, Kazuki Osamura, Rujie Liu, Narishige Abe, Jingjie Wang, Shunli Zhang, Haojun Xie, Jiajun Wu, Weiming Wu, Wenxiong Kang, Qingshuo Gao, Jiaming Xiong, Xianye Ben, Lei Chen, Lichen Song, Junjian Cui, Haijun Xiong, Junhao Lu, Bin Feng, Mengyuan Liu, Ji Zhou, Baoquan Zhao, Ke Xu, Yongzhen Huang, Liang Wang, Manuel J. Marín-Jiménez, Md Atiqur Rahman Ahad, Shiqi Yu
2025 J jnl
CoRR
Wei Wang, Yujie Lin, Jianli Zhao, Moyan Zhang, Pengjie Ren, Xianye Ben, Yujun Li
2025 J jnl
J. Vis. Commun. Image Represent.
Tianfeng Xia, Yongcan Zhao, Peng Zhang, Xianye Ben, Lei Chen
2025 conf
CCBR
Zunxiao Xu, Yunpeng Yao, Xinyue Wang, Xiaotong Li, Xianye Ben
2025 J jnl
ACM Trans. Inf. Syst.
Wei Wang, Yujie Lin, Pengjie Ren, Zhumin Chen, Tsunenori Mine, Jianli Zhao, Qiang Zhao, Moyan Zhang, Xianye Ben, Yujun Li
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Jingqi Li, Yuzhen Zhang, Yi Zeng, Changxin Ye, Wenzheng Xu, Xianye Ben, Fei-Yue Wang, Junping Zhang
2025 A* conf
SIGIR
Wei Wang, Yujie Lin, Moyan Zhang, Hongyu Lu, Jianli Zhao, Jie Sun, Xianye Ben, Pengjie Ren, Yujun Li
2024 J jnl
IEEE Trans. Affect. Comput.
Yongtang Bao, Chenxi Wu, Peng Zhang, Caifeng Shan, Yue Qi, Xianye Ben
2024 J jnl
Neurocomputing
Yutong He, Yefeng Qin, Lei Chen, Peng Zhang, Xianye Ben
2024 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Tianhuan Huang, Xianye Ben, Chen Gong, Wenzheng Xu, Qiang Wu, Hongchao Zhou
2024 conf
CCBR (2)
Yingying Guo, Tingxuan Xie, Wenqiang Jia, Sen Xu, Xianye Ben
2024 J jnl
CoRR
Wei Wang, Yujie Lin, Pengjie Ren, Zhumin Chen, Tsunenori Mine, Jianli Zhao, Qiang Zhao, Moyan Zhang, Xianye Ben, Yujun Li
2024 J jnl
Multim. Syst.
Yefeng Qin, Lei Chen, Xianye Ben, Mingqiang Yang
2023 ed.
CCBR
Wei Jia, Wenxiong Kang, Zaiyu Pan, Xianye Ben, Zhengfu Bian, Shiqi Yu, Zhaofeng He, Jun Wang
2023 J jnl
Int. J. Comput. Appl. Technol.
Yanxin Song, Pengyu Wang, Hao Sun, Lei Chen, Xianye Ben
2023 J jnl
J. Supercomput.
Guanqun Zhou, Shusen Yuan, Hongbo Xing, Youjun Jiang, Pinyong Geng, Yewen Cao, Xianye Ben
2023 conf
ICIGP
Yurui Xie, Lei Chen, Xianye Ben, Mingqiang Yang
2023 conf
ICIGP
Yaping Qi, Rui Su, Lei Chen, Xianye Ben, Zheng Dong, Hongchao Zhou
2023 J jnl
IEEE Trans. Multim.
Xianye Ben, Chen Gong, Tianhuan Huang, Chuanye Li, Rui Yan, Yujun Li
2023 J jnl
IEEE Trans. Netw. Sci. Eng.
Wei Wang, Zhenzhen Quan, Siwen Zhao, Guoqiang Sun, Yujun Li, Xianye Ben, Jianli Zhao
2022 J jnl
Image Vis. Comput.
Ying Zhou, Yanxin Song, Lei Chen, Yang Chen, Xianye Ben, Yewen Cao
2022 A conf
ICME
Xinliang Zhai, Xianye Ben, Chang Liu, Tingxuan Xie
2022 J jnl
PeerJ Comput. Sci.
Tingxuan Xie, Guoquan Sun, Hao Sun, Qiang Lin, Xianye Ben
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Tianhuan Huang, Xianye Ben, Chen Gong, Baochang Zhang, Rui Yan, Qiang Wu
2022 conf
ICIGP
Hao Sun, Bing Li, Lei Chen, Jun Yao, Xianye Ben
2022 conf
ICIGP
Wenqiang Jia, Yanxin Song, Pengyu Wang, Lei Chen, Xianye Ben
2022 J jnl
Multim. Syst.
Bing Li, Ying Zhou, Ruixue Xiao, Jianchao Wang, Xianye Ben, Kidiyo Kpalma, Hongchao Zhou
2022 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Xianye Ben, Yi Ren, Junping Zhang, Su-Jing Wang, Kidiyo Kpalma, Weixiao Meng, Yong-Jin Liu
2022 J jnl
CoRR
Xianye Ben, Yi Ren, Junping Zhang, Su-Jing Wang, Kidiyo Kpalma, Weixiao Meng, Yong-Jin Liu
2021 J jnl
IEEE Multim.
Yifei Guo, Bing Li, Xianye Ben, Yi Ren, Junping Zhang, Rui Yan, Yujun Li
2021 J jnl
PeerJ Comput. Sci.
Zhaoyi Zhuang, Xinliang Zhai, Xianye Ben, Bin Wang, Dijia Yuan
2021 conf
ICIGP
Mengya Li, Lei Chen, Wenhui Wei, Xianye Ben, Deqiang Wang
2021 J jnl
IEEE Trans. Multim.
Peng Zhang, Jingsong Xu, Qiang Wu, Yan Huang, Xianye Ben
2020 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Xianye Ben, Chen Gong, Peng Zhang, Rui Yan, Qiang Wu, Weixiao Meng
2020 A* conf
CVPR
Xi Zhang, Xiaolin Wu, Xinliang Zhai, Xianye Ben, Chengjie Tu
2019 J jnl
IEEE Access
Tianhuan Huang, Lei Chen, Yuncong Feng, Xianye Ben, Ruixue Xiao, Tianle Xue
2019 J jnl
Pattern Recognit.
Xianye Ben, Peng Zhang, Zhihui Lai, Rui Yan, Xinliang Zhai, Weixiao Meng
2019 J jnl
Multim. Tools Appl.
Guofeng Zou, Guixia Fu, Mingliang Gao, Jin Shen, Liju Yin, Xianye Ben
2019 J jnl
IEEE Trans. Image Process.
Xianye Ben, Chen Gong, Peng Zhang, Xitong Jia, Qiang Wu, Weixiao Meng
2018 J jnl
Multim. Tools Appl.
Xuena Zhu, Xianye Ben, Shigang Liu, Rui Yan, Weixiao Meng
2018 J jnl
Pattern Recognit. Lett.
Xianye Ben, Xitong Jia, Rui Yan, Xin Zhang, Weixiao Meng
2018 J jnl
J. Comput. Sci.
Xitong Jia, Xianye Ben, Hui Yuan, Kidiyo Kpalma, Weixiao Meng
2017 J jnl
Neural Comput. Appl.
Zhaoyi Zhuang, Xianye Ben, Rui Yan, Jianhua Pang, Yongbin Li
2016 J jnl
Signal Process.
Shigang Liu, Yali Peng, Xianye Ben, Wankou Yang, Guoyong Qiu
2016 J jnl
Neural Comput. Appl.
Xianye Ben, Weixiao Meng, Kejun Wang, Rui Yan
2016 J jnl
Neural Comput. Appl.
Xianye Ben, Peng Zhang, Rui Yan, Mingqiang Yang, Guodong Ge
2016 J jnl
Neurocomputing
Xianye Ben, Peng Zhang, Weixiao Meng, Rui Yan, Mingqiang Yang, Wenhe Liu, Hui Zhang
2015 J jnl
Neural Comput. Appl.
Zhenyu Wang, Wankou Yang, Xianye Ben
2014 conf
SPAC
Bing Zhao, Jingyu Liu, Jing Wu, Xianye Ben
2013 J jnl
Neurocomputing
Xianye Ben, Weixiao Meng, Rui Yan, Kejun Wang
2012 J jnl
Neurocomputing
Xianye Ben, Weixiao Meng, Rui Yan, Kejun Wang
2012 J jnl
Neurocomputing
Xianye Ben, Weixiao Meng, Rui Yan
2012 conf
IScIDE
Xianye Ben, Wankou Yang, Hongyuan Wang, Shengdi Wang
2011 conf
CHINACOM
Xianye Ben, Weixiao Meng, Shi An, Ze Wang
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}"