Haiwen Liu

62 papers C 2Journal 57Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Mingqi Lv, Shanshan Zhang, Haiwen Liu, Tieming Chen, Tiantian Zhu
2025 J jnl
Signal Image Video Process.
Fuqiang Yang, Yuanlin Zheng, Kaiyang Liao, Yuying Peng, Haiwen Liu, Rubai Luo, Hanxiang Zhao, Bangyong Sun
2025 J jnl
Signal Image Video Process.
Haiwen Liu, Yuanlin Zheng, Kaiyang Liao, Fuqiang Yang, Bangyong Sun, Chongjun Zhong
2024 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Qiujin Chen, Mo Huang, Tian Xia, Jun Yin, Haiwen Liu, Rui Paulo Martins, Yan Lu
2024 J jnl
Signal Image Video Process.
Kaidi Wang, Yuanlin Zheng, Kaiyang Liao, Haiwen Liu, Bangyong Sun
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Tzu-Yu Liu, Hongliang Tian
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Sidong Wang, Jiaxin Kuang, Ruolin Wang, Hongliang Tian
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Xinyi Gu, Hongliang Tian
2024 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Baoping Ren, Xinlei Liu, Xuehui Guan, Haiwen Liu
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Hongliang Tian, Haiwen Liu, Zeren Song, Sidong Wang
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Hongliang Tian, Haiwen Liu
2024 J jnl
IEEE Access
Haojie Lou, Yuanlin Zheng, Wenqian Chen, Haiwen Liu
2024 J jnl
Signal Image Video Process.
Wenqian Chen, Yuanlin Zheng, Kaiyang Liao, Haiwen Liu, Yalin Miao, Bangyong Sun
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Sidong Wang, Mingli Sun, Zeren Song, Hongliang Tian
2023 J jnl
IEEE Trans. Ind. Electron.
Weisheng Tang, Shao Yong Zheng, Yong Mei Pan, Haiwen Liu
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Hongliang Tian, Haiwen Liu, Shao Yong Zheng, Tao Zuo
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Taotao Huang, Haiwen Liu, Hao Xu, Li Geng
2023 J jnl
IEEE Internet Things J.
Luyi Wang, Hongyu Shi, Xiaoming Chen, Bingyue Qu, Jianjia Yi, Anxue Zhang, Zhuo Xu, Haiwen Liu
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Taotao Huang, Haiwen Liu, Cheng Guo, Linping Feng, Li Geng
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Linping Feng, Jine Chen, Xinhua Yu, Lei Zhu, Haiwen Liu
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yi Song, Haiwen Liu, Linping Feng, Hexiu Xu
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Hongliang Tian, Lin Liu, Linping Feng
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Taotao Huang, Linping Feng, Li Geng, Haiwen Liu, Shao Yong Zheng, Sheng Ye, Lina Zhang, Hao Xu
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Hongliang Tian, Zhijiao Chen, Le Chang, Ruolin Wang, Shaofei Wang, Haiwen Liu, Chao Du, Di Zhou, Zhewang Ma
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Baoping Ren, Xuehui Guan, Haiwen Liu, Zhewang Ma, Masataka Ohira
2022 J jnl
IEEE Trans. Veh. Technol.
Hao Xu, Zhijiao Chen, Haiwen Liu, Le Chang, Taotao Huang, Sheng Ye, Lina Zhang, Chao Du
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Chuanyun Wang, Zhiwen Han, Haiwen Liu, Pin Wen, Lina Wang, Xiqiang Zhang
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Jiaming Tang, Haiwen Liu, Yang Yang
2021 J jnl
IEEE Trans. Veh. Technol.
Zhijiao Chen, Jie Tian, Haiwen Liu, Junsheng Yu, Xiaodong Chen
2020 J jnl
IEEE Trans. Ind. Electron.
Shao Yong Zheng, Jia Cheng Zhang, Haiwen Liu
2020 J jnl
IEEE Trans. Circuits Syst.
Jiaming Tang, Haiwen Liu, Yang Yang
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Haiwen Liu, Zhengbiao Wang, Shuangxi Hu, He-Xiu Xu, Baoping Ren
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zhi Li Su, Bo Wei Xu, Shao Yong Zheng, Haiwen Liu, Yunliang Long
2020 J jnl
IEEE Access
Chuanyun Wang, Xin Wang, Haiwen Liu, Zhijiao Chen, Zhiwen Han
2019 J jnl
IEEE Access
Xuehui Guan, Wang Liu, Baoping Ren, Haiwen Liu, Pin Wen
2019 J jnl
IEEE Access
Ranjan Das, Qingfeng Zhang, Abhishek Kandwal, Haiwen Liu
2019 J jnl
IEEE Access
Haiwen Liu, Zhengbiao Wang, Qingfeng Zhang, Huifeng Ma, Baoping Ren, Pin Wen
2019 J jnl
IEICE Electron. Express
Pin Wen, Zhewang Ma, Shuangshuang Zhu, Haiwen Liu, Baoping Ren, Xuehui Guan, Masataka Ohira
2019 J jnl
IEICE Electron. Express
Pin Wen, Zhewang Ma, Haiwen Liu, Shuangshuang Zhu, Baoping Ren, Xuehui Guan, Masataka Ohira
2019 J jnl
IEEE Access
Haiwen Liu, Yifan Wang, Pin Wen, Shao Yong Zheng
2019 J jnl
IEICE Electron. Express
Chuanyun Wang, Guibin Chen, Haiwen Liu, Zhewang Ma, Xiaoyan Zhang
2019 J jnl
Pattern Recognit.
Yuming Fang, Xiaoqiang Zhang, Feiniu Yuan, Nevrez Imamoglu, Haiwen Liu
2018 J jnl
IEEE Access
Haiwen Liu, Wenjuan Yang, Anxue Zhang, Shuangshuang Zhu, Zhengbiao Wang, Taotao Huang
2018 J jnl
IEEE Access
Shuangshuang Zhu, Haiwen Liu, Pin Wen, Lixia Du, Jiafeng Zhou
2018 J jnl
IEICE Electron. Express
Pin Wen, Zhewang Ma, Haiwen Liu, Shuangshuang Zhu, Baoping Ren, Xiaolong Wang, Masataka Ohira
2018 J jnl
IEICE Electron. Express
Baoping Ren, Zhewang Ma, Haiwen Liu, Xuehui Guan, Pin Wen, Chuanyun Wang, Masataka Ohira
2018 conf
RFID-TA
Yi Song, Haiwen Liu, Weilong Zhao, Zhengbiao Wang
2018 J jnl
IEEE Access
Baoping Ren, Haiwen Liu, Zhewang Ma, Masataka Ohira, Pin Wen, Xiaolong Wang, Xuehui Guan
2018 J jnl
IEEE Access
Ranjan Das, Qingfeng Zhang, Abhishek Kandwal, Haiwen Liu, Yifan Chen
2018 J jnl
IEICE Electron. Express
Yi Song, Yichen Xu, Haiwen Liu, Zhewang Ma
2018 J jnl
IEEE Access
Zhijiao Chen, Haiwen Liu, Junsheng Yu, Xiaodong Chen
2018 J jnl
IEEE Access
Ranjan Das, Qingfeng Zhang, Haiwen Liu
2018 J jnl
IEEE Access
Yuming Fang, Guanqun Ding, Yuan Yuan, Weisi Lin, Haiwen Liu
2018 J jnl
CoRR
Yuming Fang, Guanqun Ding, Yuan Yuan, Weisi Lin, Haiwen Liu
2016 J jnl
IEICE Electron. Express
Xuehui Guan, Wei Huang, Haiwen Liu, Ye Yuan, Yande Liu, Zhewang Ma
2011 conf
SOSE
Hao Wei, Jin Shao, Bang Liu, Haiwen Liu, Qianxiang Wang, Hong Mei
2011 J jnl
J. Comput.
Fei Yu, Haiwen Liu, Wenlang Luo, Huojiao He, Chin-Chen Chang
2011 C conf
SEKE
Fang Deng, Haiwen Liu, Jin Shao, Qianxiang Wang
2010 conf
IITSI
Shan Wang, Yang Jiang, Minghua Gao, Chuanyun Wang, Haiwen Liu
2010 C conf
APSEC
Jin Shao, Fang Deng, Haiwen Liu, Qianxiang Wang, Hong Mei
2007 J jnl
IEICE Trans. Electron.
Satoshi Kurachi, Toshihiko Yoshimasu, Haiwen Liu, Nobuyuki Itoh, Koji Yonemura
2007 J jnl
J. Circuits Syst. Comput.
Haiwen Liu, Lingling Sun, Zhengfan Li, Xiaowei Sun
redb/extractors/js_extractors/js_suspicious_apis.py
← Index redb/extractors/js_extractors/js_suspicious_apis.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor
from redb.extractors.js_extractors.js_patterns import CATEGORIES, PATTERNS


