Xi Peng

199 papers A* 69A 2Journal 126Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Yijie Lin, Guofeng Ding, Haochen Zhou, Haobin Li, Mouxing Yang, Xi Peng
2026 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haobin Li, Yijie Lin, Peng Hu, Mouxing Yang, Xi Peng
2026 A* conf
AAAI
Jie Chen, Hua Mao, Chuanbin Liu, Zhu Wang, Xi Peng
2026 A* conf
AAAI
Yutong Yang, Lifu Huang, Yijie Lin, Xi Peng, Mouxing Yang
2026 A* conf
AAAI
Qizhi Li, Xuyang Wang, Yingke Chen, Ming Yan, Dezhong Peng, Xi Peng, Xu Wang
2026 J jnl
CoRR
Jie Chen, Zhu Wang, Chuanbin Liu, Xi Peng
2026 J jnl
CoRR
Haobin Li, Yutong Yang, Yijie Lin, Xiang Dai, Mouxing Yang, Xi Peng
2026 A* conf
AAAI
Yang Qin, Yuan Sun, Xi Peng, Dezhong Peng, Joey Tianyi Zhou, Xiaomin Song, Peng Hu
2026 A* conf
AAAI
Likang Peng, Chao Su, Wenyuan Wu, Yuan Sun, Dezhong Peng, Xi Peng, Xu Wang
2025 J jnl
CoRR
Honglin Liu, Chao Sun, Peng Hu, Yunfan Li, Xi Peng
2025 A* conf
AAAI
Jie Chen, Hua Mao, Wai Lok Woo, Chuanbin Liu, Xi Peng
2025 J jnl
CoRR
Ruohong Yang, Peng Hu, Yunfan Li, Xi Peng
2025 A* conf
AAAI
Yuan Li, Liangli Zhen, Yuan Sun, Dezhong Peng, Xi Peng, Peng Hu
2025 A* conf
ICML
Siyuan Duan, Yuan Sun, Dezhong Peng, Guiduo Duan, Xi Peng, Peng Hu
2025 A* conf
ICML
Qihong Song, XitingLiu, Hongyuan Zhu, Joey Tianyi Zhou, Xi Peng, Peng Hu
2025 A* conf
CVPR
Muli Yang, Gabriel James Goenawan, Huaiyuan Qin, Kai Han, Xi Peng, Yanhua Yang, Hongyuan Zhu
2025 A* conf
IJCAI
Kai Guo, Jiedong Wang, Xi Peng, Peng Hu, Hao Wang
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Jie Chen, Hua Mao, Yuanbiao Gou, Xi Peng
2025 A* conf
CVPR
Yang Qin, Chao Chen, Zhihang Fu, Dezhong Peng, Xi Peng, Peng Hu
2025 J jnl
CoRR
Yang Qin, Chao Chen, Zhihang Fu, Dezhong Peng, Xi Peng, Peng Hu
2025 A* conf
ICML
Yiding Lu, Mouxing Yang, Dezhong Peng, Peng Hu, Yijie Lin, Xi Peng
2025 J jnl
CoRR
Yiding Lu, Mouxing Yang, Dezhong Peng, Peng Hu, Yijie Lin, Xi Peng
2025 J jnl
CoRR
Haiyu Zhao, Yiwen Shan, Yuanbiao Gou, Xi Peng
2025 A* conf
IJCAI
Jiedong Wang, Kai Guo, Peng Hu, Xi Peng, Hao Wang
2025 J jnl
CoRR
Haobin Li, Yijie Lin, Peng Hu, Mouxing Yang, Xi Peng
2025 A* conf
CVPR
Shuxian Li, Changhao He, Xiting Liu, Joey Tianyi Zhou, Xi Peng, Peng Hu
2025 A* conf
CVPR
Boyun Li, Haiyu Zhao, Wenxin Wang, Peng Hu, Yuanbiao Gou, Xi Peng
2025 J jnl
CoRR
Yiwen Shan, Haiyu Zhao, Peng Hu, Xi Peng, Yuanbiao Gou
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Zhenyu Huang, Mouxing Yang, Xinyan Xiao, Peng Hu, Xi Peng
2025 J jnl
IEEE Trans. Image Process.
Yu Zhang, Tao Zhang, Hongyuan Zhu, Zihan Chen, Siya Mi, Xi Peng, Xin Geng
2025 J jnl
IEEE Trans. Knowl. Data Eng.
Jie Chen, Hua Mao, Wai Lok Woo, Chuanbin Liu, Zhu Wang, Xi Peng
2025 J jnl
IEEE Trans. Multim.
Yanglin Feng, Yang Qin, Dezhong Peng, Hongyuan Zhu, Xi Peng, Peng Hu
2025 A* conf
IJCAI
Peng Hu, Yang Qin, Yuanbiao Gou, Yunfan Li, Mouxing Yang, Xi Peng
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Boyun Li, Yuanbiao Gou, Wenxin Wang, Peng Hu, Wangmeng Zuo, Xi Peng
2025 J jnl
CoRR
Yongxiang Li, Yuan Sun, Yang Qin, Dezhong Peng, Xi Peng, Peng Hu
2025 J jnl
IEEE Trans. Inf. Forensics Secur.
Yongxiang Li, Yuan Sun, Yang Qin, Dezhong Peng, Xi Peng, Peng Hu
2025 J jnl
CoRR
Likang Peng, Chao Su, Wenyuan Wu, Yuan Sun, Dezhong Peng, Xi Peng, Xu Wang
2025 A* conf
ICLR
Haobin Li, Peng Hu, Qianjun Zhang, Xi Peng, XitingLiu, Mouxing Yang
2025 J jnl
IEEE Trans. Image Process.
Yang Qin, Lifu Huang, Dezhong Peng, Bohan Jiang, Joey Tianyi Zhou, Xi Peng, Peng Hu
2025 A* conf
ICML
Guofeng Ding, Yiding Lu, Peng Hu, Mouxing Yang, Yijie Lin, Xi Peng
2025 J jnl
Neural Comput. Appl.
Ming Yan, Yun Lin, Xi Peng, Zeng Zeng
2024 J jnl
CoRR
Yiding Lu, Haobin Li, Yunfan Li, Yijie Lin, Xi Peng
2024 A conf
ICME
Yuxin Tian, Mouxing Yang, Yunfan Li, Dayiheng Liu, Xingzhang Ren, Xi Peng, Jiancheng Lv
2024 J jnl
CoRR
Yuxin Tian, Mouxing Yang, Yunfan Li, Dayiheng Liu, Xingzhang Ren, Xi Peng, Jiancheng Lv
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Jie Chen, Shengxiang Yang, Xi Peng, Dezhong Peng, Zhu Wang
2024 A* conf
NeurIPS
Haiyu Zhao, Lei Tian, Xinyan Xiao, Peng Hu, Yuanbiao Gou, Xi Peng
2024 J jnl
IEEE Trans. Image Process.
Xinran Ma, Mouxing Yang, Yunfan Li, Peng Hu, Jiancheng Lv, Xi Peng
2024 A* conf
AAAI
Yiding Lu, Yijie Lin, Mouxing Yang, Dezhong Peng, Peng Hu, Xi Peng
2024 J jnl
IEEE Trans. Image Process.
Peng Hu, Liangli Zhen, Xi Peng, Hongyuan Zhu, Jie Lin, Xu Wang, Dezhong Peng
2024 J jnl
CoRR
Ruohong Yang, Peng Hu, Xi Peng, Xiting Liu, Yunfan Li
2024 J jnl
CoRR
Jie Chen, Hua Mao, Yuanbiao Gou, Xi Peng
2024 A* conf
ICML
Yunfan Li, Peng Hu, Dezhong Peng, Jiancheng Lv, Jianping Fan, Xi Peng
2024 A* conf
NeurIPS
Honglin Liu, Peng Hu, Changqing Zhang, Yunfan Li, Xi Peng
2024 J jnl
Int. J. Comput. Vis.
Zhenyu Huang, Peng Hu, Guocheng Niu, Xinyan Xiao, Jiancheng Lv, Xi Peng
2024 J jnl
CoRR
Boyun Li, Haiyu Zhao, Wenxin Wang, Peng Hu, Yuanbiao Gou, Xi Peng
2024 A* conf
ICLR
Yijie Lin, Jie Zhang, Zhenyu Huang, Jia Liu, Zujie Wen, Xi Peng
2024 J jnl
CoRR
Yijie Lin, Jie Zhang, Zhenyu Huang, Jia Liu, Zujie Wen, Xi Peng
2024 J jnl
CoRR
Qingyang Zhang, Yake Wei, Zongbo Han, Huazhu Fu, Xi Peng, Cheng Deng, Qinghua Hu, Cai Xu, Jie Wen, Di Hu, Changqing Zhang
2024 A* conf
CVPR
Yang Qin, Yingke Chen, Dezhong Peng, Xi Peng, Joey Tianyi Zhou, Peng Hu
2024 A* conf
NeurIPS
Haiyun Yao, Zongbo Han, Huazhu Fu, Xi Peng, Qinghua Hu, Changqing Zhang
2024 J jnl
CoRR
Haiyun Yao, Zongbo Han, Huazhu Fu, Xi Peng, Qinghua Hu, Changqing Zhang
2024 A* conf
AAAI
Siyuan Hu, Zheng Wang, Peng Hu, Xi Peng, Jie Wu, Hongyuan Zhu, Yew Soon Ong
2024 J jnl
IEEE Trans. Image Process.
Yongxiang Li, Yang Qin, Yuan Sun, Dezhong Peng, Xi Peng, Peng Hu
2024 A* conf
ACM Multimedia
Longan Wang, Yang Qin, Yuan Sun, Dezhong Peng, Xi Peng, Peng Hu
2024 A* conf
NeurIPS
Ruiming Guo, Mouxing Yang, Yijie Lin, Xi Peng, Peng Hu
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Yuan Sun, Yang Qin, Yongxiang Li, Dezhong Peng, Xi Peng, Peng Hu
2024 J jnl
Int. J. Comput. Vis.
Mouxing Yang, Zhenyu Huang, Xi Peng
2024 A* conf
ACM Multimedia
Changhao He, Hongyuan Zhu, Peng Hu, Xi Peng
2024 J jnl
CoRR
Jie Chen, Hua Mao, Yuanbiao Gou, Zhu Wang, Xi Peng
2024 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Pengxin Zeng, Mouxing Yang, Yiding Lu, Changqing Zhang, Peng Hu, Xi Peng
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yunfan Li, Yijie Lin, Peng Hu, Dezhong Peng, Han Luo, Xi Peng
2024 J jnl
IEEE Trans. Image Process.
Jie Chen, Yingke Chen, Zhu Wang, Haixian Zhang, Xi Peng
2024 A* conf
ICML
Yuanbiao Gou, Haiyu Zhao, Boyun Li, Xinyan Xiao, Xi Peng
2024 A* conf
ICLR
Mouxing Yang, Yunfan Li, Changqing Zhang, Peng Hu, Xi Peng
2024 J jnl
CoRR
Haobin Li, Peng Hu, Qianjun Zhang, Xi Peng, Xiting Liu, Mouxing Yang
2024 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Yuxin Tian, Yijie Lin, Qing Ye, Jian Wang, Xi Peng, Jiancheng Lv
2023 A* conf
CVPR
Haiyu Zhao, Yuanbiao Gou, Boyun Li, Dezhong Peng, Jiancheng Lv, Xi Peng
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Peng Hu, Zhenyu Huang, Dezhong Peng, Xu Wang, Xi Peng
2023 J jnl
CoRR
Jie Chen, Zhiming Li, Hua Mao, Wai Lok Woo, Xi Peng
2023 A* conf
NeurIPS
Yang Qin, Yuan Sun, Dezhong Peng, Joey Tianyi Zhou, Xi Peng, Peng Hu
2023 J jnl
CoRR
Yang Qin, Yuan Sun, Dezhong Peng, Joey Tianyi Zhou, Xi Peng, Peng Hu
2023 J jnl
CoRR
Yiding Lu, Yijie Lin, Mouxing Yang, Dezhong Peng, Peng Hu, Xi Peng
2023 A* conf
CVPR
Pengxin Zeng, Yunfan Li, Peng Hu, Dezhong Peng, Jiancheng Lv, Xi Peng
2023 A* conf
ICCV
Jie Chen, Hua Mao, Wai Lok Woo, Xi Peng
2023 J jnl
CoRR
Jie Chen, Hua Mao, Wai Lok Woo, Xi Peng
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Yijie Lin, Yuanbiao Gou, Xiaotian Liu, Jinfeng Bai, Jiancheng Lv, Xi Peng
2023 J jnl
CoRR
Yuanbiao Gou, Haiyu Zhao, Boyun Li, Xinyan Xiao, Xi Peng
2023 A* conf
ICCV
Yijie Lin, Mouxing Yang, Jun Yu, Peng Hu, Changqing Zhang, Xi Peng
2023 J jnl
CoRR
Yunfan Li, Peng Hu, Dezhong Peng, Jiancheng Lv, Jianping Fan, Xi Peng
2023 A* conf
IJCAI
Haobin Li, Yunfan Li, Mouxing Yang, Peng Hu, Dezhong Peng, Xi Peng
2023 J jnl
CoRR
Haobin Li, Yunfan Li, Mouxing Yang, Peng Hu, Dezhong Peng, Xi Peng
2023 A* conf
AAAI
Yao Jin, Guocheng Niu, Xinyan Xiao, Jian Zhang, Xi Peng, Jun Yu
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Jie Chen, Zhu Wang, Hua Mao, Xi Peng
2023 J jnl
IEEE Trans. Image Process.
Jie Chen, Hua Mao, Dezhong Peng, Changqing Zhang, Xi Peng
2023 J jnl
CoRR
Yang Qin, Yingke Chen, Dezhong Peng, Xi Peng, Joey Tianyi Zhou, Peng Hu
2023 A* conf
ICML
Qingyang Zhang, Haitao Wu, Changqing Zhang, Qinghua Hu, Huazhu Fu, Joey Tianyi Zhou, Xi Peng
2023 J jnl
CoRR
Qingyang Zhang, Haitao Wu, Changqing Zhang, Qinghua Hu, Huazhu Fu, Joey Tianyi Zhou, Xi Peng
2023 A* conf
ACM Multimedia
Yanglin Feng, Hongyuan Zhu, Dezhong Peng, Xi Peng, Peng Hu
2023 A* conf
CVPR
Yanglin Feng, Hongyuan Zhu, Dezhong Peng, Xi Peng, Peng Hu
2023 A* conf
CVPR
Yuanbiao Gou, Peng Hu, Jiancheng Lv, Hongyuan Zhu, Xi Peng
2023 A* conf
AAAI
Liang Jiang, Zhenyu Huang, Jia Liu, Zujie Wen, Xi Peng
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Mouxing Yang, Yunfan Li, Peng Hu, Jinfeng Bai, Jiancheng Lv, Xi Peng
2023 J jnl
CoRR
Pengxin Zeng, Mouxing Yang, Yiding Lu, Changqing Zhang, Peng Hu, Xi Peng
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Peng Hu, Hongyuan Zhu, Jie Lin, Dezhong Peng, Yin-Ping Zhao, Xi Peng
2023 A* conf
ICML
Jiawei Wu, Changqing Zhang, Zuoyong Li, Huazhu Fu, Xi Peng, Joey Tianyi Zhou
2023 J jnl
CoRR
Jiawei Wu, Changqing Zhang, Zuoyong Li, Huazhu Fu, Xi Peng, Joey Tianyi Zhou
2022 A* conf
CVPR
Boyun Li, Xiao Liu, Peng Hu, Zhongqin Wu, Jiancheng Lv, Xi Peng
2022 A* conf
ACM Multimedia
Yang Qin, Dezhong Peng, Xi Peng, Xu Wang, Peng Hu
2022 J jnl
CoRR
Pengxin Zeng, Yunfan Li, Peng Hu, Dezhong Peng, Jiancheng Lv, Xi Peng
2022 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Liangli Zhen, Peng Hu, Xi Peng, Rick Siow Mong Goh, Joey Tianyi Zhou
2022 J jnl
IEEE Trans. Cybern.
Peng Hu, Xi Peng, Hongyuan Zhu, Liangli Zhen, Jie Lin, Huaibai Yan, Dezhong Peng
2022 J jnl
CoRR
Yijie Lin, Mouxing Yang, Jun Yu, Peng Hu, Changqing Zhang, Xi Peng
2022 conf
EMNLP (Findings)
Junhong Liu, Yijie Lin, Liang Jiang, Jia Liu, Zujie Wen, Xi Peng
2022 A* conf
CVPR
Mouxing Yang, Zhenyu Huang, Peng Hu, Taihao Li, Jiancheng Lv, Xi Peng
2022 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Joey Tianyi Zhou, Le Zhang, Jiawei Du, Xi Peng, Zhiwen Fang, Zhe Xiao, Hongyuan Zhu
2022 J jnl
IEEE Trans. Ind. Informatics
Ming Yan, Cen Chen, Jiawei Du, Xi Peng, Joey Tianyi Zhou, Zeng Zeng
2022 A* conf
NeurIPS
Yuanbiao Gou, Peng Hu, Jiancheng Lv, Joey Tianyi Zhou, Xi Peng
2022 J jnl
CoRR
Yuanbiao Gou, Peng Hu, Jiancheng Lv, Xi Peng
2022 J jnl
CoRR
Peng Hu, Xi Peng, Hongyuan Zhu, Mohamed M. Sabry Aly, Jie Lin
2022 J jnl
CoRR
Wenxin Wang, Boyun Li, Yuanbiao Gou, Peng Hu, Xi Peng
2022 J jnl
CoRR
Liang Jiang, Zhenyu Huang, Jia Liu, Zujie Wen, Xi Peng
2022 J jnl
CoRR
Yunfan Li, Mouxing Yang, Dezhong Peng, Taihao Li, Jiantao Huang, Xi Peng
2022 J jnl
Int. J. Comput. Vis.
Yunfan Li, Mouxing Yang, Dezhong Peng, Taihao Li, Jiantao Huang, Xi Peng
2022 J jnl
IEEE Trans. Image Process.
Boyun Li, Yijie Lin, Jinfeng Bai, Peng Hu, Jiancheng Lv, Xi Peng
2022 J jnl
J. Mach. Learn. Res.
Xi Peng, Yunfan Li, Ivor W. Tsang, Hongyuan Zhu, Jiancheng Lv, Joey Tianyi Zhou
2021 A* conf
CVPR
Yijie Lin, Yuanbiao Gou, Zitao Liu, Boyun Li, Jiancheng Lv, Xi Peng
2021 A* conf
AAAI
Yunfan Li, Peng Hu, Jerry Zitao Liu, Dezhong Peng, Joey Tianyi Zhou, Xi Peng
2021 A conf
ICME
Zhibin Wan, Changqing Zhang, Yu Geng, Huazhu Fu, Xi Peng, Pengfei Zhu, Qinghua Hu
2021 J jnl
Pattern Recognit.
Peng Hu, Xi Peng, Hongyuan Zhu, Jie Lin, Liangli Zhen, Wei Wang, Dezhong Peng
2021 J jnl
IEEE Trans. Image Process.
Zhenyu Huang, Joey Tianyi Zhou, Hongyuan Zhu, Changqing Zhang, Jiancheng Lv, Xi Peng
2021 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Joey Tianyi Zhou, Hao Zhang, Di Jin, Xi Peng
2021 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Bijue Jia, Jiancheng Lv, Xi Peng, Yao Chen, Shenglan Yang
2021 J jnl
IEEE Trans. Cybern.
Peng Hu, Xi Peng, Hongyuan Zhu, Jie Lin, Liangli Zhen, Dezhong Peng
2021 A* conf
CVPR
Peng Hu, Xi Peng, Hongyuan Zhu, Liangli Zhen, Jie Lin
2021 A* conf
NeurIPS
Zhenyu Huang, Guocheng Niu, Xiao Liu, Wenbiao Ding, Xinyan Xiao, Hua Wu, Xi Peng
2021 A* conf
AAAI
Peng Hu, Xi Peng, Hongyuan Zhu, Mohamed M. Sabry Aly, Jie Lin
2021 A* conf
CVPR
Mouxing Yang, Yunfan Li, Zhenyu Huang, Zitao Liu, Peng Hu, Xi Peng
2021 J jnl
IEEE Trans. Cybern.
Hongyuan Zhu, Yi Cheng, Xi Peng, Joey Tianyi Zhou, Zhao Kang, Shijian Lu, Zhiwen Fang, Liyuan Li, Joo-Hwee Lim
2021 J jnl
Pattern Recognit.
Zhao Kang, Chong Peng, Qiang Cheng, Xinwang Liu, Xi Peng, Zenglin Xu, Ling Tian
2021 J jnl
CoRR
Boyun Li, Yijie Lin, Xiao Liu, Peng Hu, Jiancheng Lv, Xi Peng
2021 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Weixin Luo, Wen Liu, Dongze Lian, Jinhui Tang, Lixin Duan, Xi Peng, Shenghua Gao
2021 J jnl
Int. J. Comput. Vis.
Boyun Li, Yuanbiao Gou, Shuhang Gu, Zitao Liu, Joey Tianyi Zhou, Xi Peng
2020 J jnl
Knowl. Based Syst.
Yanjie Gou, Yinjie Lei, Lingqiao Liu, Pingping Zhang, Xi Peng
2020 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Joey Tianyi Zhou, Le Zhang, Zhiwen Fang, Jiawei Du, Xi Peng, Yang Xiao
2020 A* conf
NeurIPS
Yuanbiao Gou, Boyun Li, Zitao Liu, Songfan Yang, Xi Peng
2020 J jnl
CoRR
Yunfan Li, Peng Hu, Zitao Liu, Dezhong Peng, Joey Tianyi Zhou, Xi Peng
2020 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xi Peng, Hongyuan Zhu, Jiashi Feng, Chunhua Shen, Haixian Zhang, Joey Tianyi Zhou
2020 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xi Peng, Jiashi Feng, Joey Tianyi Zhou, Yingjie Lei, Shuicheng Yan
2020 J jnl
IEEE Trans. Cybern.
Tao Zhou, Changqing Zhang, Xi Peng, Harish Bhaskar, Jie Yang
2020 J jnl
CoRR
Joey Tianyi Zhou, Xi Peng, Yew-Soon Ong
2020 J jnl
Soft Comput.
Jian Wang, Jiancheng Lv, Xue Yang, Chenwei Tang, Xi Peng
2020 A* conf
NeurIPS
Zhenyu Huang, Peng Hu, Joey Tianyi Zhou, Jiancheng Lv, Xi Peng
2020 J jnl
Neural Networks
Zhao Kang, Xinjia Zhao, Chong Peng, Hongyuan Zhu, Joey Tianyi Zhou, Xi Peng, Wenyu Chen, Zenglin Xu
2020 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Joey Tianyi Zhou, Hao Zhang, Di Jin, Xi Peng, Yang Xiao, Zhiguo Cao
2020 A* conf
AAAI
Peng Hu, Hongyuan Zhu, Xi Peng, Jie Lin
2020 J jnl
CoRR
Zhao Kang, Chong Peng, Qiang Cheng, Xinwang Liu, Xi Peng, Zenglin Xu, Ling Tian
2020 J jnl
CoRR
Boyun Li, Yuanbiao Gou, Shuhang Gu, Jerry Zitao Liu, Joey Tianyi Zhou, Xi Peng
2020 J jnl
IEEE Trans. Image Process.
Boyun Li, Yuanbiao Gou, Jerry Zitao Liu, Hongyuan Zhu, Joey Tianyi Zhou, Xi Peng
2019 J jnl
IEEE Trans. Inf. Forensics Secur.
Joey Tianyi Zhou, Jiawei Du, Hongyuan Zhu, Xi Peng, Yong Liu, Rick Siow Mong Goh
2019 A* conf
ICML
Xi Peng, Zhenyu Huang, Jiancheng Lv, Hongyuan Zhu, Joey Tianyi Zhou
2019 J jnl
CoRR
Yanjie Gou, Yinjie Lei, Lingqiao Liu, Pingping Zhang, Jingyi Zhang, Xi Peng
2019 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Wangmeng Zuo, Xi Peng, Ling Shao, Danil V. Prokhorov, Horst Bischof
2019 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Joey Tianyi Zhou, Meng Fang, Hao Zhang, Chen Gong, Xi Peng, Zhiguo Cao, Rick Siow Mong Goh
2019 A* conf
CVPR
Canyi Lu, Xi Peng, Yunchao Wei
2019 A* conf
IJCAI
Zhenyu Huang, Joey Tianyi Zhou, Xi Peng, Changqing Zhang, Hongyuan Zhu, Jiancheng Lv
2019 J jnl
IEEE Trans. Ind. Electron.
Zhenyu Huang, Hongyuan Zhu, Joey Tianyi Zhou, Xi Peng
2019 A* conf
ICCV
Ruihuang Li, Changqing Zhang, Huazhu Fu, Xi Peng, Joey Tianyi Zhou, Qinghua Hu
2019 A* conf
AAAI
Hongyuan Zhu, Xi Peng, Joey Tianyi Zhou, Songfan Yang, Vijay Chanderasekh, Liyuan Li, Joo-Hwee Lim
2018 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xi Peng, Canyi Lu, Zhang Yi, Huajin Tang
2018 A* conf
IJCAI
Hongyuan Zhu, Xi Peng, Vijay Chandrasekhar, Liyuan Li, Joo-Hwee Lim
2018 J jnl
IEEE Trans. Cogn. Dev. Syst.
Xinxing Xu, Shijie Xiao, Zhang Yi, Xi Peng, Yong Liu
2018 A* conf
AAAI
Joey Tianyi Zhou, Kai Di, Jiawei Du, Xi Peng, Hao Yang, Sinno Jialin Pan, Ivor W. Tsang, Yong Liu, Zheng Qin, Rick Siow Mong Goh
2018 J jnl
IEEE Trans. Image Process.
Xi Peng, Jiashi Feng, Shijie Xiao, Wei-Yun Yau, Joey Tianyi Zhou, Songfan Yang
2018 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Joey Tianyi Zhou, Heng Zhao, Xi Peng, Meng Fang, Zheng Qin, Rick Siow Mong Goh
2018 J jnl
CoRR
Xi Peng, Joey Tianyi Zhou, Hongyuan Zhu
2017 J jnl
IEEE Trans. Cybern.
Xi Peng, Jiwen Lu, Zhang Yi, Rui Yan
2017 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xi Peng, Bo Zhao, Rui Yan, Huajin Tang, Zhang Yi
2017 A* conf
AAAI
Xi Peng, Jiashi Feng, Jiwen Lu, Wei-Yun Yau, Zhang Yi
2017 J jnl
IEEE Trans. Cybern.
Xi Peng, Zhiding Yu, Zhang Yi, Huajin Tang
2017 J jnl
CoRR
Xi Peng, Jiashi Feng, Shijie Xiao, Jiwen Lu, Zhang Yi, Shuicheng Yan
2017 J jnl
Image Vis. Comput.
Jiwen Lu, Xi Peng, Weihong Deng, Ajmal S. Mian
2016 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xi Peng, Huajin Tang, Lei Zhang, Zhang Yi, Shijie Xiao
2016 A* conf
IJCAI
Xi Peng, Shijie Xiao, Jiashi Feng, Wei-Yun Yau, Zhang Yi
2016 J jnl
Neurocomputing
Xi Peng, Miaolong Yuan, Zhiding Yu, Wei-Yun Yau, Lei Zhang
2015 conf
RAM/CIS
Aditya Narayanamoorthy, Xi Peng, Huajin Tang
2015 J jnl
CoRR
Xi Peng, Canyi Lu, Zhang Yi, Huajin Tang
2015 J jnl
Knowl. Based Syst.
Xi Peng, Rui Yan, Bo Zhao, Huajin Tang, Zhang Yi
2015 A* conf
AAAI
Xi Peng, Zhang Yi, Huajin Tang
2014 J jnl
CoRR
Xi Peng, Rui Yan, Bo Zhao, Huajin Tang, Zhang Yi
2014 J jnl
Pattern Recognit.
Xi Peng, Lei Zhang, Zhang Yi, Kok Kiong Tan
2014 J jnl
CoRR
Xi Peng, Zhang Yi, Huajin Tang
2013 J jnl
CoRR
Xi Peng, Lei Zhang, Zhang Yi
2013 J jnl
Inf. Process. Lett.
Xi Peng, Zhang Yi, Xiao-Yong Wei, Dezhong Peng, Yongsheng Sang
2013 J jnl
CoRR
Xi Peng, Lei Zhang, Zhang Yi
2013 J jnl
J. Softw.
Liangli Zhen, Xi Peng, Dezhong Peng
2013 J jnl
CoRR
Liangli Zhen, Zhang Yi, Xi Peng, Dezhong Peng
2013 A* conf
CVPR
Xi Peng, Lei Zhang, Zhang Yi
2012 J jnl
CoRR
Xi Peng, Lei Zhang, Zhang Yi
2012 J jnl
CoRR
Xi Peng, Lei Zhang, Zhang Yi, Kok Kiong Tan
tests/integration/test_pe_extractors.py
← Index tests/integration/test_pe_extractors.py python
"""
Integration tests for PE-specific extractors.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


# ============================================================================
# PEFeaturesExtractor Tests
# ============================================================================

class TestPEFeaturesExtractor:
    """Tests for PEFeaturesExtractor class."""

    def test_extract_valid_pe(self, pe_binary_path, mock_logger):
        """Test extracting features from valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.models.dataclasses import PE

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result is not None
            assert isinstance(result, PE)

    def test_extract_pe_type(self, pe_binary_path, mock_logger):
        """Test PE type detection (DLL, EXE, DRIVER)."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result.type in ["DLL", "EXE", "DRIVER"]

    def test_extract_architecture(self, pe_binary_path, mock_logger):
        """Test architecture detection."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Architecture should be detected
            assert result.architecture is not None

    def test_extract_entry_point(self, pe_binary_path, mock_logger):
        """Test entry point extraction."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Entry point should be a hex string
            assert result.entry_point.startswith("0x")

    def test_extract_compilation_time(self, pe_binary_path, mock_logger):
        """Test compilation time extraction."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Compilation time should be an integer timestamp
            assert isinstance(result.compilation_time, int)
            assert result.compilation_time_utc is not None

    def test_extract_dotnet_detection(self, pe_binary_path, mock_logger):
        """Test .NET detection."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Should be True for the test .NET binary
            assert isinstance(result.is_dotnet, bool)
            assert result.is_dotnet is True  # Test file is .NET

    def test_extract_headers(self, pe_binary_path, mock_logger):
        """Test header extraction."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result.dos_header is not None
            assert result.nt_header is not None
            assert result.file_header is not None
            assert result.optional_header is not None

    def test_extract_counts(self, pe_binary_path, mock_logger):
        """Test section/import/export counts."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert isinstance(result.number_of_sections, int)
            assert isinstance(result.number_of_imports, int)
            assert isinstance(result.number_of_exports, int)
            assert isinstance(result.number_of_resources, int)

    def test_extract_rich_header(self, pe_binary_path, mock_logger):
        """Test Rich header extraction."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Rich header may or may not be present
            # If present, should be JSON string
            if result.rich_header_dump is not None:
                assert isinstance(result.rich_header_dump, str)

    def test_extract_version_info(self, pe_binary_path, mock_logger):
        """Test version info extraction."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # Version info may or may not be present
            if result.version_info is not None:
                assert isinstance(result.version_info, list)


# ============================================================================
# PEImportExtractor Tests
# ============================================================================

class TestPEImportExtractor:
    """Tests for PEImportExtractor class."""

    def test_extract_imports(self, pe_binary_path, mock_logger):
        """Test import extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.models.dataclasses import PEImport

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None:
                assert isinstance(result, PEImport)
                assert isinstance(result.pe_imports_total, int)

    def test_extract_import_libraries(self, pe_binary_path, mock_logger):
        """Test import library extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and result.pe_import_libraryName is not None:
                assert isinstance(result.pe_import_libraryName, list)

    def test_extract_import_functions(self, pe_binary_path, mock_logger):
        """Test import function extraction."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and result.pe_import_functions is not None:
                assert isinstance(result.pe_import_functions, list)

    def test_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test ClickHouse export preparation."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.prepare_export_data("ClickHouseExporter")

            if result is not None:
                data, column_names, column_type_names = result
                assert 'library_name' in column_names
                assert 'function_name' in column_names


