Kamal Jamshidi

45 papers Journal 42Unranked 3
YearRankTypeTitle / Venue / Authors
2025 J jnl
Digit. Commun. Networks
Raffi Dilanchian, Ali Bohlooli, Kamal Jamshidi
2025 J jnl
Computing
Atiyeh Javaheri, Ali Bohlooli, Kamal Jamshidi
2025 J jnl
CoRR
Atiyeh Javaheri, Ali Bohlooli, Kamal Jamshidi
2024 J jnl
J. Supercomput.
Mostafa Taghizade Firouzjaee, Kamal Jamshidi, Neda Moghim
2024 J jnl
IEEE Internet Things J.
Mina Asgarian, Kamal Jamshidi, Ali Bohlooli
2024 J jnl
Computing
Atiyeh Javaheri, Ali Bohlooli, Kamal Jamshidi
2024 J jnl
Eng. Appl. Artif. Intell.
Abdulaziz Zam, Ali Bohlooli, Kamal Jamshidi
2024 J jnl
Comput. Networks
Mostafa Taghizade Firouzjaee, Kamal Jamshidi, Neda Moghim, Sachin Shetty
2023 J jnl
Comput. Networks
Ali Aghasi, Kamal Jamshidi, Ali Bohlooli, Bahman Javadi
2023 J jnl
Neurocomputing
Abbas Mohammadi, Kamal Jamshidi, Hamed Shahbazi, Mehran Rezaei
2022 J jnl
Clust. Comput.
Ali Aghasi, Kamal Jamshidi, Ali Bohlooli
2022 J jnl
Digit. Commun. Networks
Mortaza Nikzad, Kamal Jamshidi, Ali Bohlooli, Faiz Mohammad Faqiry
2020 conf
ICCCS
Azin Moradbeikie, Kamal Jamshidi, Ali Bohlooli, Jordi Garcia, Xavi Masip-Bruin
2020 J jnl
Future Gener. Comput. Syst.
Mortaza Nikzad, Kamal Jamshidi, Ali Bohlooli
2020 J jnl
IEEE Access
Azin Moradbeikie, Kamal Jamshidi, Ali Bohlooli, Jordi Garcia, Xavi Masip-Bruin
2020 J jnl
Multim. Tools Appl.
Mortaza Nikzad, Ali Bohlooli, Kamal Jamshidi
2020 J jnl
IET Comput. Digit. Tech.
Elyas Khajekarimi, Kamal Jamshidi, Abbas Vafaei
2019 J jnl
Vis. Comput.
Bahman Sadeghi, Kamal Jamshidi, Abbas Vafaei, S. Amirhassan Monadjemi
2019 J jnl
J. Supercomput.
Elyas Khajekarimi, Kamal Jamshidi, Abbas Vafaei
2018 J jnl
Vis. Comput.
Bahman Sadeghi, Kamal Jamshidi, Abbas Vafaei, S. Amirhassan Monadjemi
2018 J jnl
Signal Image Video Process.
Somaieh Amraee, Abbas Vafaei, Kamal Jamshidi, Peyman Adibi
2018 J jnl
Multim. Tools Appl.
Somaieh Amraee, Abbas Vafaei, Kamal Jamshidi, Peyman Adibi
2018 J jnl
J. Supercomput.
Abbas Yazdinejad, Ali Bohlooli, Kamal Jamshidi
2018 J jnl
Multim. Tools Appl.
Mortaza Nikzad, Ali Bohlooli, Kamal Jamshidi
2016 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Abbas Dehghani, Kamal Jamshidi
2016 J jnl
Neural Networks
Hamed Shahbazi, Reyhaneh Parandeh, Kamal Jamshidi
2015 J jnl
Comput. Electr. Eng.
Mohsen Sardari Zarchi, Amir Hassan Monadjemi, Kamal Jamshidi
2015 J jnl
J. Supercomput.
Abbas Dehghani, Kamal Jamshidi
2015 J jnl
Wirel. Pers. Commun.
Mahdieh Ghazvini, Naser Movahhedinia, Kamal Jamshidi
2015 J jnl
Robotica
Hamed Shahbazi, Kamal Jamshidi, Amir Hassan Monadjemi, Hafez Eslami Manoochehri
2014 J jnl
Comput. Electr. Eng.
Mohsen Sardari Zarchi, Amir Hassan Monadjemi, Kamal Jamshidi
2014 J jnl
Knowl. Based Syst.
Hamed Shahbazi, Kamal Jamshidi, Amir Hassan Monadjemi, Hafez Eslami
2014 J jnl
Int. J. Humanoid Robotics
Hafez Eslami Manoochehri, Kamal Jamshidi, Amir Hassan Monadjemi, Hamed Shahbazi
2014 J jnl
Sci. China Inf. Sci.
Ali Bohlooli, Kamal Jamshidi
2013 J jnl
Int. J. Commun. Networks Inf. Secur.
Mahdieh Ghazvini, Naser Movahhedinia, Kamal Jamshidi
2013 J jnl
IEEE Commun. Surv. Tutorials
Mahdieh Ghazvini, Naser Movahhedinia, Kamal Jamshidi, Neda Moghim
2012 J jnl
Appl. Intell.
Ali Bohlooli, Kamal Jamshidi
2012 J jnl
CoRR
Mahdieh Ghazvini, Naser Movahhedinia, Kamal Jamshidi
2012 J jnl
CoRR
Mohsen Zare Baghbidi, Kamal Jamshidi, Ahmad Reza Naghsh-Nilchi, Saeid Homayouni
2012 J jnl
Ind. Robot
Hamed Shahbazi, Kamal Jamshidi, Amir Hassan Monadjemi
2012 J jnl
Pattern Recognit. Lett.
Alireza Vard, Kamal Jamshidi, Naser Movahhedinia
2011 J jnl
Expert Syst. Appl.
Alireza Vard, Amir Hassan Monadjemi, Kamal Jamshidi, Naser Movahhedinia
2009 conf
ICUMT
Saeed Mirshams, Kamal Jamshidi, Ali Bohlooli, Abbas Dehghani
2009 conf
ICWN
Mohammad Ali Nematbakhsh, Kamal Jamshidi, Sajad Haghani
2008 J jnl
Neural Comput. Appl.
Marjan Kaedi, Naser Movahhedinia, Kamal Jamshidi
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