Wei Hong

146 papers A* 1B 2C 5Journal 117Unranked 21
YearRankTypeTitle / Venue / Authors
2026 conf
ISSCC
Qianqi Meng, Zhihua Wang, Peigen Zhou, Dawei Tang, Siyuan Tang, Junyue Xiao, Rui Zhou, Jinben Li, Zhe Chen, Jixin Chen, Hao Gao, Wei Hong
2026 conf
ISSCC
Luqi Yu, Peng Chen, Yucheng Yu, Gaojing Zhang, Xiaoyu Lu, Xiang Zhang, Jixin Chen, Xiaowei Zhu, Chao Yu, Wei Hong
2026 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jirui Li, Peigen Zhou, Peiting Li, Wenyan Lyu, Sidou Zheng, Dawei Tang, Peiyou Li, Wei Hong
2026 J jnl
IEEE J. Sel. Areas Commun.
Kai Chen, Jun Xu, Haojie Gang, Yuechao Wang, Sai Ma, Debin Hou, Zhiqiang Yu, Jianyi Zhou, Zhangcheng Hao, Jixin Chen, Wei Hong
2026 J jnl
IEEE Internet Things J.
Longan Yang, Ren Rong Zhao, Qian Wu, Guangqi Yang, Peng Chen, Chao Yu, Wei Hong
2026 J jnl
IEEE J. Sel. Areas Commun.
Wei Hong, Zhenyu Zhang, Wei Xi, Yunfeng Liu, Yingyang Li, Qiheng Huang, Qun Zhao, Juejia Zhou, Jianhua Zhang, Yong Li
2026 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Dongze Zheng, Yan Zhang, Zhi Hao Jiang, Wei Hong, Ke Wu
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Zhe Chen, Hongcheng Dong, Zhiyu Chen, Wooyeol Choi, Jixin Chen, Kenneth K. O, Wei Hong
2025 J jnl
IEEE J. Solid State Circuits
Rui Zhou, Jixin Chen, Si-Yuan Tang, Zekun Li, Dawei Tang, Bangjie Zhang, Feng Xie, Peigen Zhou, Yan Huang, Gang Xu, Zhe Chen, Wei Hong
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Long Wang, Jixin Chen, Zhe Chen, Xiaoyue Xia, Yun Hu, Sidou Zheng, Zekun Li, Rui Zhou, Peigen Zhou, Jianyi Zhou, Wei Hong
2025 J jnl
Sci. China Inf. Sci.
Si-Yuan Tang, Zekun Li, Sidou Zheng, Zheng Yan, Yuxiang Lu, Dawei Tang, Jiayang Yu, Rui Zhou, Chen-Yu Ding, Wentao Zhu, Peigen Zhou, Zhe Chen, Pinpin Yan, Jixin Chen, Wei Hong
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Chun Yang, Jixin Chen, Dawei Tang, Peigen Zhou, Zhe Chen, Wei Hong
2025 J jnl
IEEE J. Solid State Circuits
Dawei Tang, Chun Yang, Peigen Zhou, Xiaoyue Xia, Zekun Li, Rui Zhang, Zhe Chen, Jixin Chen, Hao Gao, Wei Hong
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Lingzheng Kong, Jixin Chen, Peigen Zhou, Zhihua Wang, Chang Shu, Dawei Tang, Rui Zhou, Jirui Li, Qianqi Meng, Pinpin Yan, Wei Hong
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zuojun Wang, Zekun Li, Jixin Chen, Yongxin Guo, Wei Hong
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yuan Mao, Yan Huang, Xutao Yu, Xuezhi Chen, Zaichen Zhang, Zhanye Chen, Wei Hong
2025 J jnl
IEEE Trans. Intell. Transp. Syst.
Kun Deng, Yan Huang, Zhanye Chen, Yu Han, Cai Wen, Hui Zhang, Pan Liu, Wei Hong
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Xuezhi Chen, Yan Huang, Xutao Yu, Yuan Mao, Zaichen Zhang, Zhanye Chen, Wei Hong
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xinyu Guan, Yan Huang, Junli Chen, Yuan Mao, Xuezhi Chen, Zhanye Chen, Jixin Chen, Wei Hong
2025 J jnl
IEEE Trans. Instrum. Meas.
Yuming Liu, Yan Huang, Hui Zhang, Jiang Liu, Cai Wen, Yating Chen, Zhanye Chen, Wei Hong
2025 J jnl
CoRR
Chengchang Tian, Jianwei Ma, Yan Huang, Zhanye Chen, Honghao Wei, Hui Zhang, Wei Hong
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Peishuang Ni, Gang Xu, Hao Pei, Yiguo Qiao, Hanwen Yu, Wei Hong
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Honghao Zhou, Gang Xu, Xiang-Gen Xia, Tao Li, Hanwen Yu, Yanyang Liu, Xiang Zhang, Mengdao Xing, Wei Hong
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zongxiang Wang, Jixin Chen, Debin Hou, Peigen Zhou, Zhe Chen, Long Wang, Xiaojie Xu, Wei Hong
2025 A* conf
AAAI
Zijian Gu, Jianwei Ma, Yan Huang, Honghao Wei, Zhanye Chen, Hui Zhang, Wei Hong
2025 conf
ICC
Yating Chen, Cai Wen, Yan Huang, Wei Hong, Timothy N. Davidson
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Gang Xu, Biqin Tan, Chengye Wu, Bangjie Zhang, Hanwen Yu, Mengdao Xing, Wei Hong
2025 J jnl
IEEE Internet Things J.
Wei Hong, Ji Yan, Chenxi Liu, Yong Li, Zhongyuan Zhao
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Bangjie Zhang, Gang Xu, Xiang-Gen Xia, Jianlai Chen, Rui Zhou, Shuai Shao, Wei Hong
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xuezhi Chen, Yan Huang, Xutao Yu, Yuan Mao, Haowen Jiang, Zaichen Zhang, Zhanye Chen, Wei Hong
2024 conf
ISSCC
Dawei Tang, Xiaoyue Xia, Zheng Yan, Peigen Zhou, Zekun Li, Chun Yang, Rui Zhang, Zhe Chen, Jixin Chen, Hao Gao, Wei Hong
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Mengjie Jiang, Gang Xu, Hao Pei, Zeyun Feng, Shuai Ma, Hui Zhang, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zongxiang Wang, Jixin Chen, Debin Hou, Peigen Zhou, Zhe Chen, Long Wang, Xiaojie Xu, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Sidou Zheng, Xiaoyue Xia, Rong Lu, Si-Yuan Tang, Zekun Li, Rui Zhou, Peigen Zhou, Debin Hou, Jixin Chen, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Sai Ma, Jun Xu, Yuanwei Zhu, Kai Chen, Qingqing Lin, Wei Li, Wei Hong
2024 J jnl
IEEE J. Solid State Circuits
Rui Zhang, Dawei Tang, Zhe Chen, Liqun Lu, Si-Yuan Tang, Peigen Zhou, Jixin Chen, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Ke Zhang, Feng Shuo Wan, Xuan Feng Tong, Yan Zhang, Zhi Hao Jiang, Wei Hong
2024 J jnl
Remote. Sens.
Kun Deng, Yan Huang, Zhanye Chen, Dongning Fu, Weidong Li, Xinran Tian, Wei Hong
2024 J jnl
IEEE Trans. Veh. Technol.
Yanjun Zhang, Yan Huang, Jun Tao, Shiyang Tang, Hing Cheung So, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yunli Li, Penghui Jian, Dingwei Xi, Fan Wu, Zhi Hao Jiang, Wei Hong
2024 J jnl
Frontiers Inf. Technol. Electron. Eng.
Xuan Feng Tong, Zhi Hao Jiang, Yuan Li, Fan Wu, Lin Peng, Taiwei Yue, Wei Hong
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Peng Chen, Ruijia Liu, Luqi Yu, Zi-Ming Zhao, Xiao-Wei Zhu, Debin Hou, Jixin Chen, Chao Yu, Wei Hong
2024 C conf
IGARSS
Bangjie Zhang, Gang Xu, Fangzheng Xu, Lizhong Jiang, Wei Hong
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
JiaLe Chen, Yan Huang, Xinyu Guan, Kun Deng, Cai Wen, Zhanye Chen, Tong Gu, Wei Hong
2024 J jnl
IEEE Trans. Wirel. Commun.
Zhongyuan Zhao, Jingyi Wang, Wei Hong, Tony Q. S. Quek, Zhiguo Ding, Mugen Peng
2024 J jnl
CoRR
Zijian Gu, Jianwei Ma, Yan Huang, Honghao Wei, Zhanye Chen, Hui Zhang, Wei Hong
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Yunxuan Wang, Yan Huang, Jiang Liu, Ruizhe Zhang, Hui Zhang, Wei Hong
2024 J jnl
Sci. China Inf. Sci.
Yan Huang, Yunxuan Wang, Xiao Zhou, Hui Zhang, Yuan Mao, Guisheng Liao, Wei Hong
2024 J jnl
Pattern Recognit.
Jianwei Ma, Yan Huang, Cheng Qian, Jian Kang, Jiang Liu, Hui Zhang, Wei Hong
2024 J jnl
IEEE Internet Things J.
Yuechao Wang, Jun Xu, Lei Xiang, Kai Chen, Wei Hong
2024 J jnl
IEEE Internet Things J.
Xiaoyue Xia, Chao Yu, Fan Wu, Zhihao Jiang, Sidou Zheng, Si-Yuan Tang, Yu Yao, Wei Hong
2024 J jnl
IEEE Internet Things J.
Xiaoyue Xia, Fan Wu, Chao Yu, Zhihao Jiang, Jun Xu, Si-Yuan Tang, Zuojun Wang, Yu Yao, Wei Hong
2024 J jnl
IEEE Trans. Signal Process.
Zhongyuan Zhao, Kailei Xu, Wei Hong, Mugen Peng, Zhiguo Ding, Tony Q. S. Quek, Howard H. Yang
2024 conf
ICC
Wentao Cheng, Zhongyuan Zhao, Howard H. Yang, Wei Hong, Tony Q. S. Quek, Zhiguo Ding
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yuan Mao, Yan Huang, Xutao Yu, Yunxuan Wang, Mingliang Tao, Zaichen Zhang, Yang Yang, Wei Hong
2024 C conf
IGARSS
Peishuang Ni, Gang Xu, Zhaoyu Zhong, Jixin Chen, Wei Hong
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Yanjun Zhang, Yan Huang, Jun Tao, Cai Wen, Yu Han, Guisheng Liao, Wei Hong
2024 J jnl
IEEE Trans. Veh. Technol.
Kai Chen, Jun Xu, Qingqing Lin, Yuanwei Zhu, Wei Hong
2023 conf
A-SSCC
Dawei Tang, Zekun Li, Leyang Huang, Rui Zhang, Liqun Lu, Chun Yang, Zheng Yan, Peigen Zhou, Zhe Chen, Jixin Chen, Wei Hong
2023 J jnl
IEEE J. Solid State Circuits
Jiayang Yu, Jixin Chen, Peigen Zhou, Huanbo Li, Zuojun Wang, Zekun Li, Zhe Chen, Pinpin Yan, Debin Hou, Hao Gao, Wei Hong
2023 J jnl
IEEE J. Solid State Circuits
Zekun Li, Jixin Chen, Huanbo Li, Jiayang Yu, Yuxiang Lu, Rui Zhou, Zhe Chen, Wei Hong
2023 J jnl
Int. J. Circuit Theory Appl.
Zi-Ming Zhao, Xiao-Wei Zhu, Jing Xia, Rui-Jia Liu, Qin Dong, Peng Chen, Lei Zhang, Xin Jiang, Chao Yu, Wei Hong
2023 conf
A-SSCC
Rui Zhang, Dawei Tang, Zhe Chen, Liqun Lu, Peigen Zhou, Jixin Chen, Wei Hong
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Liyu Zhu, Shilin Yang, Tianyang Cao, Yaoming Huang, Tianxiang Ji, Jing Wang, Jun Xu, Zhiqiang Yu, Jianyi Zhou, Wei Hong
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Zi-Ming Zhao, Xiao-Wei Zhu, Jing Xia, Ruijia Liu, Peng Chen, Lei Zhang, Chao Yu, Wei Hong
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yan Huang, Yanyang Liu, Xinyu Guan, Jie Li, Yang Yang, Wei Hong
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yuan Mao, Yan Huang, Xutao Yu, Yu Xin, Yunxuan Wang, Wei Hong
2023 conf
CICC
Dawei Tang, Zekun Li, Jixin Chen, Peigen Zhou, Zhe Chen, Debin Hou, Wei Hong
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Bangjie Zhang, Gang Xu, Hanwen Yu, Hui Wang, Hao Pei, Wei Hong
2023 J jnl
IEEE J. Sel. Top. Signal Process.
Bangjie Zhang, Gang Xu, Rui Zhou, Hui Zhang, Wei Hong
2023 J jnl
Sci. China Inf. Sci.
Yan Huang, Yanjun Zhang, Jun Tao, Cai Wen, Guisheng Liao, Wei Hong
2023 J jnl
IEEE Trans. Netw. Sci. Eng.
Zhenyu Zhang, Hua Li, Yuanyuan Dong, Xiyuan Wang, Jianuo Cui, Wei Hong, Xiaoming Dai
2023 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Hao Pei, Mingjie Su, Gang Xu, Mengdao Xing, Wei Hong
2023 C conf
ICCC
Yuzhu Wang, Kun Guo, Wei Hong, Qin Mu, Zhongyuan Zhao
2022 conf
CICC
Zekun Li, Jixin Chen, Jiayang Yu, Huanbo Li, Zichun Zheng, Rui Zhou, Peigen Zhou, Zhe Chen, Wei Hong
2022 J jnl
Sci. China Inf. Sci.
Huanbo Li, Jixin Chen, Peigen Zhou, Debin Hou, Wei Hong
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Shilin Yang, Jun Xu, Zhiqiang Yu, Jianyi Zhou, Wei Hong
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Long Wang, Jixin Chen, Debin Hou, Huanbo Li, Zekun Li, Yu Xiang, Xiaojie Xu, Wei Hong
2022 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Peigen Zhou, Jixin Chen, Pinpin Yan, Jiayang Yu, Debin Hou, Hao Gao, Wei Hong
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yan Huang, Zhanye Chen, Cai Wen, Jie Li, Xiang-Gen Xia, Wei Hong
2022 B conf
GLOBECOM
Kexin Xiong, Yao Wei, Wei Hong, Zhongyuan Zhao
2022 conf
GLOBECOM (Workshops)
Jingyi Wang, Zhongyuan Zhao, Wei Hong, Tony Q. S. Quek, Zhiguo Ding
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Yan Huang, Feiyang Liu, Zhanye Chen, Jie Li, Wei Hong
2022 J jnl
Remote. Sens.
Yan Huang, Xiao Zhou, Bobo Xi, Jiaojiao Li, Jian Kang, Shiyang Tang, Zhanye Chen, Wei Hong
2022 J jnl
IEEE Wirel. Commun. Lett.
Jiacheng Lu, Jun Zhang, Shu Cai, Bin Li, Xiao-Wei Zhu, Wei Hong
2022 J jnl
Sci. China Inf. Sci.
Chengxiang Wang, Debin Hou, Sidou Zheng, Jixin Chen, Nianzu Zhang, Zhengbo Jiang, Wei Hong
2022 J jnl
IEEE Trans. Wirel. Commun.
Zhongyuan Zhao, Chenyuan Feng, Wei Hong, Jiamo Jiang, Chao Jia, Tony Q. S. Quek, Mugen Peng
2022 conf
ICC Workshops
Kexin Xiong, Zhongyuan Zhao, Wei Hong, Mugen Peng, Tony Q. S. Quek
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yan Huang, Cai Wen, Zhanye Chen, Junli Chen, Yanyang Liu, Jie Li, Wei Hong
2022 J jnl
IEICE Trans. Commun.
Rong Lu, Chao Yu, Wei Hong
2022 J jnl
IEEE Wirel. Commun. Lett.
Zhongyuan Zhao, Yifan Cai, Wei Hong, Jiamo Jiang, Mugen Peng, Tony Q. S. Quek
2022 conf
ICC
Kailei Xu, Howard H. Yang, Zhongyuan Zhao, Wei Hong, Tony Q. S. Quek, Mugen Peng
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Gang Xu, Bangjie Zhang, Jianlai Chen, Fan Wu, Jialian Sheng, Wei Hong
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Gang Xu, Bangjie Zhang, Junli Chen, Wei Hong
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Hui Zhang, Yan Huang, Jie Li, Zhanye Chen, Longzhu Cai, Wei Hong
2022 J jnl
IEEE J. Solid State Circuits
Huanbo Li, Jixin Chen, Debin Hou, Zekun Li, Rui Zhou, Zhe Chen, Pinpin Yan, Wei Hong
2021 J jnl
IEEE J. Solid State Circuits
Peigen Zhou, Jixin Chen, Pinpin Yan, Jiayang Yu, Jiarui Hu, Haoyi Dong, Long Wang, Debin Hou, Hao Gao, Wei Hong
2021 conf
CICC
Huanbo Li, Jixin Chen, Debin Hou, Zekun Li, Rui Zhou, Wei Hong
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Huanbo Li, Jixin Chen, Debin Hou, Zekun Li, Zuojun Wang, Wei Hong
2021 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yan Huang, Lei Zhang, Xi Yang, Zhanye Chen, Jun Liu, Jie Li, Wei Hong
2021 J jnl
IEEE Geosci. Remote. Sens. Lett.
Yan Huang, Feiyang Liu, Zhanye Chen, Jie Li, Wei Hong
2021 conf
ICC
Mingrui Cao, Bin Cao, Wei Hong, Zhongyuan Zhao, Xiang Bai, Lei Zhang
2021 J jnl
IEEE Wirel. Commun. Lett.
Cheng Yi, Peize Zhang, Haiming Wang, Wei Hong
2021 conf
EuCNC/6G Summit
Wei Hong, Xiaoyu Duan, Huihui Gao, Zhongyuan Zhao
2021 conf
ICC Workshops
Wei Hong, Xueting Luo, Zhongyuan Zhao, Mugen Peng, Tony Q. S. Quek
2021 J jnl
Frontiers Inf. Technol. Electron. Eng.
Peize Zhang, Haiming Wang, Wei Hong
2021 J jnl
Sci. China Inf. Sci.
Xiaohu You, Cheng-Xiang Wang, Jie Huang, Xiqi Gao, Zaichen Zhang, Mao Wang, Yongming Huang, Chuan Zhang, Yanxiang Jiang, Jiaheng Wang, Min Zhu, Bin Sheng, Dongming Wang, Zhiwen Pan, Pengcheng Zhu, Yang Yang, Zening Liu, Ping Zhang, Xiaofeng Tao, Shaoqian Li, Zhi Chen, Xinying Ma, Chih-Lin I, Shuangfeng Han, Ke Li, Chengkang Pan, Zhiming Zheng, Lajos Hanzo, Xuemin (Sherman) Shen, Yingjie Jay Guo, Zhiguo Ding, Harald Haas, Wen Tong, Peiying Zhu, Ganghua Yang, Jue Wang, Erik G. Larsson, Hien Quoc Ngo, Wei Hong, Haiming Wang, Debin Hou, Jixin Chen, Zhe Chen, Zhangcheng Hao, Geoffrey Ye Li, Rahim Tafazolli, Yue Gao, H. Vincent Poor, Gerhard P. Fettweis, Ying-Chang Liang
2020 J jnl
Sci. China Inf. Sci.
Peigen Zhou, Jixin Chen, Pinpin Yan, Zhigang Peng, Debin Hou, Zhe Chen, Wei Hong
2020 J jnl
IEEE Access
Weidong Li, Jun-Xia Miao, Wei Hong
2020 J jnl
IEEE Access
Le Kuai, Jixin Chen, Zhi Hao Jiang, Chao Yu, Chong Guo, Yingrui Yu, Houxing Zhou, Wei Hong
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Huanbo Li, Jixin Chen, Debin Hou, Wei Hong
2020 J jnl
IEEE Access
Fan Wu, Jingxue Wang, Kwai-Man Luk, Wei Hong
2020 J jnl
IEEE Access
Longzhu Cai, Zhi Hao Jiang, Wei Hong
2020 J jnl
IEEE Access
Lei Xiang, Yan Zhang, Yingrui Yu, Wei Hong
2020 conf
ACCC
Chong Guo, Wei Hong, Hanxuan Lin, Biao Wu
2020 J jnl
IEEE Access
Longzhu Cai, Zhi Hao Jiang, Yan Huang, Wei Hong
2019 conf
CICC
Peigen Zhou, Jixin Chen, Pinpin Yan, Zhe Chen, Debin Hou, Wei Hong
2019 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yan Huang, Lei Zhang, Jie Li, Wei Hong, Arye Nehorai
2019 J jnl
Sci. China Inf. Sci.
Peigen Zhou, Pinpin Yan, Jixin Chen, Debin Hou, Wei Hong
2019 J jnl
IEEE Access
Xiang Wang, Xiao-Wei Zhu, Ling Tian, Pengfei Liu, Wei Hong, Anding Zhu
2019 J jnl
IEEE Wirel. Commun. Lett.
Bensheng Yang, Peize Zhang, Haiming Wang, Wei Hong
2018 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jinbo Li, Zhiwei Xu, Wei Hong, Qun Jane Gu
2018 J jnl
Sci. China Inf. Sci.
Debin Hou, Wei Hong, Jixin Chen, Zhe Song
2018 J jnl
IEICE Trans. Commun.
Wei Hong, Shiwen He, Haiming Wang, Guangqi Yang, Yongming Huang, Jixing Chen, Jianyi Zhou, Xiaowei Zhu, Nianzhu Zhang, Jianfeng Zhai, Luxi Yang, Zhihao Jiang, Chao Yu
2018 J jnl
IEEE Trans. Geosci. Remote. Sens.
Gang Xu, Xiang-Gen Xia, Wei Hong
2017 J jnl
CoRR
Shiwen He, Jiaheng Wang, Yongming Huang, Björn E. Ottersten, Wei Hong
2017 J jnl
IEEE Trans. Signal Process.
Shiwen He, Jiaheng Wang, Yongming Huang, Björn E. Ottersten, Wei Hong
2017 C conf
IGARSS
Gang Xu, Wei Hong, Yingrui Yu
2016 J jnl
IEEE Signal Process. Lett.
Shiwen He, Yongming Huang, Jiaheng Wang, Luxi Yang, Wei Hong
2015 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Haiming Wang, Rui Xu, Mingkai Tang, Wei Hong
2015 J jnl
IEEE Trans. Commun.
Shiwen He, Yongming Huang, Luxi Yang, Björn E. Ottersten, Wei Hong
2014 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Fang Zhu, Wei Hong, Jixin Chen, Xin Jiang, Ke Wu, Pinpin Yan, Chun-Lin Han
2012 C conf
APCC
Rui Xu, Haiming Wang, Mingkai Tang, Wei Hong
2012 J jnl
IEICE Trans. Electron.
Jixin Chen, Wei Hong, Hongjun Tang, Pinpin Yan, Li Zhang, Guangqi Yang, Debin Hou, Ke Wu
2012 J jnl
Proc. IEEE
Ke Wu, Yujian Cheng, Tarek Djerafi, Wei Hong
2011 J jnl
IEICE Trans. Commun.
Haiming Wang, Xiqi Gao, Bin Jiang, Xiaohu You, Wei Hong
2010 J jnl
Sci. China Inf. Sci.
Zhe Song, Houxing Zhou, Jun Hu, Weidong Li, Wei Hong
2009 J jnl
Sci. China Ser. F Inf. Sci.
Zhe Song, Houxing Zhou, Jun Hu, Wei Hong
2009 J jnl
Sci. China Ser. F Inf. Sci.
Yujian Cheng, Wei Hong, Ke Wu
2009 J jnl
IEICE Trans. Electron.
Wei Hong, Ke Wu, Hongjun Tang, Jixin Chen, Peng Chen, Yujian Cheng, Junfeng Xu
2008 conf
ICC
Yong Li, Wenbo Wang, Jia Kong, Wei Hong, Xing Zhang, Mugen Peng
2008 conf
VTC Fall
Wei Hong, Chunjing Hu, Wenbo Wang, Jing Han
2007 J jnl
IET Commun.
Haiming Wang, Xiqi Gao, Bin Jiang, Xiaohu You, Wei Hong
2006 J jnl
Sci. China Ser. F Inf. Sci.
Weidong Li, Wei Hong, Zhangcheng Hao, Houxing Zhou
2006 conf
ICC
Yanxiang Jiang, Xiqi Gao, Xiaohu You, Wei Hong
2003 B conf
AINA
Hongxin Zhao, Hua Zhang, Wei Hong
redb/extractors/pe_extractors/pe_dotnet.py
← Index redb/extractors/pe_extractors/pe_dotnet.py python
import inspect
import pefile
from dotnetfile import DotNetPE

