Ian W. Turner

109 papers A* 1A 1C 1Misc 1Journal 105
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eng. Comput.
Zhi Mao, Libo Feng, Aiguo Xiao, Fawang Liu, Ian W. Turner
2026 J jnl
Comput. Math. Appl.
Wenxin Zheng, Fawang Liu, Shujuan Lü, Ian W. Turner, Libo Feng
2025 J jnl
SIAM J. Imaging Sci.
Riley M. Whebell, Timothy J. Moroney, Ian W. Turner, Ravindra Pethiyagoda, Marie-Luise Wille, Justin J. Cooper-White, Arvind Kumar, Philip Taylor, Scott W. McCue
2025 J jnl
CoRR
Michael Milford, Ian W. Turner, Peter Corke
2025 J jnl
Multiscale Model. Simul.
Ian W. Turner, Patrick Perré
2024 J jnl
CoRR
Riley M. Whebell, Timothy J. Moroney, Ian W. Turner, Ravindra Pethiyagoda, Scott W. McCue
2024 J jnl
Comput. Math. Appl.
Dylan J. Oliver, Ian W. Turner, Elliot J. Carr
2024 J jnl
Numer. Algorithms
Xingyu An, Qingxia (Jenny) Wang, Fawang Liu, Vo V. Anh, Ian W. Turner
2023 J jnl
CoRR
Riley M. Whebell, Timothy J. Moroney, Ian W. Turner, Ravindra Pethiyagoda, Marie-Luise Wille, Justin J. Cooper-White, Arvind Kumar, Philip Taylor, Scott W. McCue
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Libo Feng, Ian W. Turner, Timothy J. Moroney, Fawang Liu
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Brodie A. J. Lawson, Rodrigo Weber dos Santos, Ian W. Turner, Alfonso Bueno-Orovio, Pamela M. Burrage, Kevin Burrage
2023 J jnl
J. Comput. Phys.
Libo Feng, Ian W. Turner, Patrick Perré, Kevin Burrage
2022 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Mengchen Zhang, Fawang Liu, Ian W. Turner, Vo V. Anh
2022 J jnl
Appl. Math. Comput.
Libo Feng, Ian W. Turner, Timothy J. Moroney, Fawang Liu
2022 J jnl
J. Comput. Graph. Stat.
Jacob W. Priddle, Scott A. Sisson, David T. Frazier, Ian W. Turner, Christopher C. Drovandi
2022 J jnl
PLoS Comput. Biol.
Alexander P. Browning, Christopher C. Drovandi, Ian W. Turner, Adrianne L. Jenner, Matthew J. Simpson
2022 J jnl
J. Comput. Appl. Math.
Hui Zhang, Fawang Liu, Xiaoyun Jiang, Ian W. Turner
2022 J jnl
Appl. Math. Comput.
Qiang Yu, Ian W. Turner, Fawang Liu, Viktor Vegh
2021 J jnl
Comput. Math. Appl.
Mengchen Zhang, Fawang Liu, Ian W. Turner, Vo V. Anh, Libo Feng
2021 J jnl
J. Comput. Appl. Math.
Shuiping Yang, Fawang Liu, Libo Feng, Ian W. Turner
2021 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Libo Feng, Ian W. Turner, Patrick Perré, Kevin Burrage
2021 J jnl
CoRR
Libo Feng, Ian W. Turner, Patrick Perré, Kevin Burrage
2020 J jnl
J. Comput. Appl. Math.
Lang Li, Fawang Liu, Libo Feng, Ian W. Turner
2020 J jnl
Comput. Math. Appl.
Xinghua Gao, Fawang Liu, Hong Li, Yang Liu, Ian W. Turner, Baoli Yin
2020 J jnl
J. Comput. Appl. Math.
Libo Feng, Fawang Liu, Ian W. Turner
2020 J jnl
J. Comput. Phys.
Zongze Yang, Fawang Liu, Yufeng Nie, Ian W. Turner
2020 J jnl
Comput. Math. Appl.
Rumeng Zheng, Fawang Liu, Xiaoyun Jiang, Ian W. Turner
2020 J jnl
CoRR
Libo Feng, Pinghui Zhuang, Fawang Liu, Ian W. Turner, Jing Li
2020 J jnl
CoRR
Brodie A. J. Lawson, Rodrigo Weber dos Santos, Ian W. Turner, Alfonso Bueno-Orovio, Pamela M. Burrage, Kevin Burrage
2020 J jnl
CoRR
Riley M. Whebell, Timothy J. Moroney, Ian W. Turner, Ravindra Pethiyagoda, Scott W. McCue
2020 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Huan Du, Patrick Perré, Ian W. Turner
2019 J jnl
J. Comput. Phys.
Fanhai Zeng, Ian W. Turner, Kevin Burrage, Stephen J. Wright
2019 J jnl
SIAM J. Sci. Comput.
Ling Guo, Fanhai Zeng, Ian W. Turner, Kevin Burrage, George Em Karniadakis
2019 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Libo Feng, Fawang Liu, Ian W. Turner
2019 J jnl
Numer. Algorithms
Tianzeng Li, Yu Wang, Fawang Liu, Ian W. Turner
2018 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Shanlin Qin, Fawang Liu, Ian W. Turner
2018 J jnl
Comput. Math. Appl.
Hui Zhang, Fawang Liu, Xiaoyun Jiang, Fanhai Zeng, Ian W. Turner
2018 J jnl
SIAM J. Sci. Comput.
Fanhai Zeng, Ian W. Turner, Kevin Burrage, George E. Karniadakis
2018 J jnl
J. Sci. Comput.
Fanhai Zeng, Ian W. Turner, Kevin Burrage
2018 J jnl
J. Comput. Phys.
Patrick Hassard, Ian W. Turner, Troy Farrell, Daniel R. Lester
2018 J jnl
Comput. Math. Appl.
Shanlin Qin, Fawang Liu, Ian W. Turner, Qianqian Yang, Qiang Yu
2018 J jnl
Axioms
Kevin Burrage, Pamela M. Burrage, Ian W. Turner, Fanhai Zeng
2018 J jnl
J. Comput. Appl. Math.
W. Fan, Fawang Liu, X. Jiang, Ian W. Turner
2018 J jnl
Comput. Electron. Agric.
Steven Psaltis, Ian W. Turner, Elliot J. Carr, Troy Farrell, Gary Hopewell, Henri Baillères
2018 J jnl
Appl. Math. Comput.
Yuanlu Li, Fawang Liu, Ian W. Turner, Tao Li
2017 J jnl
Comput. Math. Appl.
Libo Feng, Pinghui Zhuang, Fawang Liu, Ian W. Turner, Vo V. Anh, J. Li
2017 J jnl
Comput. Math. Appl.
J. Li, Fawang Liu, Libo Feng, Ian W. Turner
2017 J jnl
Comput. Math. Appl.
Yanmin Zhao, Yadong Zhang, Fawang Liu, Ian W. Turner, Yifa Tang, Vo V. Anh
2017 J jnl
J. Comput. Appl. Math.
Shanlin Qin, Fawang Liu, Ian W. Turner, Viktor Vegh, Qiang Yu, Qianqian Yang
2017 J jnl
Numer. Algorithms
Hongmei Zhang, Fawang Liu, Ian W. Turner, Shanzhen Chen, Qianqian Yang
2017 J jnl
J. Comput. Phys.
Brody H. Foy, Patrick Perré, Ian W. Turner
2016 J jnl
Numer. Algorithms
Xiuling Hu, Fawang Liu, Ian W. Turner, Vo V. Anh
2016 J jnl
Comput. Math. Appl.
Chunying Ming, Fawang Liu, Liancun Zheng, Ian W. Turner, Vo Anh
2016 J jnl
SIAM J. Numer. Anal.
Shanzhen Chen, Fawang Liu, X. Jiang, Ian W. Turner, Kevin Burrage
2016 J jnl
Numer. Algorithms
Libo Feng, Pinghui Zhuang, Fawang Liu, Ian W. Turner, Yuantong Gu
2016 J jnl
SIAM J. Sci. Comput.
Megan E. Farquhar, Timothy J. Moroney, Qianqian Yang, Ian W. Turner
2016 J jnl
Numer. Algorithms
Pinghui Zhuang, Fawang Liu, Ian W. Turner, Vo V. Anh
2016 J jnl
Comput. Math. Appl.
Hongmei Zhang, Fawang Liu, Ian W. Turner, Qianqian Yang
2016 J jnl
Appl. Math. Lett.
Yanmin Zhao, Yadong Zhang, Dongyang Shi, Fawang Liu, Ian W. Turner
2016 J jnl
J. Comput. Phys.
Elliot J. Carr, Patrick Perré, Ian W. Turner
2015 J jnl
SIAM J. Sci. Comput.
Minling Zheng, Fawang Liu, Ian W. Turner, Vo Anh
2015 J jnl
Appl. Math. Comput.
Xiuling Hu, Hong-lin Liao, Fawang Liu, Ian W. Turner
2015 J jnl
Appl. Math. Comput.
Shanzhen Chen, Fawang Liu, X. Jiang, Ian W. Turner, Vo Anh
2015 J jnl
Appl. Math. Comput.
Q. Liu, Fawang Liu, Yuantong Gu, Pinghui Zhuang, J. Chen, Ian W. Turner
2015 J jnl
J. Comput. Phys.
Fawang Liu, Pinghui Zhuang, Ian W. Turner, Vo Anh, Kevin Burrage
2015 J jnl
J. Comput. Appl. Math.
Shanzhen Chen, X. Jiang, Fawang Liu, Ian W. Turner
2015 J jnl
SIAM J. Sci. Comput.
Fanhai Zeng, Changpin Li, Fawang Liu, Ian W. Turner
2015 J jnl
Appl. Math. Comput.
Libo Feng, Pinghui Zhuang, Fawang Liu, Ian W. Turner
2014 J jnl
SIAM J. Sci. Comput.
Daryl M. Kempthorne, Ian W. Turner, John A. Belward
2014 J jnl
SIAM J. Numer. Anal.
Fanhai Zeng, Fawang Liu, Changpin Li, Kevin Burrage, Ian W. Turner, Vo Anh
2014 J jnl
Appl. Math. Comput.
Q. Liu, Fawang Liu, Ian W. Turner, Vo Anh, Yuantong Gu
2014 J jnl
Numer. Algorithms
J. Song, Qiang Yu, Fawang Liu, Ian W. Turner
2014 J jnl
J. Assoc. Inf. Sci. Technol.
Michael Symonds, Peter Bruza, Guido Zuccon, Bevan Koopman, Laurianne Sitbon, Ian W. Turner
2014 J jnl
Appl. Math. Comput.
Haiping Ye, Fawang Liu, Vo Anh, Ian W. Turner
2014 J jnl
Appl. Math. Comput.
Hongmei Zhang, Fawang Liu, Pinghui Zhuang, Ian W. Turner, Vo Anh
2014 J jnl
J. Comput. Appl. Math.
Qiang Yu, Fawang Liu, Ian W. Turner, Kevin Burrage
2013 J jnl
Multiscale Model. Simul.
Elliot J. Carr, Ian W. Turner, Patrick Perré
2013 J jnl
J. Comput. Phys.
Elliot J. Carr, Ian W. Turner, Patrick Perré
2013 J jnl
Appl. Math. Comput.
Shanzhen Chen, Fawang Liu, Ian W. Turner, Vo Anh
2013 A* conf
ICRA
Michael Milford, Ian W. Turner, Peter Corke
2013 J jnl
Numer. Algorithms
Chang-Ming Chen, Fawang Liu, Ian W. Turner, Vo Anh, Y. Chen
2013 J jnl
SIAM J. Sci. Comput.
Fanhai Zeng, Changpin Li, Fawang Liu, Ian W. Turner
2012 J jnl
Appl. Math. Comput.
Qiang Yu, Fawang Liu, Ian W. Turner, Kevin Burrage
2012 A conf
CIKM
Michael Symonds, Peter D. Bruza, Laurianne Sitbon, Ian W. Turner
2012 J jnl
Comput. Math. Appl.
H. Jiang, Fawang Liu, Ian W. Turner, Kevin Burrage
2012 Misc conf
ADCS
Mike Symonds, Peter Bruza, Guido Zuccon, Laurianne Sitbon, Ian W. Turner
2012 J jnl
Math. Comput.
Chang-Ming Chen, Fawang Liu, Vo Anh, Ian W. Turner
2012 J jnl
Appl. Math. Comput.
Shujun Shen, Fawang Liu, J. Chen, Ian W. Turner, Vo Anh
2011 J jnl
Appl. Math. Comput.
Elliot J. Carr, Timothy J. Moroney, Ian W. Turner
2011 C conf
PACLIC
Mike Symonds, Peter Bruza, Laurianne Sitbon, Ian W. Turner
2011 J jnl
Math. Comput. Simul.
Moa'ath N. Oqielat, Ian W. Turner, John A. Belward, Scott W. McCue
2011 J jnl
SIAM J. Sci. Comput.
Qianqian Yang, Ian W. Turner, Fawang Liu, Milos Ilic
2011 J jnl
Comput. Math. Appl.
Chang-Ming Chen, Fawang Liu, Ian W. Turner, Vo Anh
2011 J jnl
Appl. Math. Comput.
Chang-Ming Chen, Fawang Liu, Vo Anh, Ian W. Turner
2010 J jnl
Appl. Math. Comput.
Milos Ilic, Ian W. Turner, Fawang Liu, Vo Anh
2010 J jnl
SIAM J. Sci. Comput.
Ian W. Turner, John A. Belward, Moa'ath N. Oqielat
2010 J jnl
SIAM J. Sci. Comput.
Chang-Ming Chen, Fawang Liu, Vo Anh, Ian W. Turner
2010 J jnl
Numer. Algorithms
Chang-Ming Chen, Fawang Liu, Ian W. Turner, Vo Anh
2009 J jnl
PLoS Comput. Biol.
Jennifer A. Flegg, Donald L. S. McElwain, Helen M. Byrne, Ian W. Turner
2009 J jnl
Comput. Stat. Data Anal.
Chris M. Strickland, Ian W. Turner, Robert Denham, Kerrie L. Mengersen
2009 J jnl
SIAM J. Numer. Anal.
Pinghui Zhuang, Fawang Liu, Vo Anh, Ian W. Turner
2009 J jnl
Appl. Math. Comput.
R. Lin, Fawang Liu, Vo Anh, Ian W. Turner
2008 J jnl
SIAM J. Numer. Anal.
Pinghui Zhuang, Fawang Liu, Vo Anh, Ian W. Turner
2007 J jnl
J. Comput. Phys.
Chang-Ming Chen, Fawang Liu, Ian W. Turner, Vo Anh
2007 J jnl
J. Comput. Phys.
Timothy J. Moroney, Ian W. Turner
2007 J jnl
J. Comput. Phys.
Q. Liu, Fawang Liu, Ian W. Turner, Vo Anh
2007 J jnl
Numer. Linear Algebra Appl.
Milos Ilic, Ian W. Turner, Yousef Saad
2007 J jnl
Appl. Math. Comput.
Fawang Liu, Pinghui Zhuang, Vo Anh, Ian W. Turner, Kevin Burrage
2005 J jnl
Numer. Linear Algebra Appl.
Milos Ilic, Ian W. Turner
redb/extractors/elf_extractors/elf_exports.py
← Index redb/extractors/elf_extractors/elf_exports.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 ELFExport