# ============================================================================
# PESectionExtractor Tests
# ============================================================================

class TestPESectionExtractor:
    """Tests for PESectionExtractor class."""

    def test_extract_sections(self, pe_binary_path, mock_logger):
        """Test section extraction."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.models.dataclasses import PESection

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            assert result is not None
            assert isinstance(result, list)
            assert len(result) > 0
            assert isinstance(result[0], PESection)

    def test_section_properties(self, pe_binary_path, mock_logger):
        """Test section property extraction."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and len(result) > 0:
                section = result[0]
                assert section.section_name is not None
                assert section.section_entropy >= 0
                assert section.section_sha256 is not None
                assert section.section_md5 is not None
                assert section.section_size >= 0

    def test_section_entropy_range(self, pe_binary_path, mock_logger):
        """Test that section entropy is in valid range."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None:
                for section in result:
                    assert 0 <= section.section_entropy <= 8

    def test_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test ClickHouse export preparation."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.prepare_export_data("ClickHouseExporter")

            if result is not None:
                data, column_names, column_type_names = result
                assert 'section_name' in column_names
                assert 'section_entropy' in column_names
                assert 'section_sha256' in column_names


# ============================================================================
# PEResourceExtractor Tests
# ============================================================================

class TestPEResourceExtractor:
    """Tests for PEResourceExtractor class."""

    def test_extract_resources(self, pe_binary_path, mock_logger):
        """Test resource extraction."""
        from redb.extractors.pe_extractors.pe_resources import PEResourceExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEResourceExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if no resources
            if result is not None:
                assert isinstance(result, list)

    def test_resource_properties(self, pe_binary_path, mock_logger):
        """Test resource property extraction."""
        from redb.extractors.pe_extractors.pe_resources import PEResourceExtractor
        from redb.models.dataclasses import PEResource

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEResourceExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            if result is not None and len(result) > 0:
                resource = result[0]
                assert isinstance(resource, PEResource)
                assert resource.resource_type is not None


# ============================================================================
# PEOverlayExtractor Tests
# ============================================================================

class TestPEOverlayExtractor:
    """Tests for PEOverlayExtractor class."""

    def test_extract_overlay(self, pe_binary_path, mock_logger):
        """Test overlay extraction."""
        from redb.extractors.pe_extractors.pe_overlay import PEOverlayExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEOverlayExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if no overlay
            # If present, should have overlay properties
            if result is not None:
                assert hasattr(result, 'overlay_size')

    def test_has_overlay_check(self, pe_binary_path, mock_logger):
        """Test overlay detection."""
        from redb.extractors.pe_extractors.pe_overlay import PEOverlayExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEOverlayExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            has_overlay = extractor._has_overlay()
            assert isinstance(has_overlay, bool)


# ============================================================================
# PESignatureExtractor Tests
# ============================================================================

class TestPESignatureExtractor:
    """Tests for PESignatureExtractor class."""

    def test_extract_signature(self, pe_binary_path, mock_logger):
        """Test signature extraction."""
        from redb.extractors.pe_extractors.pe_signature import PESignatureExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESignatureExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May be None if not signed
            # Result type depends on implementation

    def test_is_signed_check(self, pe_binary_path, mock_logger):
        """Test signature detection."""
        from redb.extractors.pe_extractors.pe_signature import PESignatureExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESignatureExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            is_signed = extractor._is_signed()
            assert isinstance(is_signed, bool)


# ============================================================================
# PEDotNetExtractor Tests
# ============================================================================

class TestPEDotNetExtractor:
    """Tests for PEDotNetExtractor class."""

    def test_extract_dotnet(self, pe_binary_path, mock_logger):
        """Test .NET metadata extraction."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # The test file is a .NET binary
            if extractor._check_dotnet():
                assert result is not None

    def test_check_dotnet(self, pe_binary_path, mock_logger):
        """Test .NET detection."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            is_dotnet = extractor._check_dotnet()
            assert isinstance(is_dotnet, bool)
            # Test file should be .NET
            assert is_dotnet is True


# ============================================================================
# PEInconsistencyTestsExtractor Tests
# ============================================================================

class TestPEInconsistencyTestsExtractor:
    """Tests for PEInconsistencyTestsExtractor class."""

    def test_extract_inconsistency_tests(self, pe_binary_path, mock_logger):
        """Test inconsistency tests extraction."""
        from redb.extractors.pe_extractors.pe_inconsistency_tests import PEInconstistencyTestsExtractor as PEInconsistencyTestsExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEInconsistencyTestsExtractor(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # extract() returns True if tests were performed, False otherwise
            # The actual test results are stored in extractor.pe_inconsistency_tests
            # and extractor.dotnet_inconsistency_tests
            assert result in (True, False)

            if result:
                # Check that test results were stored
                assert extractor.pe_inconsistency_tests is not None or extractor.dotnet_inconsistency_tests is not None


# ============================================================================
# PEExtraFindings Tests
# ============================================================================

class TestPEExtraFindings:
    """Tests for PEExtraFindings class."""

    def test_extract_extra_findings(self, pe_binary_path, mock_logger):
        """Test extra findings extraction."""
        from redb.extractors.pe_extractors.pe_extra_findings import PEExtraFindings

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEExtraFindings(pe_binary_path, mock_logger)

            if extractor.pe is None:
                pytest.skip("PE parsing failed")

            result = extractor.extract()

            # May return None or list of findings
            if result is not None:
                assert isinstance(result, list)


# ============================================================================
# Integration Tests
# ============================================================================

class TestPEExtractorIntegration:
    """Integration tests for PE extractors."""

    def test_all_extractors_same_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test that extractors can share the same PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            # Create extractors sharing the same PE object
            features_ext = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)
            imports_ext = PEImportExtractor(pe_binary_path, mock_logger, pe=pe_object)
            sections_ext = PESectionExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # All should use the same PE object
            assert features_ext.pe is pe_object
            assert imports_ext.pe is pe_object
            assert sections_ext.pe is pe_object

            # All should extract successfully
            features_result = features_ext.extract()
            imports_result = imports_ext.extract()
            sections_result = sections_ext.extract()

            assert features_result is not None
            # imports and sections may be None if not present

    def test_hash_consistency_across_extractors(self, pe_binary_path, mock_logger):
        """Test that hashes are consistent across all extractors."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            features_ext = PEFeaturesExtractor(pe_binary_path, mock_logger)
            imports_ext = PEImportExtractor(pe_binary_path, mock_logger)

            # Hashes should be the same
            assert features_ext.sha256 == imports_ext.sha256
            assert features_ext.md5 == imports_ext.md5
            assert features_ext.sha1 == imports_ext.sha1