X. Rong Li

250 papers A* 2C 131Misc 2Journal 97Unranked 18
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Qi Tang, Zhansheng Duan, X. Rong Li
2025 J jnl
IEEE Trans. Signal Process.
Linfeng Xu, X. Rong Li, Mahendra Mallick, Zhansheng Duan
2025 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Mingkai Li, Jian Lan, X. Rong Li
2024 J jnl
Autom.
Haozhan Meng, X. Rong Li, Vesselin P. Jilkov
2024 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Qi Tang, Zhansheng Duan, X. Rong Li
2024 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Donglin Zhang, Zhansheng Duan, X. Rong Li
2024 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Liping Guo, Sanfeng Hu, Jie Zhou, X. Rong Li
2023 J jnl
CoRR
Xiaolei Bian, Huimin Chen, X. Rong Li
2023 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Chao Wan, Yongxin Gao, X. Rong Li
2023 J jnl
IEEE Trans. Signal Process.
Xiaolei Bian, X. Rong Li, Vesselin P. Jilkov
2023 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Mingkai Li, Jian Lan, X. Rong Li
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Xiaomeng Cao, Jian Lan, X. Rong Li, Yu Liu
2022 C conf
FUSION
Qi Tang, Zhansheng Duan, Donglin Zhang, X. Rong Li
2022 C conf
FUSION
Liping Guo, Sanfeng Hu, Jie Zhou, X. Rong Li
2022 J jnl
IEEE Trans. Signal Process.
Linfeng Xu, X. Rong Li, Yan Liang, Zhansheng Duan
2022 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Leilei Guo, Jian Lan, X. Rong Li
2022 J jnl
IEEE Trans. Signal Process.
Liping Guo, Sanfeng Hu, Jie Zhou, X. Rong Li
2022 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Hanlin Yin, X. Rong Li, Yongxin Gao
2021 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yingjie Zhang, Jian Lan, Mahendra Mallick, X. Rong Li
2021 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Reza Rezaie, X. Rong Li, Vesselin P. Jilkov
2021 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Reza Rezaie, X. Rong Li
2021 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Xiaomeng Cao, Jian Lan, X. Rong Li
2021 J jnl
Autom.
Reza Rezaie, X. Rong Li
2021 J jnl
CoRR
Reza Rezaie, X. Rong Li
2021 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Le Zhang, Jian Lan, X. Rong Li
2020 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Reza Rezaie, X. Rong Li
2020 J jnl
IEEE Trans. Signal Process.
Reza Rezaie, X. Rong Li
2020 J jnl
IEEE Trans. Autom. Control.
Reza Rezaie, X. Rong Li
2020 J jnl
IEEE Trans. Signal Process.
Mengjiao Tang, Yao Rong, X. Rong Li, Jie Zhou
2020 conf
MFI
Reza Rezaie, X. Rong Li
2020 J jnl
Autom.
Jian Lan, X. Rong Li
2020 C conf
FUSION
Qi Wang, Zhansheng Duan, X. Rong Li
2020 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Qi Wang, Zhansheng Duan, X. Rong Li
2020 C conf
FUSION
Mingkai Li, Jian Lan, X. Rong Li
2019 C conf
FUSION
X. Rong Li
2019 J jnl
IEEE Trans. Signal Process.
Jian Lan, X. Rong Li
2019 J jnl
CoRR
Reza Rezaie, X. Rong Li
2019 J jnl
CoRR
Reza Rezaie, X. Rong Li
2019 J jnl
CoRR
Reza Rezaie, X. Rong Li
2019 C conf
FUSION
Chao Wan, Yongxin Gao, X. Rong Li
2019 J jnl
IEEE Trans. Signal Process.
Mengjiao Tang, Yao Rong, Jie Zhou, X. Rong Li
2019 C conf
FUSION
Mengjiao Tang, Yao Rong, X. Rong Li
2019 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Vesselin P. Jilkov, Jeffrey H. Ledet, X. Rong Li
2019 C conf
FUSION
Haozhan Meng, X. Rong Li, Vesselin P. Jilkov
2019 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2019 C conf
FUSION
Leilei Guo, Jian Lan, X. Rong Li
2018 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2018 J jnl
Appl. Soft Comput.
Jianshe Wu, Hedi Yang, Yanhua Ren, X. Rong Li
2018 C conf
FUSION
Qi Wang, Zhansheng Duan, X. Rong Li, Uwe D. Hanebeck
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2018 C conf
FUSION
Chao Wan, Yongxin Gao, X. Rong Li, Enbin Song
2018 C conf
FUSION
Yongxin Gao, X. Rong Li, Xiaochen Chen
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2018 C conf
FUSION
Xiaomeng Cao, Jian Lan, X. Rong Li, Yu Liu
2018 J jnl
IEEE Signal Process. Lett.
Wen Cao, Jian Lan, X. Rong Li
2018 conf
ICVISP
Reza Rezaie, X. Rong Li
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2018 C conf
FUSION
Qingqiang Ji, Jian Lan, X. Rong Li
2018 C conf
FUSION
Deqiang Han, X. Rong Li
2018 conf
ICVISP
Reza Rezaie, X. Rong Li
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2018 C conf
FUSION
Leilei Guo, Jian Lan, X. Rong Li
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2018 C conf
FUSION
Haozhan Meng, X. Rong Li, Vesselin P. Jilkov
2018 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Hanlin Yin, X. Rong Li, Jian Lan
2018 C conf
FUSION
Jeffrey H. Ledet, Vesselin P. Jilkov, X. Rong Li
2018 C conf
FUSION
Xiaolei Bian, X. Rong Li, Vesselin P. Jilkov
2018 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yongxin Gao, Yu Liu, X. Rong Li
2018 conf
Allerton
Reza Rezaie, X. Rong Li
2018 J jnl
CoRR
Reza Rezaie, X. Rong Li
2017 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Linfeng Xu, X. Rong Li, Yan Liang, Zhansheng Duan
2017 C conf
FUSION
Vesselin P. Jilkov, Jeffrey H. Ledet, X. Rong Li
2017 C conf
FUSION
Chao Wan, Yongxin Gao, X. Rong Li
2017 C conf
FUSION
Qi Wang, Zhansheng Duan, X. Rong Li
2017 C conf
FUSION
Xiaolei Bian, X. Rong Li
2017 C conf
FUSION
Jianbo Li, Jie Zhou, Bin Zhang, X. Rong Li
2017 C conf
FUSION
Xiaomeng Cao, Jian Lan, X. Rong Li
2017 J jnl
IEEE Trans. Signal Process.
Mengjiao Tang, Yao Rong, Jie Zhou, X. Rong Li
2017 C conf
FUSION
Haoyuan Sun, Jian Lan, X. Rong Li
2017 C conf
FUSION
Yan He, Yingying Ding, X. Rong Li
2017 J jnl
IEEE Trans. Signal Process.
Jian Lan, X. Rong Li
2017 C conf
FUSION
Leilei Guo, Jian Lan, X. Rong Li
2017 C conf
FUSION
Qingqiang Ji, Jian Lan, X. Rong Li
2017 C conf
FUSION
Yan He, Yingying Ding, X. Rong Li
2017 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2016 J jnl
IEEE Trans. Signal Process.
Bao Liu, Jian Lan, X. Rong Li
2016 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2016 C conf
FUSION
X. Rong Li
2016 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Wen Cao, Jian Lan, X. Rong Li
2016 C conf
FUSION
Yongxin Gao, Enbin Song, X. Rong Li
2016 C conf
FUSION
Ping Wang, Erik Blasch, X. Rong Li, Eric K. Jones, Randy Hanak, Weihong Yin, Allison Beach, Paul C. Brewer
2016 C conf
FUSION
Jian Lan, X. Rong Li
2016 C conf
FUSION
Xiaomeng Cao, Jian Lan, X. Rong Li
2016 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Linfeng Xu, X. Rong Li, Zhansheng Duan
2016 C conf
FUSION
Vesselin P. Jilkov, Jeffrey H. Ledet, X. Rong Li
2016 C conf
FUSION
Qingqiang Ji, Jian Lan, X. Rong Li
2016 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yu Liu, X. Rong Li, Huimin Chen
2016 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Zhansheng Duan, X. Rong Li
2016 J jnl
IEEE Trans. Signal Process.
Yu Liu, Yongxin Gao, X. Rong Li
2016 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2016 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Yongxin Gao, X. Rong Li, Enbin Song
2016 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Jian Lan, X. Rong Li
2015 C conf
FUSION
Le Zhang, Jian Lan, X. Rong Li
2015 C conf
FUSION
Linfeng Xu, X. Rong Li, Yan Liang, Zhansheng Duan, Qian Feng
2015 C conf
FUSION
Vesselin P. Jilkov, X. Rong Li, Jeffrey H. Ledet
2015 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Zhansheng Duan, X. Rong Li
2015 C conf
FUSION
Reza Rezaie, X. Rong Li
2015 J jnl
IEEE Signal Process. Lett.
Hanlin Yin, X. Rong Li, Jian Lan
2015 C conf
FUSION
Wen Cao, Jian Lan, X. Rong Li
2015 C conf
FUSION
Wen Cao, Jian Lan, X. Rong Li
2015 J jnl
IEEE Trans. Signal Process.
Yu Liu, X. Rong Li
2015 C conf
FUSION
Deqiang Han, X. Rong Li, Yu Liu
2015 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Liping Yan, X. Rong Li, Yuanqing Xia, Mengyin Fu
2015 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yangsheng Chen, Vesselin P. Jilkov, X. Rong Li
2015 C conf
FUSION
Yongxin Gao, Yu Liu, X. Rong Li, Vesselin P. Jilkov
2015 C conf
ACC
Bao Liu, Jian Lan, X. Rong Li
2015 C conf
FUSION
Bao Liu, Jian Lan, X. Rong Li
2015 J jnl
IEEE Trans. Signal Process.
Jian Lan, X. Rong Li
2015 C conf
FUSION
Huimin Chen, Vesselin P. Jilkov, X. Rong Li
2014 C conf
FUSION
Ting Cheng, X. Rong Li, Zishu He
2014 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yongxin Gao, X. Rong Li, Zhansheng Duan
2014 C conf
FUSION
Vesselin P. Jilkov, X. Rong Li, Jeffrey H. Ledet
2014 C conf
FUSION
Rastin Rastgoufard, Vesselin P. Jilkov, X. Rong Li
2014 C conf
FUSION
Wen Cao, Jian Lan, X. Rong Li
2014 C conf
FUSION
Lifan Sun, Jian Lan, X. Rong Li
2014 C conf
FUSION
Jian Lan, X. Rong Li
2014 C conf
FUSION
Lifan Sun, Jian Lan, X. Rong Li
2014 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Lifan Sun, X. Rong Li, Jian Lan
2014 C conf
FUSION
Zhansheng Duan, X. Rong Li, Uwe D. Hanebeck
2014 C conf
FUSION
Jian Lan, X. Rong Li
2014 C conf
FUSION
Huimin Chen, Vesselin P. Jilkov, X. Rong Li
2014 C conf
FUSION
Hanlin Yin, Jian Lan, X. Rong Li
2014 C conf
FUSION
Yongxin Gao, X. Rong Li, Enbin Song
2014 J jnl
IEEE Trans. Signal Process.
Jian Lan, X. Rong Li
2014 C conf
FUSION
Yongxin Gao, Yu Liu, X. Rong Li
2013 C conf
ACC
Yu Liu, X. Rong Li
2013 C conf
FUSION
Yu Liu, X. Rong Li
2013 C conf
FUSION
Zhansheng Duan, X. Rong Li
2013 C conf
FUSION
Zhansheng Duan, X. Rong Li
2013 C conf
FUSION
Deqiang Han, X. Rong Li, Shaoyi Liang
2013 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Jian Lan, X. Rong Li
2013 C conf
FUSION
Wen Cao, Jian Lan, X. Rong Li
2013 C conf
FUSION
Lifan Sun, X. Rong Li, Jian Lan
2013 Misc conf
ACSSC
Yu Liu, X. Rong Li, Huimin Chen
2013 C conf
FUSION
Yu Liu, X. Rong Li
2013 C conf
FUSION
Jian Lan, X. Rong Li
2013 C conf
FUSION
Hanlin Yin, Jian Lan, X. Rong Li
2013 J jnl
IEEE Trans. Signal Process.
Linfeng Xu, X. Rong Li, Zhansheng Duan, Jian Lan
2013 C conf
FUSION
Zhansheng Duan, X. Rong Li
2013 C conf
FUSION
Huimin Chen, Vesselin P. Jilkov, X. Rong Li
2013 J jnl
Autom.
Liping Yan, X. Rong Li, Yuanqing Xia, Mengyin Fu
2013 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Jian Lan, X. Rong Li, Vesselin P. Jilkov, Chundi Mu
2013 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Zhansheng Duan, X. Rong Li
2012 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yongqi Liang, X. Rong Li, Chongzhao Han, Zhansheng Duan
2012 C conf
FUSION
Zhansheng Duan, X. Rong Li, Jifeng Ru
2012 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yimin Wang, X. Rong Li
2012 J jnl
IEEE Trans. Syst. Man Cybern. Part A
X. Rong Li, Zhanlue Zhao, Xiao-Bai Li
2012 C conf
FUSION
X. Rong Li
2012 C conf
FUSION
Ryan R. Pitre, X. Rong Li, Lie Xiong
2012 C conf
FUSION
Hanlin Yin, Jian Lan, X. Rong Li
2012 C conf
FUSION
Yu Liu, X. Rong Li
2012 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Yongxin Gao, X. Rong Li
2012 C conf
FUSION
Jing Hou, X. Rong Li, Vesselin P. Jilkov, Zhanrong Jing
2012 C conf
FUSION
Junlong Sun, Jie Zhou, X. Rong Li
2012 C conf
FUSION
Jian Lan, X. Rong Li
2012 C conf
FUSION
Jian Lan, X. Rong Li
2012 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Ryan R. Pitre, X. Rong Li, R. Delbalzo
2011 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Jian Lan, X. Rong Li, Chundi Mu
2011 C conf
FUSION
Huimin Chen, X. Rong Li
2011 C conf
FUSION
Jian Lan, X. Rong Li
2011 J jnl
IEEE Trans. Control. Syst. Technol.
Anwer Bashi, Vesselin P. Jilkov, X. Rong Li
2011 J jnl
IEEE Trans. Signal Process.
Zhansheng Duan, X. Rong Li
2011 C conf
FUSION
Yu Liu, X. Rong Li
2011 C conf
FUSION
Vesselin P. Jilkov, Jaipal R. Katkuri, X. Rong Li
2011 C conf
FUSION
Zhansheng Duan, Yimin Wang, X. Rong Li
2011 C conf
FUSION
Yu Liu, X. Rong Li
2011 C conf
FUSION
Yu Liu, X. Rong Li
2011 C conf
FUSION
Jian Lan, X. Rong Li
2010 C conf
FUSION
Yimin Wang, X. Rong Li
2010 C conf
FUSION
Yongxin Gao, X. Rong Li
2010 C conf
FUSION
Linfeng Xu, X. Rong Li
2010 C conf
FUSION
Linfeng Xu, X. Rong Li
2010 C conf
FUSION
Huimin Chen, X. Rong Li
2010 C conf
FUSION
Zhansheng Duan, X. Rong Li
2010 C conf
FUSION
Yongxin Gao, X. Rong Li
2010 C conf
FUSION
Zhansheng Duan, Yu Liu, X. Rong Li
2010 C conf
FUSION
Zhansheng Duan, X. Rong Li, Vesselin P. Jilkov
2009 C conf
FUSION
Ryan R. Pitre, X. Rong Li, Donald DelBalzo
2009 C conf
FUSION
Yimin Wang, X. Rong Li
2009 C conf
FUSION
X. Rong Li, Ryan R. Pitre, Vesselin P. Jilkov, Huimin Chen
2009 C conf
FUSION
Zhansheng Duan, X. Rong Li
2009 C conf
FUSION
Anwer Bashi, Vesselin P. Jilkov, X. Rong Li
2009 C conf
FUSION
Anwer Bashi, Vesselin P. Jilkov, X. Rong Li
2009 C conf
FUSION
Linfeng Xu, X. Rong Li
2009 conf
CDC
Yongqi Liang, X. Rong Li, Chongzhao Han, Zhansheng Duan
2009 J jnl
J. Adv. Inf. Fusion
Vesselin P. Jilkov, X. Rong Li
2009 C conf
FUSION
Yangsheng Chen, Vesselin P. Jilkov, X. Rong Li
2009 conf
CDC
Meiqin Liu, X. Rong Li
2009 conf
CDC
Meiqin Liu, X. Rong Li
2009 C conf
FUSION
Zhansheng Duan, X. Rong Li
2009 C conf
FUSION
Meiqin Liu, X. Rong Li
2008 C conf
FUSION
X. Rong Li, Xiao-Bai Li
2008 C conf
FUSION
X. Rong Li, Zhansheng Duan
2008 C conf
FUSION
Yangsheng Chen, X. Rong Li, Vesselin P. Jilkov
2008 C conf
FUSION
Zhansheng Duan, X. Rong Li
2008 C conf
FUSION
Huimin Chen, X. Rong Li
2008 C conf
FUSION
Zhansheng Duan, Vesselin P. Jilkov, X. Rong Li
2008 C conf
FUSION
Zhansheng Duan, X. Rong Li
2008 J jnl
IEEE Trans. Control. Syst. Technol.
Jifeng Ru, X. Rong Li
2007 Misc conf
TRIDENTCOM
Ming Yang, Huimin Chen, Sowmya Bandarupalli, X. Rong Li
2007 C conf
FUSION
Vesselin P. Jilkov, X. Rong Li, Donald DelBalzo
2007 C conf
FUSION
X. Rong Li, Ming Yang, Jifeng Ru
2007 C conf
FUSION
Huimin Chen, X. Rong Li
2007 C conf
FUSION
X. Rong Li
2007 J jnl
Commun. Inf. Syst.
X. Rong Li, Yunmin Zhu
2007 C conf
FUSION
Zhanlue Zhao, X. Rong Li
2006 C conf
ACC
Zhanlue Zhao, Huimin Chen, Genshe Chen, Chiman Kwan, X. Rong Li
2006 C conf
FUSION
Vesselin P. Jilkov, Huimin Chen, X. Rong Li, Trang Nguyen
2006 C conf
FUSION
X. Rong Li, Zhanlue Zhao
2006 A* conf
INFOCOM
Ming Yang, Jifeng Ru, X. Rong Li, Huimin Chen, Anwer Bashi
2006 C conf
FUSION
X. Rong Li, Zhanlue Zhao
2006 C conf
FUSION
X. Rong Li, Zhanlue Zhao
2005 J jnl
IEEE Trans. Autom. Control.
X. Rong Li, Zhanlue Zhao, Xiao-Bai Li
2005 J jnl
IEEE Trans. Signal Process.
Keshu Zhang, X. Rong Li, Yunmin Zhu
2005 A* conf
INFOCOM
Ming Yang, Jifeng Ru, X. Rong Li, Huimin Chen, Anwer Bashi
2005 J jnl
Signal Process.
Vera P. Behar, Christo A. Kabakchiev, X. Rong Li
2004 J jnl
IEEE Trans. Signal Process.
Vesselin P. Jilkov, X. Rong Li
2004 conf
CDC
Huimin Chen, Keshu Zhang, X. Rong Li
2004 conf
CDC
Keshu Zhang, X. Rong Li
2004 conf
CDC
X. Rong Li
2003 conf
ISIC
Jifeng Ru, X. Rong Li
2003 J jnl
IEEE Trans. Inf. Theory
X. Rong Li, Yunmin Zhu, Jie Wang, Chongzhao Han
2003 J jnl
IEEE Trans. Inf. Theory
Alexander G. Tartakovsky, X. Rong Li, G. Yaralov
2003 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Yunmin Zhu, X. Rong Li
2002 conf
Numerical Methods and Application
Vesselin P. Jilkov, X. Rong Li, Donka S. Angelova
2002 conf
CDC
Yunmin Zhu, Juan Zhao, X. Rong Li
2002 J jnl
SIAM J. Matrix Anal. Appl.
Jie Zhou, Yunmin Zhu, X. Rong Li, Zhisheng You
2001 conf
CDC
Jie Zhou, Yunmin Zhu, X. Rong Li, Zhisheng You
2001 J jnl
IEEE Trans. Signal Process.
Ning Li, X. Rong Li
2001 J jnl
Autom.
Yunmin Zhu, Zhisheng You, Juan Zhao, Keshu Zhang, X. Rong Li
2000 conf
CDC
X. Rong Li, Chongzhao Han, Jie Wang
2000 J jnl
IEEE Trans. Signal Process.
X. Rong Li, Ning Li
2000 J jnl
IEEE Trans. Autom. Control.
X. Rong Li
2000 J jnl
IEEE Trans. Aerosp. Electron. Syst.
X. Rong Li, Youmin Zhang
2000 J jnl
IEEE Trans. Aerosp. Electron. Syst.
X. Rong Li, Youmin Zhang
1999 J jnl
IEEE Trans. Neural Networks
Youmin Zhang, X. Rong Li
1999 conf
ECC
Jean Dezert, Ning Li, X. Rong Li
1998 J jnl
IEEE Trans. Autom. Control.
X. Rong Li
1996 conf
ICNN
Youmin Zhang, X. Rong Li, Zhiwei Zhu, Hongcai Zhang
1996 conf
ICNN
Youmin Zhang, X. Rong Li
redb/extractors/elf_extractors/elf_imports.py
← Index redb/extractors/elf_extractors/elf_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFImport


class ELFImportExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_imports = None
        self.elastic_index = self.index_prefix + "-elf_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_import_libraries(self, elf) -> List[str]:
        """Extract imported libraries from dynamic section."""
        libraries = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return libraries

            # Extract DT_NEEDED entries (required libraries)
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_NEEDED':
                    libraries.append(tag.needed)

        except Exception as e:
            self.log.error(f"Error extracting import libraries: {e}")

        return libraries

    def _get_imported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract imported functions from dynamic symbol table."""
        imported_functions = set()

        try:
            # Get the dynamic symbol table
            dynsym_section = elf.get_section_by_name('.dynsym')
            if not dynsym_section or not hasattr(dynsym_section, 'iter_symbols'):
                return imported_functions

            # Look for undefined symbols (imports)
            for symbol in dynsym_section.iter_symbols():
                # Check if symbol is undefined (imported)
                if (symbol.entry.get('st_shndx', 0) == 'SHN_UNDEF' and
                    symbol.name and
                    symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK']):
                    imported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting imported functions from symbols: {e}")

        return imported_functions

    def _get_imported_functions_from_relocations(self, elf) -> Set[str]:
        """Extract imported functions from relocation sections."""
        imported_functions = set()

        try:
            # Look through relocation sections
            for section in elf.iter_sections():
                if hasattr(section, 'iter_relocations'):
                    try:
                        for relocation in section.iter_relocations():
                            # Get symbol associated with relocation
                            if hasattr(relocation, 'symbol') and relocation.symbol:
                                symbol_name = relocation.symbol.name
                                if symbol_name:
                                    imported_functions.add(symbol_name)
                    except Exception as e:
                        self.log.debug(f"Could not process relocations in section {section.name}: {e}")

        except Exception as e:
            self.log.error(f"Error extracting imported functions from relocations: {e}")

        return imported_functions

    def _get_plt_functions(self, elf) -> Set[str]:
        """Extract functions from PLT (Procedure Linkage Table) sections."""
        plt_functions = set()

        try:
            # Look for PLT-related sections
            plt_sections = ['.plt', '.plt.got', '.plt.sec']

            for section_name in plt_sections:
                section = elf.get_section_by_name(section_name)
                if section:
                    # PLT functions are typically associated with relocations
                    # We'll get them from the relocation analysis
                    pass

        except Exception as e:
            self.log.error(f"Error extracting PLT functions: {e}")

        return plt_functions

    def tag(self):
        return Tag.ELF_IMPORTS.value if hasattr(Tag, 'ELF_IMPORTS') else "elf_imports"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Extract import libraries
                import_libraries = self._get_import_libraries(elf)

                # Extract imported functions from multiple sources
                imported_functions = set()

                # From dynamic symbols
                symbol_imports = self._get_imported_functions_from_symbols(elf)
                imported_functions.update(symbol_imports)

                # From relocations
                relocation_imports = self._get_imported_functions_from_relocations(elf)
                imported_functions.update(relocation_imports)

                # From PLT
                plt_imports = self._get_plt_functions(elf)
                imported_functions.update(plt_imports)

                # Convert to sorted lists for consistent output
                import_libraries_list = sorted(list(set(import_libraries)))
                import_functions_list = sorted(list(imported_functions))

                # Return ELFImport dataclass
                return ELFImport(
                    elf_imports_total=len(import_functions_list),
                    elf_import_libraries=import_libraries_list,
                    elf_import_functions=import_functions_list,
                )

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_imports = result
            return self.elf_imports

        except Exception as e:
            self.log.error(f"Error extracting ELF imports {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_imports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_imports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_imports.elf_imports_total,
                    self.elf_imports.elf_import_libraries,
                    self.elf_imports.elf_import_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_imports_total',
                    'elf_import_libraries',
                    'elf_import_functions',
                    'analysis_date'
                ]

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt32',
                    'Array(LowCardinality(String))',
                    'Array(LowCardinality(String))',
                    'DateTime64(3, \'UTC\')'
                ]

                if not data:
                    return None

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

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