Malu Zhang

144 papers A* 28A 2B 6Misc 6Journal 96Unranked 6
YearRankTypeTitle / Venue / Authors
2026 A* conf
AAAI
Hanwen Liu, Kexin Shi, Jieyuan Zhang, Yimeng Shan, Jibin Wu, Wenyu Chen, Malu Zhang
2026 J jnl
CoRR
Yu-Jie Liang, Zihan Cao, Liang-Jian Deng, Yang Yang, Malu Zhang
2026 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Fan Zhang, Malu Zhang, Wenyu Chen, Siying Wang, Xin Zhang, Jiayin Li, Yang Yang
2026 J jnl
CoRR
Dehao Zhang, Fukai Guo, Shuai Wang, Jingya Wang, Jieyuan Zhang, Yimeng Shan, Malu Zhang, Yang Yang, Haizhou Li
2026 J jnl
CoRR
Shuai Wang, Malu Zhang, Yulin Jiang, Dehao Zhang, Ammar Belatreche, Yu Liang, Yimeng Shan, Zijian Zhou, Yang Yang, Haizhou Li
2026 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Shuai Wang, Haorui Zheng, Yukun Chen, Ammar Belatreche, Guoqing Wang, Yeying Jin, Jibin Wu, Malu Zhang, Yang Yang, Haizhou Li
2026 J jnl
Neural Networks
Siqi Cai, Zheyuan Lin, Xiaoli Liu, Wenjie Wei, Shuai Wang, Malu Zhang, Tanja Schultz, Haizhou Li
2026 J jnl
CoRR
Wenjie Wei, Xiaolong Zhou, Malu Zhang, Ammar Belatreche, Qian Sun, Yimeng Shan, Dehao Zhang, Zijian Zhou, Zeyu Ma, Yang Yang, Haizhou Li
2026 A* conf
AAAI
Honglin Cao, Shuai Wang, Zijian Zhou, Ammar Belatreche, Wenjie Wei, Yu Liang, Yu Yang, Rui Xi, Malu Zhang, Haizhou Li
2026 A* conf
AAAI
Jingya Wang, Xin Deng, Wenjie Wei, Dehao Zhang, Shuai Wang, Qian Sun, Jieyuan Zhang, Hanwen Liu, Ning Xie, Malu Zhang
2025 B conf
COLING
Wanlong Liu, Enqi Zhang, Shaohuan Cheng, DingYi Zeng, Li Zhou, Chen Zhang, Malu Zhang, Wenyu Chen
2025 J jnl
IEEE Trans. Cogn. Dev. Syst.
Yuguo Liu, Wenyu Chen, Hanwen Liu, Yun Zhang, Malu Zhang, Hong Qu
2025 A* conf
AAAI
Yimeng Shan, Malu Zhang, Ruijie Zhu, Xuerui Qiu, Jason K. Eshraghian, Haicheng Qu
2025 A* conf
ICML
Yu Liang, Yu Yang, Wenjie Wei, Ammar Belatreche, Shuai Wang, Malu Zhang, Yang Yang
2025 J jnl
CoRR
Yu Liang, Yu Yang, Wenjie Wei, Ammar Belatreche, Shuai Wang, Malu Zhang, Yang Yang
2025 A* conf
IJCAI
Honglin Cao, Zijian Zhou, Wenjie Wei, Yu Liang, Ammar Belatreche, Dehao Zhang, Malu Zhang, Yang Yang, Haizhou Li
2025 J jnl
CoRR
Honglin Cao, Zijian Zhou, Wenjie Wei, Ammar Belatreche, Yu Liang, Dehao Zhang, Malu Zhang, Yang Yang, Haizhou Li
2025 Misc conf
ICASSP
Chao Zhai, Fan Zhang, Wenyu Chen, Malu Zhang, Fan Li, Xuanting Xie
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Pengfei Sun, Jibin Wu, Malu Zhang, Paul Devos, Dick Botteldooren
2025 J jnl
Neural Networks
Pengfei Sun, Jorg De Winne, Malu Zhang, Paul Devos, Dick Botteldooren
2025 J jnl
CoRR
Dehao Zhang, Malu Zhang, Shuai Wang, Jingya Wang, Wenjie Wei, Zeyu Ma, Guoyin Wang, Yang Yang, Haizhou Li
2025 J jnl
Expert Syst. Appl.
Wanlong Liu, Yichen Xiao, Shaohuan Cheng, DingYi Zeng, Li Zhou, Weishan Kong, Malu Zhang, Wenyu Chen
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yuning Yang, Xiurui Xie, Guowei Peng, Malu Zhang, Guangchun Luo, Yang Yang, Guisong Liu
2025 J jnl
Neural Networks
Chengzhuo Lu, Huilin Du, Wenjie Wei, Qian Sun, Yuchen Wang, DingYi Zeng, Wenyu Chen, Malu Zhang, Yang Yang
2025 J jnl
IEEE Internet Things J.
DingYi Zeng, Yichen Xiao, Wanlong Liu, Huilin Du, Enqi Zhang, Dehao Zhang, Yuchen Wang, Malu Zhang, Wenyu Chen
2025 J jnl
Int. J. Neural Syst.
Pengfei Sun, Jorg De Winne, Malu Zhang, Paul Devos, Dick Botteldooren
2025 Misc conf
ICASSP
Wanlong Liu, DingYi Zeng, Li Zhou, Yichen Xiao, Malu Zhang, Wenyu Chen
2025 A* conf
AAAI
DingYi Zeng, Yuchen Wang, Honglin Cao, Wanlong Liu, Yichen Xiao, Chengzhuo Lu, Wenyu Chen, Malu Zhang, Guoqing Wang, Yang Yang
2025 Misc conf
ICASSP
Dehao Zhang, Shuai Wang, Yichen Xiao, Wenjie Wei, Yimeng Shan, Malu Zhang, Yang Yang
2025 J jnl
CoRR
Dehao Zhang, Shuai Wang, Yichen Xiao, Wenjie Wei, Yimeng Shan, Malu Zhang, Yang Yang
2025 Misc conf
ICASSP
Wanlong Liu, Yichen Xiao, DingYi Zeng, Hongyang Zhao, Wenyu Chen, Malu Zhang
2025 J jnl
CoRR
Wanlong Liu, Yichen Xiao, DingYi Zeng, Hongyang Zhao, Wenyu Chen, Malu Zhang
2025 A* conf
ICLR
Wenjie Wei, Malu Zhang, Zijian Zhou, Ammar Belatreche, Yimeng Shan, Yu Liang, Honglin Cao, Jieyuan Zhang, Yang Yang
2025 J jnl
CoRR
Wenjie Wei, Malu Zhang, Zijian Zhou, Ammar Belatreche, Yimeng Shan, Yu Liang, Honglin Cao, Jieyuan Zhang, Yang Yang
2025 A* conf
ICLR
Xuerui Qiu, Malu Zhang, Jieyuan Zhang, Wenjie Wei, Honglin Cao, Junsheng Guo, Rui-Jie Zhu, Yimeng Shan, Yang Yang, Haizhou Li
2025 J jnl
CoRR
Xuerui Qiu, Jieyuan Zhang, Wenjie Wei, Honglin Cao, Junsheng Guo, Rui-Jie Zhu, Yimeng Shan, Yang Yang, Malu Zhang, Haizhou Li
2025 A* conf
CVPR
Yichen Xiao, Shuai Wang, Dehao Zhang, Wenjie Wei, Yimeng Shan, Xiaoli Liu, Yulin Jiang, Malu Zhang
2025 J jnl
CoRR
Wenjie Wei, Malu Zhang, Jieyuan Zhang, Ammar Belatreche, Shuai Wang, Yimeng Shan, Hanwen Liu, Honglin Cao, Guoqing Wang, Yang Yang, Haizhou Li
2025 J jnl
CoRR
Yimeng Shan, Zhenbang Ren, Haodi Wu, Wenjie Wei, Rui-Jie Zhu, Shuai Wang, Dehao Zhang, Yichen Xiao, Jieyuan Zhang, Kexin Shi, Jingzhinan Wang, Jason K. Eshraghian, Haicheng Qu, Jiqing Zhang, Malu Zhang, Yang Yang
2025 J jnl
IEEE Trans. Image Process.
Jiqing Zhang, Malu Zhang, Yuanchen Wang, Qianhui Liu, Baocai Yin, Haizhou Li, Xin Yang
2025 A* conf
ICLR
Shuai Wang, Malu Zhang, Dehao Zhang, Ammar Belatreche, Yichen Xiao, Yu Liang, Yimeng Shan, Qian Sun, Enqi Zhang, Yang Yang
2025 J jnl
CoRR
Shuai Wang, Malu Zhang, Dehao Zhang, Ammar Belatreche, Yichen Xiao, Yu Liang, Yimeng Shan, Qian Sun, Enqi Zhang, Yang Yang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Rui-Jie Zhu, Malu Zhang, Qihang Zhao, Haoyu Deng, Yule Duan, Liang-Jian Deng
2025 A* conf
ACM Multimedia
Qian Sun, Chengzhuo Lu, Wenyu Chen, Wenjie Wei, Jingya Wang, Jieyuan Zhang, Xiaoli Liu, Yalan Ye, Yang Yang, Malu Zhang
2025 J jnl
Neural Networks
Shuai Wang, Dehao Zhang, Ammar Belatreche, Yichen Xiao, Hongyu Qing, Wenjie Wei, Malu Zhang, Yang Yang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Malu Zhang, Xiaoling Luo, Jibin Wu, Ammar Belatreche, Siqi Cai, Yang Yang, Haizhou Li
2025 J jnl
IEEE Comput. Intell. Mag.
Malu Zhang, Shuai Wang, Jibin Wu, Wenjie Wei, Dehao Zhang, Zijian Zhou, Siying Wang, Fan Zhang, Yang Yang
2025 A* conf
AAAI
Yu Liang, Wenjie Wei, Ammar Belatreche, Honglin Cao, Zijian Zhou, Shuai Wang, Malu Zhang, Yang Yang
2025 J jnl
CoRR
Yu Liang, Wenjie Wei, Ammar Belatreche, Honglin Cao, Zijian Zhou, Shuai Wang, Malu Zhang, Yang Yang
2025 J jnl
CoRR
Jingya Wang, Xin Deng, Wenjie Wei, Dehao Zhang, Shuai Wang, Qian Sun, Jieyuan Zhang, Hanwen Liu, Ning Xie, Malu Zhang
2025 J jnl
CoRR
Jieyuan Zhang, Xiaolong Zhou, Shuai Wang, Wenjie Wei, Hanwen Liu, Qian Sun, Malu Zhang, Yang Yang, Haizhou Li
2025 J jnl
CoRR
Renjie Li, Wenjie Wei, Qi Xin, Xiaoli Liu, Sixuan Mao, Erik Ma, Zijian Chen, Malu Zhang, Haizhou Li, Zhaoyu Zhang
2024 A* conf
AAAI
Chen Zhang, Luis Fernando D'Haro, Yiming Chen, Malu Zhang, Haizhou Li
2024 J jnl
CoRR
Wanlong Liu, Enqi Zhang, Li Zhou, DingYi Zeng, Shaohuan Cheng, Chen Zhang, Malu Zhang, Wenyu Chen
2024 J jnl
Knowl. Based Syst.
Qiugang Zhan, Bingchao Wang, Anning Jiang, Xiurui Xie, Malu Zhang, Guisong Liu
2024 J jnl
Neural Networks
Yuchen Wang, Hanwen Liu, Malu Zhang, Xiaoling Luo, Hong Qu
2024 J jnl
CoRR
Yimeng Shan, Malu Zhang, Rui-Jie Zhu, Xuerui Qiu, Jason K. Eshraghian, Haicheng Qu
2024 conf
ACL (Findings)
Wanlong Liu, Li Zhou, DingYi Zeng, Yichen Xiao, Shaohuan Cheng, Chen Zhang, Grandee Lee, Malu Zhang, Wenyu Chen
2024 J jnl
CoRR
Wanlong Liu, Li Zhou, DingYi Zeng, Yichen Xiao, Shaohuan Cheng, Chen Zhang, Grandee Lee, Malu Zhang, Wenyu Chen
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yuguo Liu, Wenyu Chen, Hanwen Liu, Yun Zhang, Malu Zhang, Hong Qu
2024 J jnl
CoRR
Xianghu Yue, Xiaohai Tian, Malu Zhang, Zhizheng Wu, Haizhou Li
2024 J jnl
Neural Networks
Pengfei Sun, Jibin Wu, Malu Zhang, Paul Devos, Dick Botteldooren
2024 J jnl
IEEE Trans. Cogn. Dev. Syst.
Siqi Cai, Ran Zhang, Malu Zhang, Jibin Wu, Haizhou Li
2024 J jnl
Neural Networks
Jiaqi Yan, Qianhui Liu, Malu Zhang, Lang Feng, De Ma, Haizhou Li, Gang Pan
2024 J jnl
CoRR
Wenjie Wei, Malu Zhang, Jilin Zhang, Ammar Belatreche, Jibin Wu, Zijing Xu, Xuerui Qiu, Hong Chen, Yang Yang, Haizhou Li
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiurui Xie, Yansong Chua, Guisong Liu, Malu Zhang, Guangchun Luo, Huajin Tang
2024 J jnl
Appl. Soft Comput.
Xiurui Xie, Jingxuan Feng, Guisong Liu, Qiugang Zhan, Zhetong Liu, Malu Zhang
2024 A conf
INTERSPEECH
Shuai Wang, Dehao Zhang, Kexin Shi, Yuchen Wang, Wenjie Wei, Jibin Wu, Malu Zhang
2024 J jnl
CoRR
Shuai Wang, Dehao Zhang, Kexin Shi, Yuchen Wang, Wenjie Wei, Jibin Wu, Malu Zhang
2024 A* conf
ACM Multimedia
Yuhui Wu, Guoqing Wang, Zhiwen Wang, Yang Yang, Tianyu Li, Malu Zhang, Chongyi Li, Heng Tao Shen
2024 J jnl
IEEE Trans. Cogn. Dev. Syst.
Qu Yang, Malu Zhang, Jibin Wu, Kay Chen Tan, Haizhou Li
2024 A* conf
IJCAI
Qianhui Liu, Jiaqi Yan, Malu Zhang, Gang Pan, Haizhou Li
2024 J jnl
CoRR
Qianhui Liu, Jiaqi Yan, Malu Zhang, Gang Pan, Haizhou Li
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yun Zhang, Yi Chen, Jilun Zhang, Xiaoling Luo, Malu Zhang, Hong Qu, Zhang Yi
2024 A* conf
ACM Multimedia
Wenjie Wei, Yu Liang, Ammar Belatreche, Yichen Xiao, Honglin Cao, Zhenbang Ren, Guoqing Wang, Malu Zhang, Yang Yang
2024 J jnl
CoRR
Wenjie Wei, Yu Liang, Ammar Belatreche, Yichen Xiao, Honglin Cao, Zhenbang Ren, Guoqing Wang, Malu Zhang, Yang Yang
2024 J jnl
Knowl. Based Syst.
Zhitong Zhao, Ya Zhang, Siying Wang, Fan Zhang, Malu Zhang, Wenyu Chen
2024 conf
ECCV (6)
Yeying Jin, Xin Li, Jiadong Wang, Yan Zhang, Malu Zhang
2024 J jnl
CoRR
Yeying Jin, Xin Li, Jiadong Wang, Yan Zhang, Malu Zhang
2024 A* conf
AAAI
Jiadong Wang, Zexu Pan, Malu Zhang, Robby T. Tan, Haizhou Li
2024 J jnl
CoRR
Qiugang Zhan, Jinbo Cao, Xiurui Xie, Malu Zhang, Huajin Tang, Guisong Liu
2024 A* conf
NeurIPS
Dehao Zhang, Shuai Wang, Ammar Belatreche, Wenjie Wei, Yichen Xiao, Haorui Zheng, Zijian Zhou, Malu Zhang, Yang Yang
2024 J jnl
IEEE Trans. Image Process.
Qiugang Zhan, Guisong Liu, Xiurui Xie, Ran Tao, Malu Zhang, Huajin Tang
2024 Misc conf
ICASSP
Zeyang Song, Jibin Wu, Malu Zhang, Mike Zheng Shou, Haizhou Li
2024 J jnl
Knowl. Based Syst.
Haoyu Deng, Rui-Jie Zhu, Xuerui Qiu, Yule Duan, Malu Zhang, Liang-Jian Deng
2024 J jnl
CoRR
Shuai Wang, Dehao Zhang, Ammar Belatreche, Yichen Xiao, Hongyu Qing, Wenjie Wei, Malu Zhang, Yang Yang
2023 J jnl
CoRR
Chen Zhang, Luis Fernando D'Haro, Yiming Chen, Malu Zhang, Haizhou Li
2023 B conf
IJCNN
Hanwen Liu, Yi Chen, Zihang Zeng, Malu Zhang, Hong Qu
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Jibin Wu, Yansong Chua, Malu Zhang, Guoqi Li, Haizhou Li, Kay Chen Tan
2023 J jnl
Knowl. Based Syst.
Qiugang Zhan, Guisong Liu, Xiurui Xie, Malu Zhang, Guolin Sun
2023 J jnl
Knowl. Based Syst.
Li Zhou, Wenyu Chen, DingYi Zeng, Shaohuan Cheng, Wanlong Liu, Malu Zhang, Hong Qu
2023 J jnl
CoRR
Pengfei Sun, Jibin Wu, Malu Zhang, Paul Devos, Dick Botteldooren
2023 J jnl
CoRR
Qiugang Zhan, Xiurui Xie, Guisong Liu, Malu Zhang
2023 J jnl
CoRR
Qu Yang, Malu Zhang, Jibin Wu, Kay Chen Tan, Haizhou Li
2023 A* conf
CVPR
Jiadong Wang, Xinyuan Qian, Malu Zhang, Robby T. Tan, Haizhou Li
2023 J jnl
CoRR
Jiadong Wang, Xinyuan Qian, Malu Zhang, Robby T. Tan, Haizhou Li
2023 A* conf
IJCAI
Yuchen Wang, Kexin Shi, Chengzhuo Lu, Yuguo Liu, Malu Zhang, Hong Qu
2023 J jnl
CoRR
Zeyang Song, Jibin Wu, Malu Zhang, Mike Zheng Shou, Haizhou Li
2023 A* conf
AAAI
DingYi Zeng, Wanlong Liu, Wenyu Chen, Li Zhou, Malu Zhang, Hong Qu
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaoling Luo, Hong Qu, Yuchen Wang, Zhang Yi, Jilun Zhang, Malu Zhang
2023 A* conf
ICCV
Wenjie Wei, Malu Zhang, Hong Qu, Ammar Belatreche, Jian Zhang, Hong Chen
2023 J jnl
CoRR
Haoyu Deng, Rui-Jie Zhu, Xuerui Qiu, Yule Duan, Malu Zhang, Liang-Jian Deng
2022 Misc conf
ICASSP
Jiadong Wang, Jibin Wu, Malu Zhang, Qi Liu, Haizhou Li
2022 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Jibin Wu, Chenglin Xu, Xiao Han, Daquan Zhou, Malu Zhang, Haizhou Li, Kay Chen Tan
2022 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Malu Zhang, Jiadong Wang, Jibin Wu, Ammar Belatreche, Burin Amornpaisannon, Zhixuan Zhang, Venkata Pavan Kumar Miriyala, Hong Qu, Yansong Chua, Trevor E. Carlson, Haizhou Li
2022 A* conf
IJCAI
Yuchen Wang, Malu Zhang, Yi Chen, Hong Qu
2022 J jnl
CoRR
Rui-Jie Zhu, Malu Zhang, Qihang Zhao, Haoyu Deng, Yule Duan, Liang-Jian Deng
2022 conf
ICONIP (4)
Xiaoling Luo, Hanwen Liu, Yi Chen, Malu Zhang, Hong Qu
2022 A* conf
NeurIPS
Qu Yang, Jibin Wu, Malu Zhang, Yansong Chua, Xinchao Wang, Haizhou Li
2022 J jnl
CoRR
Qu Yang, Jibin Wu, Malu Zhang, Yansong Chua, Xinchao Wang, Haizhou Li
2022 J jnl
Int. J. Mach. Learn. Cybern.
Xiurui Xie, Qing Cai, Hongjie Zhang, Malu Zhang, Zeheng Yang, Guisong Liu
2021 J jnl
Neural Networks
Yun Zhang, Hong Qu, Xiaoling Luo, Yi Chen, Yuchen Wang, Malu Zhang, Zefang Li
2021 A* conf
AAAI
Yi Chen, Hong Qu, Malu Zhang, Yuchen Wang
2021 A* conf
ICRA
Jiadong Wang, Xinyuan Qian, Zihan Pan, Malu Zhang, Haizhou Li
2021 J jnl
Neurocomputing
Jibin Wu, Qi Liu, Malu Zhang, Zihan Pan, Haizhou Li, Kay Chen Tan
2021 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Zihan Pan, Malu Zhang, Jibin Wu, Jiadong Wang, Haizhou Li
2020 J jnl
IEEE J. Sel. Top. Signal Process.
Malu Zhang, Xiaoling Luo, Yi Chen, Jibin Wu, Ammar Belatreche, Zihan Pan, Hong Qu, Haizhou Li
2020 J jnl
Knowl. Based Syst.
Xiurui Xie, Guisong Liu, Qing Cai, Guolin Sun, Malu Zhang, Hong Qu
2020 J jnl
CoRR
Zihan Pan, Malu Zhang, Jibin Wu, Haizhou Li
2020 J jnl
CoRR
Malu Zhang, Jiadong Wang, Zhixuan Zhang, Ammar Belatreche, Jibin Wu, Yansong Chua, Hong Qu, Haizhou Li
2020 J jnl
Neurocomputing
Malu Zhang, Jibin Wu, Ammar Belatreche, Zihan Pan, Xiurui Xie, Yansong Chua, Guoqi Li, Hong Qu, Haizhou Li
2020 J jnl
CoRR
Srivatsa P, Kyle Timothy Ng Chu, Yaswanth Tavva, Jibin Wu, Malu Zhang, Haizhou Li, Trevor E. Carlson
2019 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Malu Zhang, Hong Qu, Ammar Belatreche, Yi Chen, Zhang Yi
2019 J jnl
CoRR
Jibin Wu, Yansong Chua, Malu Zhang, Guoqi Li, Haizhou Li, Kay Chen Tan
2019 J jnl
CoRR
Zihan Pan, Yansong Chua, Jibin Wu, Malu Zhang, Haizhou Li, Eliathamby Ambikairajah
2019 B conf
IJCNN
Jibin Wu, Malu Zhang, Haizhou Li, Yansong Chua
2019 B conf
IJCNN
Jibin Wu, Yansong Chua, Malu Zhang, Qu Yang, Guoqi Li, Haizhou Li
2019 J jnl
CoRR
Jibin Wu, Yansong Chua, Malu Zhang, Qu Yang, Guoqi Li, Haizhou Li
2019 J jnl
CoRR
Jibin Wu, Emre Yilmaz, Malu Zhang, Haizhou Li, Kay Chen Tan
2019 A* conf
AAAI
Malu Zhang, Jibin Wu, Yansong Chua, Xiaoling Luo, Zihan Pan, Dan Liu, Haizhou Li
2019 B conf
IJCNN
Zihan Pan, Jibin Wu, Malu Zhang, Haizhou Li, Yansong Chua
2019 J jnl
CoRR
Zihan Pan, Jibin Wu, Yansong Chua, Malu Zhang, Haizhou Li
2019 A conf
INTERSPEECH
Jibin Wu, Zihan Pan, Malu Zhang, Rohan Kumar Das, Yansong Chua, Haizhou Li
2019 J jnl
Soft Comput.
Xiurui Xie, Guisong Liu, Qing Cai, Hong Qu, Malu Zhang
2018 B conf
ICPR
Jiazhong Lu, Fengmao Lv, Quan-Hui Liu, Malu Zhang, Xiaosong Zhang
2018 J jnl
IEEE Access
Wang Zhou, Jianping Li, Malu Zhang, Yazhou Wang, Fadia Shah
2018 J jnl
IEEE Trans. Cogn. Dev. Syst.
Malu Zhang, Hong Qu, Ammar Belatreche, Xiurui Xie
2018 J jnl
Int. J. Robotics Autom.
Malu Zhang, Hong Qu, Jianping Li, Ammar Belatreche, Xiurui Xie, Zhi Zeng
2017 conf
ICONIP (3)
Lin Zuo, Linyao Ma, Yanqing Xiao, Malu Zhang, Hong Qu
2017 conf
ICONIP (3)
Lin Zuo, Shan Chen, Hong Qu, Malu Zhang
2017 conf
SSCI
Yongqing Zhang, Yi Chen, Malu Zhang, Xi Wu, Jiliu Zhou, Hong Qu
2017 J jnl
Neurocomputing
Xiurui Xie, Hong Qu, Guisong Liu, Malu Zhang
2017 J jnl
Neurocomputing
Malu Zhang, Hong Qu, Xiurui Xie, Jürgen Kurths
2015 J jnl
Neurocomputing
Hong Qu, Xiurui Xie, Yongshuai Liu, Malu Zhang, Li Lu
redb/extractors/js_extractors/js_strings.py
← Index redb/extractors/js_extractors/js_strings.py python
import base64
import bisect
import inspect
import re
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 STRING_PATTERNS, line_offsets

