Weikang Zhang

39 papers A* 1C 3Journal 20Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Medical Imaging
Kaile Chen, Weikang Zhang, Ziheng Deng, Yufu Zhou, Jun Zhao
2025 J jnl
Grey Syst. Theory Appl.
Weikang Zhang, Huiru Gu, Sainan Wu, Shusen Zhong, Jing Yang, Huiqin Luan, Qi Li
2025 J jnl
Comput. J.
Weikang Zhang, Zhi Liu, Tongxin Bai, Furong Zheng, Wenming Jin, Yang Wang
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Peichen Yu, Chao Wang, Yixian Tang, Weikang Zhang, Lichuan Zou, Shaoyang Guan, Haihang You, Hong Zhang
2025 A* conf
DAC
Shuai Zhou, Weikang Zhang, Xindi Zhang, Zite Jiang, Haihang You, Shaowei Cai
2025 J jnl
IEEE Geosci. Remote. Sens. Lett.
Weikang Zhang, Yueming Ye, Bangyu Wu, Sanfu Li
2025 J jnl
IEEE Trans. Medical Imaging
Ying Song, Weikang Zhang, Tianxiong Wu, Yong Luo, Jiangyuan Shi, Xinjian Yang, Zhonghua Deng, Xu Qi, Guangjun Li, Sen Bai, Jun Zhao, Renming Zhong
2024 C conf
IGARSS
Peichen Yu, Chao Wang, Yixian Tang, Weikang Zhang, Haihang You, Shaoyang Guan, Lichuan Zou, Hong Zhang
2024 J jnl
CoRR
Weikang Zhang, Matej Hejda, Qusay Raghib Ali Al-Taai, Dafydd Owen-Newns, Bruno Romeira, José M. L. Figueiredo, Joshua Robertson, Edward Wasige, Antonio Hurtado
2024 J jnl
Neuromorph. Comput. Eng.
Weikang Zhang, Matej Hejda, Qusay Raghib Ali Al-Taai, Dafydd Owen-Newns, Bruno Romeira, José M. L. Figueiredo, Joshua Robertson, Edward Wasige, Antonio Hurtado
2023 J jnl
Sensors
Jichao Liu, Yanyan Liang, Zheng Chen, Huaiyi Li, Weikang Zhang, Junling Sun
2023 J jnl
Neuromorph. Comput. Eng.
Bruno Romeira, Ricardo M. R. Adão, Jana B. Nieder, Qusay Raghib Ali Al-Taai, Weikang Zhang, Robert H. Hadfield, Edward Wasige, Matej Hejda, Antonio Hurtado, Ekaterina Malysheva, Victor Dolores-Calzadilla, João Lourenço, D. Castro Alves, José M. L. Figueiredo, Ignacio Ortega-Piwonka, Julien Javaloyes, Stuart Edwards, J. Iwan Davies, Folkert Horst, Bert J. Offrein
2023 J jnl
Sensors
Haifeng Xu, Renhai Feng, Weikang Zhang
2023 J jnl
CoRR
Qusay Raghib Ali Al-Taai, Matej Hejda, Weikang Zhang, Bruno Romeira, José M. L. Figueiredo, Edward Wasige, Antonio Hurtado
2023 J jnl
Neuromorph. Comput. Eng.
Qusay Raghib Ali Al-Taai, Matej Hejda, Weikang Zhang, Bruno Romeira, José M. L. Figueiredo, Edward Wasige, Antonio Hurtado
2023 J jnl
Remote. Sens.
Weikang Zhang, Haihang You, Chao Wang, Hong Zhang, Yixian Tang
2023 J jnl
IEEE Trans. Medical Imaging
Ziheng Deng, Weikang Zhang, Kaile Chen, Yufu Zhou, Jiao Tian, Guotao Quan, Jun Zhao
2022 conf
ICC Workshops
Jingfei Shen, Fanping Zeng, Weikang Zhang, Yufan Tao, Shengkun Tao
2022 J jnl
CoRR
Matej Hejda, Ekaterina Malysheva, Dafydd Owen-Newns, Qusay Raghib Ali Al-Taai, Weikang Zhang, Ignacio Ortega-Piwonka, Julien Javaloyes, Edward Wasige, Victor Dolores-Calzadilla, José M. L. Figueiredo, Bruno Romeira, Antonio Hurtado
2022 conf
BigCom
Junyi Liu, Fanping Zeng, Jingfei Shen, Weikang Zhang, Yufan Tao, Shengkun Tao
2022 conf
CISP-BMEI
Xiujian He, Weikang Zhang
2021 conf
ICC Workshops
Tingting Lu, Fanping Zeng, Guozhu Chen, Wenjuan Shu, Jingfei Shen, Weikang Zhang
2021 conf
MSN
Tingting Lu, Fanping Zeng, Jingfei Shen, Guozhu Chen, Wenjuan Shu, Weikang Zhang
2021 conf
EMBC
Ziheng Deng, Yufu Zhou, Weikang Zhang, Zefan Lin, Jun Zhao
2021 C conf
IGARSS
Yixian Tang, Chao Wang, Hong Zhang, Haihang You, Weikang Zhang, Wei Duan, Jing Wang, Longkai Dong
2020 conf
ISBI
Xinzhen Zhang, Yufu Zhou, Weikang Zhang, Jianqi Sun, Jun Zhao
2020 conf
ACAI
Weikang Zhang, Zhanzhe Li, Yupu Guo
2020 C conf
BIBE
Yufu Zhou, Xinzhen Zhang, Weikang Zhang, Jianqi Sun, Jun Zhao
2019 ch.
Recent Advances in Computer Vision
Gang Zhang, Yuding Ke, Weikang Zhang, M. Hassaballah
2019 ch.
Cognitive Internet of Things
Gang Liu, Desheng Wen, Zongxi Song, Zhixin Li, Weikang Zhang, Xin Wei
2019 conf
ICIG (2)
Gang Liu, Desheng Wen, Zongxi Song, Weikang Zhang, Zhixin Li, Xin Wei, Tuochi Jiang
2019 conf
ICIG (2)
Weikang Zhang, Desheng Wen, Zongxi Song, Xin Wei, Gang Liu, Zhixin Li, Tuochi Jiang
2019 conf
ICIG (2)
Zhixin Li, Desheng Wen, Zongxi Song, Gang Liu, Weikang Zhang, Xin Wei, Tuochi Jiang
2018 J jnl
Sensors
Weikang Zhang, Desheng Wen, Zongxi Song, Xin Wei, Gang Liu, Zhixin Li
2018 conf
VTC Spring
Weikang Zhang, Scott Watson, Jue Wang, José M. L. Figueiredo, Edward Wasige, Anthony E. Kelly
2018 J jnl
Sensors
Zhixin Li, Desheng Wen, Zongxi Song, Gang Liu, Weikang Zhang, Xin Wei
2017 J jnl
IEEE Trans. Medical Imaging
Weikang Zhang, Ying Song, Yi Chen, Jingchen Ma, Jianqi Sun, Jun Zhao
2017 J jnl
J. Netw. Comput. Appl.
Feng Lu, Weikang Zhang, Liwen Shao, Xunfei Jiang, Peng Xu, Hai Jin
2016 conf
EMBC
Weikang Zhang, Jiansen Li, Jianqi Sun, Jun Zhao
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