class ELFExportExtractor(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_exports = None
        self.elastic_index = self.index_prefix + "-elf_exports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_exported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract exported functions from symbol tables."""
        exported_functions = set()

        try:
            # Check both static (.symtab) and dynamic (.dynsym) symbol tables
            symbol_sections = ['.symtab', '.dynsym']

            for section_name in symbol_sections:
                section = elf.get_section_by_name(section_name)
                if not section or not hasattr(section, 'iter_symbols'):
                    continue

                for symbol in section.iter_symbols():
                    # Check if symbol is exported (defined and globally visible)
                    if (symbol.name and
                        symbol.entry.get('st_shndx', 0) != 'SHN_UNDEF' and  # Not undefined
                        symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK'] and  # Global or weak binding
                        symbol.entry.get('st_info', {}).get('type') in ['STT_FUNC', 'STT_OBJECT']):  # Function or object

                        # Additional checks for meaningful exports
                        if (symbol.entry.get('st_value', 0) > 0 or  # Has a value
                            symbol.entry.get('st_size', 0) > 0):    # Has a size
                            exported_functions.add(symbol.name)

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

        return exported_functions

    def _get_exported_functions_from_dynamic_section(self, elf) -> Set[str]:
        """Extract exported functions information from dynamic section."""
        exported_functions = set()

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

            # Look for version definition sections that might indicate exports
            # This is complementary to symbol table analysis
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_SONAME':
                    # If it has a SONAME, it's likely a shared library with exports
                    # The actual exports are still found in symbol tables
                    pass

        except Exception as e:
            self.log.error(f"Error extracting exports from dynamic section: {e}")

        return exported_functions

    def _filter_meaningful_exports(self, exports: Set[str]) -> Set[str]:
        """Filter out compiler-generated and internal symbols to focus on meaningful exports."""
        filtered_exports = set()

        # Common patterns to exclude (compiler-generated, internal symbols)
        exclude_patterns = [
            '_start',
            '_init',
            '_fini',
            '__libc_',
            '__gmon_start__',
            '_IO_stdin_used',
            '__data_start',
            '__bss_start',
            '_edata',
            '_end',
            '__TMC_END__',
            '_ITM_deregisterTMCloneTable',
            '_ITM_registerTMCloneTable',
            '__cxa_finalize',
            '__gxx_personality_v0',
            '_Jv_RegisterClasses'
        ]

        for export in exports:
            # Skip empty or very short names
            if not export or len(export) < 2:
                continue

            # Skip symbols that match exclude patterns
            skip = False
            for pattern in exclude_patterns:
                if export.startswith(pattern):
                    skip = True
                    break

            # Skip symbols that look like internal mangled names (but keep reasonable C++ names)
            if export.startswith('_Z') and len(export) > 50:  # Very long mangled names
                skip = True

            if not skip:
                filtered_exports.add(export)

        return filtered_exports

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

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

            def extract_data(elf):
                # Extract exported functions from multiple sources
                exported_functions = set()

                # From symbol tables (primary source)
                symbol_exports = self._get_exported_functions_from_symbols(elf)
                exported_functions.update(symbol_exports)

                # From dynamic section (supplementary)
                dynamic_exports = self._get_exported_functions_from_dynamic_section(elf)
                exported_functions.update(dynamic_exports)

                # Filter out compiler-generated and internal symbols
                meaningful_exports = self._filter_meaningful_exports(exported_functions)

                # Convert to sorted list for consistent output
                export_functions_list = sorted(list(meaningful_exports))

                # Return ELFExport dataclass
                return ELFExport(
                    elf_exports_total=len(export_functions_list),
                    elf_export_functions=export_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_exports = result
            return self.elf_exports

        except Exception as e:
            self.log.error(f"Error extracting ELF exports {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_exports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_exports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_exports.elf_exports_total,
                    self.elf_exports.elf_export_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_exports_total',
                    'elf_export_functions',
                    'analysis_date'
                ]

                if not data:
                    return None

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

                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_exports"