Rachid Hedjam

52 papers A* 1A 3B 4C 1Journal 31Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput.
Sara Husam Nassar, Rachid Hedjam, Samir Brahim Belhaouari
2026 J jnl
Mach. Learn. Knowl. Extr.
Sara Husam Nassar, Rachid Hedjam, Samir Brahim Belhaouari
2026 J jnl
Neurocomputing
Xuanmian Liu, Xianping Qin, Shu Li, Fuchang Zhang, Rachid Hedjam, Guoqiang Zhong
2025 J jnl
Cogn. Comput.
Othmane Bazine, Omar Rai, Oussama Aiadi, Rachid Hedjam, Belal Khaldi, Guoqiang Zhong
2025 J jnl
Knowl. Based Syst.
Mebarka Allaoui, Rachid Hedjam, Khadra Bouanane, Mohand Saïd Allili, Mohammed Lamine Kherfi, Samir Brahim Belhaouari
2025 J jnl
Neurocomputing
Xiaotong Zhai, Shu Li, Guoqiang Zhong, Tao Li, Fuchang Zhang, Rachid Hedjam
2025 conf
Canadian AI
Ameer Ahmed Khan, Rachid Hedjam, Mebarka Allaoui, Guoqiang Zhong
2025 conf
PRCV (3)
Xuefei Wang, Dezhi Lu, Jiajia Dong, Rachid Hedjam, Guoqiang Zhong
2025 A* conf
ACM Multimedia
Ines Riahi, Abduljalil Radman, Zixin Guo, Rachid Hedjam, Jorma Laaksonen
2025 J jnl
Expert Syst. Appl.
Mebarka Allaoui, Samir Brahim Belhaouari, Rachid Hedjam, Khadra Bouanane, Mohammed Lamine Kherfi
2024 J jnl
Digit. Signal Process.
Khadra Bouanane, Basma Dokkar, Mebarka Allaoui, Bouthayna Meddour, Mohammed Lamine Kherfi, Rachid Hedjam
2024 conf
CVIPPR
Shaowei Qu, Rachid Hedjam, Zhimin Wang, Yongjian Gu, Lifan Yao, Haitao Li, Guoqiang Zhong
2023 J jnl
J. Sens. Actuator Networks
Yahya Al Sawafi, Abderezak Touzene, Rachid Hedjam
2022 J jnl
CoRR
Rachid Hedjam, Abdelhamid Abdesselam, Abderrahmane Rahiche, Mohamed Cheriet
2022 J jnl
CoRR
Rachid Hedjam, Abdelhamid Abdesselam, Seyed Mohammad Jafar Jalali, Imran Khan, Samir Brahim Belhaouari
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Qingyang Li, Guoqiang Zhong, Cui Xie, Rachid Hedjam
2022 J jnl
Expert Syst. Appl.
Seyed Mohammad Jafar Jalali, Milad Ahmadian, Sajad Ahmadian, Rachid Hedjam, Abbas Khosravi, Saeid Nahavandi
2021 J jnl
Expert Syst. Appl.
Imran Khan, Zongwei Luo, Abdul Khalique Shaikh, Rachid Hedjam
2021 J jnl
Pattern Recognit.
Rachid Hedjam, Abdelhamid Abdesselam, Farid Melgani
2021 J jnl
Big Data Cogn. Comput.
Younis Al-Anqoudi, Abdullah Al-Hamdani, Mohammed Al-Badawi, Rachid Hedjam
2020 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Rachid Hedjam, Abdelhamid Abdesselam, Farid Melgani
2020 conf
ICIoT
Hajar Saif Alsaadi, Rachid Hedjam, Abderezak Touzene, Abdelhamid Abdessalem
2019 B conf
SMC
Seyed Mohammad Jafar Jalali, Abbas Khosravi, Parham M. Kebria, Rachid Hedjam, Saeid Nahavandi
2019 C conf
IGARSS
Rachid Hedjam, Abdelhamid Abdesselam, Farid Melgani
2019 J jnl
Pattern Anal. Appl.
Abdenour Sehad, Youcef Chibani, Rachid Hedjam, Mohamed Cheriet
2019 conf
ICCCNT
ArunaDevi Karuppasamy, Abdelhamid Abdessalem, Rachid Hedjam, Hamza M. Zidoum
2017 J jnl
IEEE Signal Process. Lett.
Hossein Ziaei Nafchi, Atena Shahkolaei, Rachid Hedjam, Mohamed Cheriet
2017 conf
ICIAR
Sherif Abuelwafa, Mohamed Mhiri, Rachid Hedjam, Sara Zhalehpour, Andrew Piper, Chad Wellmon, Mohamed Cheriet
2017 conf
SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI
Ana Carolina Riekstin, Rachid Hedjam, Thomas Dandres, Mohamed Cheriet
2016 J jnl
IEEE Trans. Geosci. Remote. Sens.
Rachid Hedjam, Margaret Kalacska, Max Mignotte, Hossein Ziaei Nafchi, Mohamed Cheriet
2016 J jnl
CoRR
Hossein Ziaei Nafchi, Atena Shahkolaei, Rachid Hedjam, Mohamed Cheriet
2016 J jnl
IEEE Signal Process. Lett.
Hossein Ziaei Nafchi, Atena Shahkolaei, Rachid Hedjam, Mohamed Cheriet
2016 J jnl
IEEE Access
Hossein Ziaei Nafchi, Atena Shahkolaei, Rachid Hedjam, Mohamed Cheriet
2016 J jnl
CoRR
Hossein Ziaei Nafchi, Atena Shahkolaei, Rachid Hedjam, Mohamed Cheriet
2015 J jnl
CoRR
Hossein Ziaei Nafchi, Rachid Hedjam, Atena Shahkolaei, Mohamed Cheriet
2015 A conf
ICDAR
Rachid Hedjam, Hossein Ziaei Nafchi, Reza Farrahi Moghaddam, Margaret Kalacska, Mohamed Cheriet
2015 J jnl
IEEE Trans. Image Process.
Rachid Hedjam, Hossein Ziaei Nafchi, Margaret Kalacska, Mohamed Cheriet
2015 conf
IPTA
Abdenour Sehad, Youcef Chibani, Rachid Hedjam, Mohamed Cheriet
2014 B conf
ICPR
Rachid Hedjam, Mohamed Cheriet, Margaret Kalacska
2013 J jnl
Comput. Vis. Image Underst.
Mohamed Cheriet, Reza Farrahi Moghaddam, Rachid Hedjam
2013 J jnl
CoRR
Reza Farrahi Moghaddam, Shaohua Chen, Rachid Hedjam, Mohamed Cheriet
2013 A conf
ICDAR
Rachid Hedjam, Mohamed Cheriet
2013 J jnl
Pattern Recognit.
Rachid Hedjam, Mohamed Cheriet
2012 J jnl
Pattern Recognit.
Rachid Hedjam, Reza Farrahi Moghaddam, Mohamed Cheriet
2012 conf
ISSPA
Rachid Hedjam, Mohamed Cheriet
2011 J jnl
Pattern Recognit.
Rachid Hedjam, Reza Farrahi Moghaddam, Mohamed Cheriet
2011 conf
HIP@ICDAR
Rachid Hedjam, Mohamed Cheriet
2011 A conf
ICDAR
Rachid Hedjam, Mohamed Cheriet
2010 conf
EUVIP
Rachid Hedjam, Mohamed Cheriet
2010 conf
EUVIP
Rachid Hedjam, Reza Farrahi Moghaddam, Mohamed Cheriet
2009 B conf
ICIP
Rachid Hedjam, Max Mignotte
2009 B conf
ICIP
Rachid Hedjam, Reza Farrahi Moghaddam, Mohamed Cheriet
redb/extractors/decompiler/bninja/analysis/scores.py
← Index redb/extractors/decompiler/bninja/analysis/scores.py python
from collections import deque
from binaryninja import highlevelil
from binaryninja.enums import HighLevelILOperation