import base64
from hashlib import md5
from pprint import pprint

import magic
import pefile

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEDotNet
from datetime import datetime, timezone
import json
from typing import Any


class PEDotNetExtractor(PEExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        # self.pe_features = None
        self.elastic_index = self.index_prefix + "-pe_dotnet"
        self.dotnet, self.error = self._generate_dotnetfile_object()
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _decode_assembly_flags(self, flag_value):
        self.log.debug(inspect.currentframe().f_code.co_name)
        ASSEMBLY_FLAGS = {
            0x00000001: "COMIMAGE_FLAGS_ILONLY",
            0x00000002: "COMIMAGE_FLAGS_32BITREQUIRED",
            0x00000004: "COMIMAGE_FLAGS_IL_LIBRARY",
            0x00000008: "COMIMAGE_FLAGS_STRONGNAMESIGNED",
            0x00000010: "COMIMAGE_FLAGS_NATIVE_ENTRYPOINT",
            0x00010000: "COMIMAGE_FLAGS_TRACKDEBUGDATA",
            0x00020000: "COMIMAGE_FLAGS_32BITPREFERRED",
        }
        flags = []
        for bit, name in ASSEMBLY_FLAGS.items():
            if flag_value & bit:
                flags.append(name)
        return flags

    def _normalize_data(self, data):
        self.log.debug(inspect.currentframe().f_code.co_name)
        if isinstance(data, str):
            return {"value": data}
        return data

    def _compute_md5(self, data):
        self.log.debug(inspect.currentframe().f_code.co_name)
        if isinstance(data, str):
            # If it's a string, encode it to first
            return md5(data.encode("raw_unicode_escape")).hexdigest()
        elif not isinstance(data, bytes):
            # If it's neither string nor bytes, convert it to string and then to bytes
            return md5(str(data).encode("raw_unicode_escape")).hexdigest()
        else:
            return md5(data).hexdigest()

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

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        metadata = {}

        if self.error:
            metadata["Corrupted"] = self.error.args[0]
            dotnet = PEDotNet(metadata)
            self.dotnet = dotnet  # Store for later use in prepare_export_data
            return dotnet  # Return the extracted data instead of exporting directly

        metadata["info"] = {}
        try:
            available_tables = self.dotnet.existent_metadata_tables()
        except Exception as e:
            self.log.error(f"Error getting metadata tables for {self.hash.sha256}: {e}")
            available_tables = []
            metadata["info"]["PotentiallyCorrupted"] = True

        # GUID extraction
        try:
            input_string = self.dotnet.guid_stream_guids[0].string_representation
            
            formatted_uuid = (
                f"{input_string[6:8]}{input_string[4:6]}{input_string[2:4]}{input_string[0:2]}"
                f"-{input_string[10:12]}{input_string[8:10]}"
                f"-{input_string[14:16]}{input_string[12:14]}"
                f"-{input_string[16:20]}"
                f"-{input_string[20:]}"
            )
            metadata["info"]["ModuleVersionID"] = formatted_uuid
        except Exception as e:
            self.log.error(f"Error extracting GUID for {self.hash.sha256}: {e}")

        # CLR Version
        try:
            metadata["info"]["CLRversion"] = self.dotnet.get_runtime_target_version()
        except Exception as e:
            self.log.error(f"Error getting CLR version for {self.hash.sha256}: {e}")

        # Module information
        try:
            if self.dotnet.metadata_table_exists("Module"):
                metadata["info"]["AssemblyModuleName"] = self.dotnet.Module.get_module_name()
        except Exception as e:
            self.log.error(f"Error getting module info for {self.hash.sha256}: {e}")

        # Basic properties
        try:
            metadata["info"].update({
                "IsNativeNgenImage": self.dotnet.is_native_image(),
                "IsMixedAssembly": self.dotnet.is_mixed_assembly(),
                "IsWindowsFormsApp": self.dotnet.is_windows_forms_app(),
                "EntryPointToken": self.dotnet.clr_header.EntryPointToken.value,
                "HasNativeEntryPoint": self.dotnet.has_native_entry_point(),
            })
        except Exception as e:
            self.log.error(f"Error getting basic properties for {self.hash.sha256}: {e}")

        # Assembly flags
        try:
            metadata["info"]["AssemblyFlags"] = self._decode_assembly_flags(
                self.dotnet.clr_header.Flags.value
            )
        except Exception as e:
            self.log.error(f"Error getting assembly flags for {self.hash.sha256}: {e}")

        # More Metadata/Info CLR Header
        try:
            metadata["info"]["NumOfStreams"] = self.dotnet.get_number_of_streams()
            # [TODO] The following two on VT are "RVA entry point"
            #  and "Resources va" respectively. To verify.
            metadata["info"][
                "ResourcesDirectoryAddress"
            ] = self.dotnet.clr_header.ResourcesDirectoryAddress.value
            metadata["info"][
                "ResourcesDirectorySize"
            ] = self.dotnet.clr_header.ResourcesDirectorySize.value
            metadata["info"][
                "StrongNameSignatureAddress"
            ] = self.dotnet.clr_header.StrongNameSignatureAddress.value
            metadata["info"][
                "StrongNameSignatureSize"
            ] = self.dotnet.clr_header.StrongNameSignatureSize.value
            metadata["info"][
                "CodeManagerTableAddress"
            ] = self.dotnet.clr_header.CodeManagerTableAddress.value
            metadata["info"][
                "CodeManagerTableSize"
            ] = self.dotnet.clr_header.CodeManagerTableSize.value
            metadata["info"][
                "VTableFixupsAddress"
            ] = self.dotnet.clr_header.VTableFixupsAddress.value
            metadata["info"][
                "VTableFixupsSize"
            ] = self.dotnet.clr_header.VTableFixupsSize.value
            metadata["info"][
                "ExportAddressTableJumpsAddress"
            ] = self.dotnet.clr_header.ExportAddressTableJumpsAddress.value
            metadata["info"][
                "ExportAddressTableJumpsSize"
            ] = self.dotnet.clr_header.ExportAddressTableJumpsSize.value
            metadata["info"][
                "ManagedNativeHeaderAddress"
            ] = self.dotnet.clr_header.ManagedNativeHeaderAddress.value
            metadata["info"][
                "ManagedNativeHeaderSize"
            ] = self.dotnet.clr_header.ManagedNativeHeaderSize.value
        except Exception as e:
            self.log.error(f"Error getting more metadata/info clr header for {self.hash.sha256}: {e}")

        # Streams section
        try:
            metadata["Streams"] = {}
            stream_names = self.dotnet.get_stream_names()
            for name in stream_names:
                indx = stream_names.index(name)
                stream_header = self.dotnet.dotnet_stream_headers[indx]
                stream_address = self.dotnet.dotnet_streams[indx].address
                metadata["Streams"][name] = {}
                metadata["Streams"][name]["raw_name"] = base64.b64encode(
                    stream_header.Name.value
                ).decode()
                # metadata["Streams"][name]["raw_name"] = name
                metadata["Streams"][name]["size"] = stream_header.Size.value
                # Retrieve the stream data directly using the given address and size
                stream_data = self.pe.get_data(stream_address, stream_header.Size.value)
                metadata["Streams"][name]["entropy"] = (
                    "%.2f" % pefile.SectionStructure.entropy_H(self.pe, stream_data)
                )
                metadata["Streams"][name]["md5"] = md5(stream_data).hexdigest()
        except Exception as e:
            self.log.error(f"Error getting streams for {self.hash.sha256}: {e}")

        # ManifestResource
        try:
            metadata["ManifestResource"] = ()
            if "ManifestResource" in available_tables:
                metadata["info"]["HasManifestResource"] = True
                metadata["ManifestResource"] = (
                    self.dotnet.ManifestResource.get_resource_names()
                )
        except Exception as e:
            self.log.error(f"Error getting manifest resource for {self.hash.sha256}: {e}")

        # ExternalAssemblyRef
        try:
            metadata["ExternalAssemblyRef"] = {}
            if "AssemblyRef" in available_tables:
                metadata["ExternalAssemblyRef"][
                    "names"
                ] = self.dotnet.AssemblyRef.get_assemblyref_names()
                metadata["ExternalAssemblyRef"][
                    "cultures"
                ] = self.dotnet.AssemblyRef.get_assemblyref_cultures()
        except Exception as e:
            self.log.error(f"Error getting external assembly ref for {self.hash.sha256}: {e}")

        # AssemblyData
        try:
            metadata["AssemblyData"] = {}
            if "Assembly" in available_tables:
                metadata["AssemblyData"][
                    "name"
                ] = self.dotnet.Assembly.get_assembly_name()
                # It's officially a one-row table, but there are ITW files with more than one row.
                # It stores information about the current assembly. It is documented in ECMA-335.
                assembly_table = self.dotnet.metadata_tables_lookup[
                    "Assembly"
                ].table_rows[0]
                metadata["AssemblyData"][
                    "MajorVersion"
                ] = assembly_table.MajorVersion.value
                metadata["AssemblyData"][
                    "MinorVersion"
                ] = assembly_table.MinorVersion.value
                metadata["AssemblyData"]["hashalgid"] = assembly_table.HashAlgId.value
                metadata["AssemblyData"][
                    "BuildNumber"
                ] = assembly_table.BuildNumber.value
                metadata["AssemblyData"][
                    "RevisionNumber"
                ] = assembly_table.RevisionNumber.value
                metadata["AssemblyData"][
                    "culture"
                ] = self.dotnet.Assembly.get_assembly_culture()
        except Exception as e:
            self.log.error(f"Error getting assembly data for {self.hash.sha256}: {e}")

        # TypeDef handling
        try:
            metadata["TypeDef"] = {}
            if "TypeDef" in available_tables:
                metadata["info"]["HasTypeDef"] = True
                # Get basic type definitions
                try:
                    # Get all types (ANY visibility)
                    type_defs = self.dotnet.TypeDef.get_type_names()
                    metadata["TypeDef"]["names"] = type_defs if type_defs else []
                    
                    # Get detailed type information with methods
                    types_with_methods = self.dotnet.TypeDef.get_type_names_with_methods()
                    if types_with_methods:
                        metadata["TypeDef"]["detailed"] = []
                        for type_info in types_with_methods:
                            type_data = {
                                "type": type_info.Type,
                                "namespace": type_info.Namespace,
                                "flags": type_info.Flags,
                                "methods": []
                            }
                            for method in type_info.Methods:
                                method_data = {
                                    "name": method.Name,
                                    "flags": method.Flags
                                }
                                if method.Signature:
                                    method_data["signature"] = {
                                        "parameters": method.Signature.get("parameter", []),
                                        "return_type": method.Signature.get("return", ""),
                                        "has_this": method.Signature.get("hasthis", False)
                                    }
                                type_data["methods"].append(method_data)
                            metadata["TypeDef"]["detailed"].append(type_data)
                except AttributeError as e:
                    self.log.warning(f"TypeDef table exists but attributes missing for {self.hash.sha256}: {e}")
                    # metadata["info"]["TypeDefParsingError"] = f"Missing attributes: {str(e)}"
                except Exception as e:
                    self.log.error(f"Error parsing TypeDef table for {self.hash.sha256}: {e}")
                    # metadata["info"]["TypeDefParsingError"] = str(e)
        except Exception as e:
            self.log.error(f"Error handling TypeDef section for {self.hash.sha256}: {e}")
            metadata["TypeDef"] = {"names": [], "detailed": []}
            # metadata["info"]["TypeDefParsingError"] = str(e)

        # ExternalUnmanagedModules
        try:
            metadata["ExternalUnmanagedModules"] = ()
            if "ModuleRef" in available_tables:
                metadata["info"]["HasModuleRef"] = True
                metadata["ExternalUnmanagedModules"] = (
                    self.dotnet.ModuleRef.get_unmanaged_module_names(
                        self.dotnet.Type.UnmanagedModules.RAW
                    )
                )
        except Exception as e:
            self.log.error(f"Error getting external unmanaged modules for {self.hash.sha256}: {e}")

        # ExternalUnmanagedMethods
        try:
            metadata["ExternalUnmanagedMethods"] = ()
            if "ImplMap" in available_tables:
                metadata["info"]["HasImplMap"] = True
                metadata["ExternalUnmanagedMethods"] = (
                    self.dotnet.ImplMap.get_unmanaged_functions()
                )
        except Exception as e:
            self.log.error(f"Error getting external unmanaged methods for {self.hash.sha256}: {e}")

        # Event
        try:
            metadata["Event"] = ()
            if "Event" in available_tables:
                metadata["info"]["HasEvent"] = True
                metadata["Event"] = self.dotnet.Event.get_event_names()
        except Exception as e:
            self.log.error(f"Error getting event for {self.hash.sha256}: {e}")

        # Resources
        try:
            metadata["Resources"] = []
            if self.dotnet.has_resources():
                tmp_resources_list = []
                resource_data = self.dotnet.get_resources()
                for data in resource_data:
                    tmp_dict = {}
                    for resource_item in data.items():
                        if resource_item[0] == "SubResources":
                            if resource_item[1]:
                                tmp_dict["SubResources"] = {}
                                for sub_resource in resource_item[1]:
                                    for sub_resource_item in sub_resource.items():
                                        if sub_resource_item[0] == "Data":
                                            # Check if data is a sequence type that supports len()
                                            if hasattr(sub_resource_item[1], '__len__') and len(sub_resource_item[1]) > 100:
                                                tmp_dict["SubResources"]["Data"] = {}
                                                try:
                                                    # tmp_dict["SubResources"]["Data"][
                                                    #     "md5"
                                                    # ] = md5(
                                                    #     sub_resource_item[1].encode()
                                                    # ).hexdigest()
                                                    tmp_dict["SubResources"]["Data"][
                                                        "md5"
                                                    ] = self._compute_md5(
                                                        sub_resource_item[1]
                                                    )
                                                except Exception as e:
                                                    self.log.error(
                                                        f"Error in dotnet resources"
                                                        f" extraction {self.hash.sha256}: {e}"
                                                    )
                                                guess = magic.from_buffer(
                                                    sub_resource_item[1], mime=True
                                                )
                                                tmp_dict["SubResources"]["Data"][
                                                    "MimeType"
                                                ] = (guess if guess else None)
                                            else:
                                                normalized_data = self._normalize_data(
                                                    sub_resource_item[1].decode()
                                                    if isinstance(
                                                        sub_resource_item[1], bytes
                                                    )
                                                    else sub_resource_item[1]
                                                )
                                                tmp_dict["SubResources"][
                                                    sub_resource_item[0]
                                                ] = normalized_data
                                        else:
                                            tmp_dict["SubResources"][
                                                sub_resource_item[0]
                                            ] = (
                                                sub_resource_item[1].decode()
                                                if isinstance(
                                                    sub_resource_item[1], bytes
                                                )
                                                else sub_resource_item[1]
                                            )
                        elif resource_item[0] == "Data":
                            # Check if data is a sequence type that supports len()
                            if hasattr(resource_item[1], '__len__') and len(resource_item[1]) > 100:
                                tmp_dict["Data"] = {}
                                tmp_dict["Data"]["md5"] = self._compute_md5(
                                    resource_item[1]
                                )
                                guess = magic.from_buffer(resource_item[1], mime=True)
                                tmp_dict["Data"]["MimeType"] = guess if guess else None
                            else:
                                normalized_data = self._normalize_data(
                                    resource_item[1].decode()
                                    if isinstance(resource_item[1], bytes)
                                    else resource_item[1]
                                )
                                tmp_dict["Data"] = normalized_data
                        else:
                            tmp_dict[resource_item[0]] = (
                                resource_item[1].decode()
                                if isinstance(resource_item[1], bytes)
                                else resource_item[1]
                            )
                    tmp_resources_list.append(tmp_dict)
                metadata["Resources"] = tmp_resources_list
        except Exception as e:
            self.log.error(f"Error getting resources for {self.hash.sha256}: {e}")
            metadata["Resources"] = []  # Ensure we always have a valid list even on error

        dotnet = PEDotNet(metadata)
        self.dotnet = dotnet  # Store for later use in prepare_export_data
        return dotnet  # Return the extracted data instead of exporting directly


    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.dotnet
        elif exporter_type == "ClickHouseExporter":
            # Convert metadata to JSON string
            metadata_json = json.dumps(self.dotnet.dotnet)
            
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                metadata_json,
                datetime.now(timezone.utc)
            ]]
            
            column_names = [
                'sha256', 'md5', 'sha1', 'dotnet', 'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'String', 'String', 'String', 'JSON', 'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

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