Isamu Kajitani

38 papers A* 1A 3B 3C 1Journal 7Unranked 22
YearRankTypeTitle / Venue / Authors
2021 conf
ARSO
Mamoru Sekiyama, Keiko Homma, Yujin Wakita, Isamu Kajitani, Ikue Mori, Yoshio Matsumoto
2020 conf
LifeTech
Keiko Homma, Kiyoshi Fujiwara, Takuya Ogure, Isamu Kajitani
2020 conf
HCI (18)
Isamu Kajitani, Keiko Homma, Yoshio Matsumoto
2020 conf
HCI (18)
Yasuko Kitajima, Isamu Kajitani, Mitsuhiro Nakamura, Keiko Homma, Yoshio Matsumoto, Jukai Maeda
2019 conf
HCI (17)
Yoshio Matsumoto, Kunihiro Ogata, Isamu Kajitani, Keiko Homma, Yujin Wakita
2019 B conf
SMC
Gai Higuchi, Kengo Ohnishi, Kohei Tsuda, Hiroyuki Matsubara, Isamu Kajitani
2019 J jnl
IEEE Robotics Autom. Mag.
Ayanna M. Howard, Adriana Tapus, Isamu Kajitani
2018 conf
HCI (17)
Keiko Homma, Kiyoshi Fujiwara, Isamu Kajitani, Takuya Ogure
2018 A conf
IROS
Yoshio Matsumoto, Kunihiro Ogata, Isamu Kajitani, Keiko Homma, Yujin Wakita
2018 conf
ISR
Keiko Homma, Kiyoshi Fujiwara, Isamu Kajitani, Takuya Ogure
2018 conf
HCI (17)
Kunihiro Ogata, Yoshio Matsumoto, Isamu Kajitani, Keiko Homma, Yujin Wakita
2017 conf
AAATE Conf.
Isamu Kajitani, Yujin Wakita
2017 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Isamu Kajitani
2017 J jnl
J. Robotics
Masaki Shibuya, Kengo Ohnishi, Isamu Kajitani
2017 conf
Humanoids
Kunihiro Ogata, Isamu Kajitani, Keiko Homma, Yoshio Matsumoto
2015 B conf
SMC
Hideyuki Tanaka, Isamu Kajitani, Keiko Homma, Yujin Wakita, Yoshio Matsumoto
2015 B conf
RO-MAN
Isamu Kajitani, Takeshi Sakaguchi, Yoshio Matsumoto, Tamio Tanikawa, Tetsuo Kotoku
2013 A* conf
ICRA
Kanako Miura, Eiichi Yoshida, Yoshiyuki Kobayashi, Yui Endo, Fumio Kanehiro, Keiko Homma, Isamu Kajitani, Yoshio Matsumoto, Takayuki Tanaka
2013 conf
ICORR
Kengo Ohnishi, Toshiyuki Morio, Tomoo Takagi, Isamu Kajitani
2013 conf
URAI
Tamio Tanikawa, Kazuhiro Kojima, Kohtaro Ohba, Isamu Kajitani, Takeshi Nagami, Hideki Asoh, Kôichi Hasida, Takuichi Nishimura, Yoichi Motomura
2008 conf
ICES
Yukari Ishida, Hirotaka Nosato, Eiichi Takahashi, Masahiro Murakawa, Isamu Kajitani, Tatsumi Furuya, Tetsuya Higuchi
2008 conf
CIMCA/IAWTIC/ISE
Hirotaka Nosato, Yukari Ishida, Tatsumi Furuya, Eiichi Takahashi, Masahiro Murakawa, Isamu Kajitani, Tetsuya Higuchi
2006 ch.
Evolvable Hardware
Isamu Kajitani, Masaya Iwata, Tetsuya Higuchi
2001 conf
ICES
Masaya Iwata, Isamu Kajitani, Yong Liu, Nobuki Kajihara, Tetsuya Higuchi
2000 J jnl
Syst. Comput. Jpn.
Masaya Iwata, Isamu Kajitani, Masahiro Murakawa, Yuji Hirao, Hitoshi Iba, Tetsuya Higuchi
1999 conf
AAAI/IAAI
Isamu Kajitani, Tsutomu Hoshino, Nobuki Kajihara, Masaya Iwata, Tetsuya Higuchi
1999 conf
ICANNGA
Isamu Kajitani, Masahiro Murakawa, Nobuki Kajihara, Masaya Iwata, Hidenori Sakanashi, Tetsuya Higuchi
1999 J jnl
IEEE Trans. Evol. Comput.
Tetsuya Higuchi, Masaya Iwata, Didier Keymeulen, Hidenori Sakanashi, Masahiro Murakawa, Isamu Kajitani, Eiichi Takahashi, Kenji Toda, Mehrdad Salami, Nobuki Kajihara, Nobuyuki Otsu
1999 J jnl
IEEE Trans. Computers
Masahiro Murakawa, Shuji Yoshizawa, Isamu Kajitani, Xin Yao, Nobuki Kajihara, Masaya Iwata, Tetsuya Higuchi
1998 conf
ICES
Isamu Kajitani, Tsutomu Hoshino, Daisuke Nishikawa, Hiroshi Yokoi, Shogo Nakaya, Tsukasa Yamauchi, Takeshi Inuo, Nobuki Kajihara, Masaya Iwata, Didier Keymeulen, Tetsuya Higuchi
1997 conf
IJCAI
Masahiro Murakawa, Shuji Yoshizawa, Isamu Kajitani, Tetsuya Higuchi
1997 C conf
ICEC
Tetsuya Higuchi, Masahiro Murakawa, Masaya Iwata, Isamu Kajitani, Weixin Liu, Mehrdad Salami
1997 conf
ICGA
Masahiro Murakawa, Shuji Yoshizawa, Isamu Kajitani, Tetsuya Higuchi
1996 A conf
PPSN
Masaya Iwata, Isamu Kajitani, Hitoshi Yamada, Hitoshi Iba, Tetsuya Higuchi
1996 A conf
PPSN
Masahiro Murakawa, Shuji Yoshizawa, Isamu Kajitani, Tatsumi Furuya, Masaya Iwata, Tetsuya Higuchi
1996 conf
International Conference on Evolutionary Computation
Isamu Kajitani, Tsutomu Hoshino, Masaya Iwata, Tetsuya Higuchi
1995 conf
Towards Evolvable Hardware
Tetsuya Higuchi, Masaya Iwata, Isamu Kajitani, Hitoshi Iba, Yuji Hirao, Tatsumi Furuya, Bernard Manderick
1994 J jnl
Artif. Life
Yukihiko Toquenaga, Isamu Kajitani, Tsutomu Hoshino
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