Macaw 开源二进制分析工具安装与使用教程

Macaw 开源二进制分析工具安装与使用教程

macaw Open source binary analysis tools. macaw 项目地址: https://gitcode.com/gh_mirrors/maca/macaw

项目概述

Macaw 是一个专注于二进制代码发现和机器码符号执行的开放源码框架。它设计为可扩展,允许用户添加新的架构支持,并选择性地启用所需架构的功能。通过Crucible库,Macaw能够将发现的机器码提升到适合符号执行的中间表示(IR)。当前,该框架支持x86-64、PowerPC (32位和64位)、ARM (32位)以及RISC-V等架构。

目录结构及介绍

Macaw项目遵循一个清晰的模块化组织方式:

  • macaw-base: 核心架构独立的操作和算法。
  • macaw-symbolic: 提供通过Crucible对Macaw程序进行符号模拟的库。
  • macaw-x86: 专为X86_64程序设计的定义。
  • macaw-x86-symbolic: 添加了对x86架构的支持所需的Macaw-symbolic扩展。
  • macaw-semmc: 包含从semmc语义转换到Macaw IR的架构独立组件,是所有后端共享的基础。
  • macaw-arm, macaw-arm-symbolic, macaw-ppc, macaw-ppc-symbolic, macaw-riscv: 分别对应于ARM、PPC和RISC-V架构的处理和符号执行支持。
  • macaw-refinement: 增强代码发现的能力,提供更多功能发现。
  • 其他辅助库依赖:如elf-edit, galois-dwarf, flexdis86, dismantle, semmc, crucible等,用于二进制文件处理、调试信息提取、反汇编等。

项目启动文件介绍

Macaw作为一个库而不是一个独立应用,没有传统的“启动文件”。开发者需集成Macaw到其项目中以利用其提供的功能。但构建和测试Macaw本身可以视为一种“启动”活动,这通常通过运行Cabal命令来实现。

项目配置文件介绍

  • Git Submodules: Macaw依赖于多个子模块,比如elf-edit, galois-dwarf, 等,通过git submodule update --init初始化。
  • Cabal Configurations: 使用Cabal构建时,Macaw依赖特定版本的包,这些版本被冻结在cabal/project.freeze文件中,确保了一致的构建环境。为了准备构建,可能需要链接或更新对应的冻结文件以匹配你的开发环境,例如通过指令ln -s cabal/projectfreeze GHC-<VER> config

构建与配置步骤简述

  1. 克隆仓库并初始化子模块:

    git clone https://github.com/GaloisInc/macaw.git
    cd macaw
    git submodule update --init
    
  2. 构建配置:

    • 初始化软浮点库(如果构建RISC-V相关部分)。
    • 链接或复制相应的cabal.project.freeze文件以指定依赖版本(适用于Haskell环境一致性)。
  3. 构建Macaw:

    • 对整个项目构建:cabal build all
    • 或单独构建某个模块:进入相应目录后执行cabal build

请注意,实际应用中,您可能会根据具体需求调整配置或环境变量,以满足项目的不同构建需求。

macaw Open source binary analysis tools. macaw 项目地址: https://gitcode.com/gh_mirrors/maca/macaw

CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b或2023b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪(CEEMDAN)、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 1. EMD(经验模态分解,Empirical Mode Decomposition) 2. TVF-EMD(时变滤波的经验模态分解,Time-Varying Filtered Empirical Mode Decomposition) 3. EEMD(集成经验模态分解,Ensemble Empirical Mode Decomposition) 4. VMD(变分模态分解,Variational Mode Decomposition) 5. CEEMDAN(完全自适应噪声集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 6. LMD(局部均值分解,Local Mean Decomposition) 7. RLMD(鲁棒局部均值分解, Robust Local Mean Decomposition) 8. ITD(固有时间尺度分解,Intrinsic Time Decomposition) 9. SVMD(逐次变分模态分解,Sequential Variational Mode Decomposition) 10. ICEEMDAN(改进的完全自适应噪声集合经验模态分解,Improved Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 11. FMD(特征模式分解,Feature Mode Decomposition) 12. REMD(鲁棒经验模态分解,Robust Empirical Mode Decomposition) 13. SGMD(辛几何模态分解,Spectral-Grouping-based Mode Decomposition) 14. RLMD(鲁棒局部均值分解,Robust Intrinsic Time Decomposition) 15. ESMD(极点对称模态分解, extreme-point symmetric mode decomposition) 16. CEEMD(互补集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition) 17. SSA(奇异谱分析,Singular Spectrum Analysis) 18. SWD(群分解,Swarm Decomposition) 19. RPSEMD(再生相移正弦辅助经验模态分解,Regenerated Phase-shifted Sinusoids assisted Empirical Mode Decomposition) 20. EWT(经验小波变换,Empirical Wavelet Transform) 21. DWT(离散小波变换,Discraete wavelet transform) 22. TDD(时域分解,Time Domain Decomposition) 23. MODWT(最大重叠离散小波变换,Maximal Overlap Discrete Wavelet Transform) 24. MEMD(多元经验模态分解,Multivariate Empirical Mode Decomposition) 25. MVMD(多元变分模态分解,Multivariate Variational Mode Decomposition)
在iOS开发中,你可以使用Macaw库来创建精美的文本动画效果,特别是当需要动态改变文本内容、字体或者样式的时候。Macaw是一个强大的可扩展的矢量图形引擎,适合做复杂的图形和动画处理。 下面是一个简单的例子,展示如何根据下载的配置文件设置文字动画: ```swift import Macaw class ViewController: UIViewController { private let textLayer = CAShapeLayer() override func viewDidLoad() { super.viewDidLoad() // 假设我们已经从网络下载了一个包含字体配置的JSON文件 guard let configURL = Bundle.main.url(forResource: "fontConfig", withExtension: "json"), let data = try? Data(contentsOf: configURL), let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { return } // 解析配置文件获取字体信息 if let fontFamily = json["fontFamily"] as? String, let fontSize = json["fontSize"] as? Double, let animationDuration = json["animationDuration"] as? TimeInterval { // 设置初始的文字层 textLayer.path = createTextPath(text: "Hello, World!", font: UIFont(name: fontFamily, size: CGFloat(fontSize)), alignment: .center) layer.addSublayer(textLayer) // 动画改变文字内容 DispatchQueue.global().asyncAfter(deadline: .now() + animationDuration) { self.updateText(text: "New Text!", animationDuration: animationDuration) } } } private func updateText(text: String, animationDuration: TimeInterval) { textLayer.text = text // 这里可以进一步添加动画效果,比如改变颜色、透明度等 let animation = CABasicAnimation(keyPath: "strokeColor") animation.duration = animationDuration animation.fromValue = UIColor.black.cgColor animation.toValue = UIColor.white.cgColor textLayer.strokeColor = animation.toValue ?? .clear textLayer.add(animation, forKey: nil) } // 创建形状路径函数,可以根据实际需求调整 private func createTextPath(text: String, font: UIFont, alignment: NSTextAlignment) -> CGPath { //... } } ``` 这个例子中,首先加载配置文件并解析出字体信息,然后在`viewDidLoad`中创建一个CAShapeLayer,设置了初始的文字和样式。接着,在动画开始的时间点之后更新文字内容,并对颜色属性进行了淡入淡出动画。`createTextPath`函数用于生成基于给定文本和字体的形状路径,可以根据实际需求定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎牧联Wood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值