# Local aliases for the compiled patterns this extractor uses. Defined and
# compiled exactly once in js_patterns.STRING_PATTERNS.
_HEX_STRING_RE = STRING_PATTERNS["hex_escape_seq"]
_UNICODE_STRING_RE = STRING_PATTERNS["unicode_escape_seq"]
_CHARCODE_RE = STRING_PATTERNS["charcode_call"]
_BASE64_STRING_RE = STRING_PATTERNS["base64_quoted"]
_CONCAT_STRING_RE = STRING_PATTERNS["concat_chain"]

# Tokeniser used inside _reconstruct_concat to pull each quoted part out of a
# matched concat chain. Compiled once at module load (was recompiled on every
# concat match before).
_CONCAT_TOKEN_RE = re.compile(r'["\']([^"\']*)["\']')


class JSStringsExtractor(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.string_findings = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _decode_hex_string(self, hex_str):
        """Decode \\x41\\x42 style hex strings."""
        try:
            # Remove \\x prefix and decode
            clean = hex_str.replace('\\x', '')
            return bytes.fromhex(clean).decode('utf-8', errors='replace')
        except Exception:
            return None

    def _decode_unicode_string(self, uni_str):
        """Decode \\u0041\\u0042 style unicode strings."""
        try:
            return uni_str.encode('utf-8').decode('unicode_escape')
        except Exception:
            return None

    def _decode_charcode(self, charcode_str):
        """Decode String.fromCharCode(72, 101, 108, ...) sequences."""
        try:
            codes = [int(c.strip()) for c in charcode_str.split(',') if c.strip().isdigit()]
            return ''.join(chr(c) for c in codes if 0 <= c <= 0x10FFFF)
        except Exception:
            return None

    def _decode_base64(self, b64_str):
        """Attempt to decode base64 string."""
        try:
            decoded = base64.b64decode(b64_str)
            # Check if result is printable text
            text = decoded.decode('utf-8', errors='strict')
            # Only return if it looks like text (>80% printable)
            printable = sum(1 for c in text if c.isprintable() or c in '\n\r\t')
            if printable / len(text) > 0.8:
                return text
        except Exception:
            pass
        return None

    def _reconstruct_concat(self, concat_match):
        """Reconstruct concatenated string parts."""
        try:
            parts = _CONCAT_TOKEN_RE.findall(concat_match)
            return ''.join(parts)
        except Exception:
            return None

    def _find_line_number(self, match_start):
        """1-indexed line number for `match_start`, looked up in O(log L) via
        bisect over `self._line_offsets` (built once per extract() call).

        Replaces the historical `self.js_source[:match_start].count('\\n') + 1`
        which was O(N) per call and quadratic across all matches in a sample.
        """
        return bisect.bisect_right(self._line_offsets, match_start)

    def _scan_text(self, text):
        """Run every encoded-string pattern over `text` and return a list of
        finding dicts. Stateless apart from the per-call `_line_offsets` cache,
        which `_find_line_number` reads — callers must reset it before invoking
        this so line numbers reference the text being scanned, not the previous
        one.
        """
        findings = []

        # Hex-encoded strings
        for m in _HEX_STRING_RE.finditer(text):
            raw = m.group()
            decoded = self._decode_hex_string(raw)
            if decoded and len(decoded) >= 4:
                findings.append({
                    'string': decoded[:4000],
                    'string_raw': raw[:4000],
                    'string_encoding': 'hex',
                    'string_offset': self._find_line_number(m.start()),
                    'string_length': len(decoded),
                    'string_raw_length': len(raw),
                    'string_entropy': self._calculate_text_entropy(decoded),
                })

        # Unicode-encoded strings
        for m in _UNICODE_STRING_RE.finditer(text):
            raw = m.group()
            decoded = self._decode_unicode_string(raw)
            if decoded and len(decoded) >= 3:
                findings.append({
                    'string': decoded[:4000],
                    'string_raw': raw[:4000],
                    'string_encoding': 'unicode',
                    'string_offset': self._find_line_number(m.start()),
                    'string_length': len(decoded),
                    'string_raw_length': len(raw),
                    'string_entropy': self._calculate_text_entropy(decoded),
                })

        # String.fromCharCode sequences
        for m in _CHARCODE_RE.finditer(text):
            raw = m.group()
            decoded = self._decode_charcode(m.group(1))
            if decoded and len(decoded) >= 4:
                findings.append({
                    'string': decoded[:4000],
                    'string_raw': raw[:4000],
                    'string_encoding': 'charcode',
                    'string_offset': self._find_line_number(m.start()),
                    'string_length': len(decoded),
                    'string_raw_length': len(raw),
                    'string_entropy': self._calculate_text_entropy(decoded),
                })

        # Base64-encoded strings
        for m in _BASE64_STRING_RE.finditer(text):
            raw = m.group(0)
            b64_val = m.group(1)
            decoded = self._decode_base64(b64_val)
            if decoded and len(decoded) >= 10:
                findings.append({
                    'string': decoded[:4000],
                    'string_raw': raw[:4000],
                    'string_encoding': 'base64',
                    'string_offset': self._find_line_number(m.start()),
                    'string_length': len(decoded),
                    'string_raw_length': len(raw),
                    'string_entropy': self._calculate_text_entropy(decoded),
                })

        # Concatenated strings (reassembled)
        for m in _CONCAT_STRING_RE.finditer(text):
            raw = m.group()
            reconstructed = self._reconstruct_concat(raw)
            if reconstructed and len(reconstructed) >= 20:
                findings.append({
                    'string': reconstructed[:4000],
                    'string_raw': raw[:4000],
                    'string_encoding': 'concat',
                    'string_offset': self._find_line_number(m.start()),
                    'string_length': len(reconstructed),
                    'string_raw_length': len(raw),
                    'string_entropy': self._calculate_text_entropy(reconstructed),
                })

        return findings

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

        # Pass 1: raw source. _line_offsets is keyed off whichever text is
        # currently being scanned so _find_line_number resolves to that text.
        self._line_offsets = line_offsets(src)
        findings = self._scan_text(src)

        # Pass 2: deobfuscated text, when the deobfuscator produced something
        # meaningfully different. Same patterns, but a different surface — for
        # samples where the encoded payload is hidden behind an outer wrapper
        # (e.g. array.join() + eval in Vjw0rm/WSH-RAT) only this pass yields
        # any rows at all.
        deobf_text, _ = self._context.deobfuscated
        if deobf_text and deobf_text != src:
            self._line_offsets = line_offsets(deobf_text)
            findings.extend(self._scan_text(deobf_text))

        if not findings:
            return None

        # Deduplicate by decoded string value (raw pass wins on collision: it
        # comes first in `findings`). A string that surfaces only in the
        # deobfuscated text still gets persisted, which is the whole point of
        # the second pass.
        seen_values = set()
        deduped = []
        for f in findings:
            val_key = f['string'][:100]
            if val_key not in seen_values:
                seen_values.add(val_key)
                deduped.append(f)

        self.string_findings = deduped[:500]  # Limit per file
        # Publish to the shared context so post-loop consumers (notably the IOC
        # plumbing in workers.py) can scrape the decoded strings without
        # holding a reference to this extractor instance.
        self._context.decoded_strings = self.string_findings
        return self.string_findings

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

            data = []
            for f in self.string_findings:
                data.append([
                    self.sha256,
                    f['string'],
                    f['string_raw'],
                    f['string_encoding'],
                    f['string_offset'],
                    f['string_length'],
                    f['string_raw_length'],
                    f['string_entropy'],
                ])

            column_names = [
                "sha256",
                "string",
                "string_raw",
                "string_encoding",
                "string_offset",
                "string_length",
                "string_raw_length",
                "string_entropy",
            ]

            column_type_names = [
                "FixedString(64)",
                "String",
                "String",
                "LowCardinality(String)",
                "UInt64",
                "UInt32",
                "UInt32",
                "Float32",
            ]

            return (data, column_names, column_type_names)

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