MacOS ARM64 IDA 9.0安装Keypatch

发布于:2025-06-29 ⋅ 阅读:(16) ⋅ 点赞:(0)

 https://github.com/keystone-engine/keypatch/blob/e87f0f90e149aa0d16851c9d919dba214f239e7c/keypatch.py

下载,放到'/Applications/IDA Professional 9.0.app/Contents/MacOS/plugins'

pip3 install keystone-engine

pip3 install six

# 下载项目

git clone https://github.com/keystone-engine/keystone.git

cd keystone

# 创建build文件夹, 后续编译后的内容都存放在这

mkdir build

cd build

修复cmake配置

import os
import re

# 设置根目录
root_dir = '/Users/aaa/Files/bbb/keystone'

# 正则匹配旧版本的 cmake_minimum_required 语句(版本为 2.8 或 2.8.x)
cmake_version_pattern = re.compile(r'^\s*cmake_minimum_required\s*\(\s*VERSION\s*2\.8(\.\d+)?\s*\)', re.IGNORECASE)

# 匹配 CMP0051 块开始和结束
cmp0051_start_pattern = re.compile(r'^\s*if\s*\(\s*POLICY\s+CMP0051\s*\)', re.IGNORECASE)
endif_pattern = re.compile(r'^\s*endif\s*\(?\)?', re.IGNORECASE)

# 递归查找所有 CMakeLists.txt
for dirpath, dirnames, filenames in os.walk(root_dir):
    for filename in filenames:
        if filename == 'CMakeLists.txt':
            filepath = os.path.join(dirpath, filename)
            print(f'处理文件: {filepath}')

            with open(filepath, 'r') as f:
                lines = f.readlines()

            new_lines = []
            skip_block = False

            for line in lines:
                # 替换 cmake_minimum_required 的版本
                if cmake_version_pattern.match(line):
                    new_lines.append('cmake_minimum_required(VERSION 3.5)\n')
                    continue

                # 检测到 CMP0051 起始块
                if cmp0051_start_pattern.match(line):
                    skip_block = True
                    new_lines.append('# ' + line)
                    continue

                # 如果在 CMP0051 块中,注释所有行,直到 endif
                if skip_block:
                    new_lines.append('# ' + line)
                    if endif_pattern.match(line):
                        skip_block = False
                    continue

                # 正常行直接保留
                new_lines.append(line)

            # 写回原文件
            with open(filepath, 'w') as f:
                f.writelines(new_lines)

print("✅ 所有 CMakeLists.txt 文件已处理完成。")

https://bbs.kanxue.com/thread-286591.htm


网站公告

今日签到

点亮在社区的每一天
去签到