# Backwards-compatible export: `{category: [(raw_pattern_string, api_name), ...]}`
# in canonical PATTERNS insertion order (code_execution, network, filesystem,
# process, registry, crypto_encoding, dom_manipulation). Kept so external
# callers (notably JSDeobfuscationExtractor pre-cleanup) keep working until
# they are migrated to PATTERNS directly.
SUSPICIOUS_APIS: "dict[str, list[tuple[str, str]]]" = {}
for _name, _compiled in PATTERNS.items():
    SUSPICIOUS_APIS.setdefault(CATEGORIES[_name], []).append((_compiled.pattern, _name))


class JSSuspiciousAPIsExtractor(JSExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False, source=None, context=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, source, context=context,
        )
        self.api_findings = None
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.JS_SUSPICIOUS_APIS.value

    def _get_context_snippet(self, line, max_len=200):
        """Get a truncated context snippet around a match."""
        line = line.strip()
        if len(line) > max_len:
            return line[:max_len] + "..."
        return line

    def extract(self):
        src = self.js_source
        if not src:
            return None

        # Pass 1: shared per-sample scan over the raw source. The dict contains
        # entries for both PATTERNS and FEATURE_PATTERNS; the loop below only
        # consults PATTERNS keys, so feature-only entries are ignored.
        raw_scan = self._context.scan or {}
        raw_lines = self.lines

        # Pass 2: same patterns over the deobfuscated text, when the
        # deobfuscator produced something meaningfully different. APIs hidden
        # behind one obfuscation layer (Vjw0rm-style array.join + eval,
        # Dean-Edwards packers, jjencode, ...) only surface here. The scan is
        # cached on JSContext so JSDeobfuscationExtractor (which computes the
        # new_apis_found diff) reuses the same result.
        deobf_scan = self._context.scan_deobfuscated
        if deobf_scan:
            deobf_text, _ = self._context.deobfuscated
            deobf_lines = deobf_text.splitlines()
        else:
            deobf_lines = []

        findings = []
        # Iterate PATTERNS in canonical order so output is deterministic and
        # matches the historical category/pattern ordering. For each api_name,
        # raw findings take precedence; if an API is found only in the
        # deobfuscated text, we surface it as a row tagged revealed_by_deobf=1
        # with line numbers / snippets pulled from the deobfuscated source.
        for api_name in PATTERNS:
            raw_info = raw_scan.get(api_name)
            if raw_info:
                line_numbers = raw_info["lines"]
                lines_for_snippets = raw_lines
                revealed_by_deobf = 0
            else:
                deobf_info = deobf_scan.get(api_name)
                if not deobf_info:
                    continue
                line_numbers = deobf_info["lines"]
                lines_for_snippets = deobf_lines
                revealed_by_deobf = 1

            snippets = [
                self._get_context_snippet(lines_for_snippets[ln - 1])
                for ln in line_numbers[:3]
                if 0 < ln <= len(lines_for_snippets)
            ]
            findings.append({
                "api_name": api_name,
                "api_category": CATEGORIES[api_name],
                # Historical semantics: count = number of unique lines with a
                # match, not total in-source match count.
                "call_count": len(line_numbers),
                "line_numbers": line_numbers,
                "context_snippet": " | ".join(snippets),
                "revealed_by_deobf": revealed_by_deobf,
            })

        if not findings:
            return None

        self.api_findings = findings
        return findings

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.api_findings:
                return None

            current_time = datetime.now(timezone.utc)
            data = []
            for f in self.api_findings:
                data.append([
                    self.sha256,
                    f['api_name'],
                    f['api_category'],
                    f['call_count'],
                    f['line_numbers'],
                    f['context_snippet'],
                    f['revealed_by_deobf'],
                    current_time,
                ])

            column_names = [
                "sha256", "api_name", "api_category",
                "call_count", "line_numbers", "context_snippet",
                "revealed_by_deobf",
                "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)", "String", "LowCardinality(String)",
                "UInt32", "Array(UInt32)", "String",
                "UInt8",
                "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_js_suspicious_apis"