class ObfuscationScores:
    def __init__(self, hlil_function):
        self.function = hlil_function
        self._basic_blocks = list(hlil_function.basic_blocks) if hlil_function and hlil_function.basic_blocks else []
        self._block_count = len(self._basic_blocks)

    def flattened_score(self):
        """
        A heuristic for detecting control flow flattening from Tim Blazytko.
        Source: https://www.synthesis.to/2021/03/03/flattening_detection.html
        """
        if self._block_count == 0:
            return 0.0

        max_flattening_ratio = 0.0

        for basic_block in self._basic_blocks:
            dominated = get_dominated_by(basic_block)
            if not any(edge.source in dominated for edge in basic_block.incoming_edges):
                continue
            ratio = len(dominated) / self._block_count
            if ratio > max_flattening_ratio:
                max_flattening_ratio = ratio

        return max_flattening_ratio

    def MBA_score(self):
        """
        Score for MBA is obtained by the number of instructions that have at least one arithmetic operation and
        one logic operation DIVIDED by the number of instructions.
        """
        total = 0
        mba_count = 0

        for ins in self.function.instructions:
            total += 1
            if uses_mba(ins):
                mba_count += 1

        if total == 0:
            return 0.0

        return mba_count / total

def get_dominated_by(dominator):
    """
    Get the dominators that are dominated by the given dominator.
    (To recall the theory, a basic block B is called dominator for A if every path from START
    to A must include B)
    """
    result = set()
    worklist = deque([dominator])

    while worklist:
        block = worklist.popleft()
        if block in result:
            continue
        result.add(block)
        worklist.extend(block.dominator_tree_children)

    return result

_ARITHMETIC_OPS = frozenset({
    HighLevelILOperation.HLIL_ADD,
    HighLevelILOperation.HLIL_NEG,
    HighLevelILOperation.HLIL_SUB,
    HighLevelILOperation.HLIL_MUL,
    HighLevelILOperation.HLIL_DIVS,
    HighLevelILOperation.HLIL_MODS,
})

_LOGIC_OPS = frozenset({
    HighLevelILOperation.HLIL_NOT,
    HighLevelILOperation.HLIL_AND,
    HighLevelILOperation.HLIL_OR,
    HighLevelILOperation.HLIL_XOR,
    HighLevelILOperation.HLIL_LSR,
    HighLevelILOperation.HLIL_LSL,
})

_MBA_OPS = _ARITHMETIC_OPS | _LOGIC_OPS

def uses_mba(hlil_instruction):
    uses_logic = False
    uses_arithmetic = False
    stack = [hlil_instruction]

    while stack:
        instruction = stack.pop()

        if not isinstance(instruction, highlevelil.HighLevelILInstruction):
            continue

        op = instruction.operation

        if op not in _MBA_OPS:
            for operand in instruction.operands:
                if isinstance(operand, highlevelil.HighLevelILInstruction):
                    stack.append(operand)
            continue

        if op in _ARITHMETIC_OPS:
            uses_arithmetic = True
        else:
            uses_logic = True

        if uses_logic and uses_arithmetic:
            return True

        for operand in instruction.operands:
            if isinstance(operand, highlevelil.HighLevelILInstruction):
                stack.append(operand)

    return False