MacOS ARM64 IDA 9.0安装Keypatch

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值