Ghidra无头模式(自动化批处理执行重复性任务)

Ghidra无头模式(自动化批处理执行重复性任务)

与Ghidra GUI探索单个项目中的单个文件不同,Ghidra headless analyzer(Ghidra无头分析器)更加适合批处理和用脚本控制Ghidra。

(一)启动analyzeHeadless
analyzeHeadless 位于ghidra support路径下(ghidra_11.0.1_PUBLIC\support\analyzeHeadless )。如下图所示,为执行analyzeHeadless 后的输出结果。
在这里插入图片描述
(二)通过analyzeHeadless,新建Ghidra项目
在无头模式下,如果项目不存在,则会自动新建一个项目,也可以通过参数指定项目地址。
下面的命令将在D:\GhidraProject目录中打开或者新建test项目

analyzeHeadless D:\GhidraProject test

在这里插入图片描述

(三)通过analyzeHeadless,将文件导入项目
在无头模式中,需要指定参数-import选项和要导入的文件名称。
通过指定import参数,导入D:\GhidraProject\importFile1文件。

analyzeHeadless D:\GhidraProject test -import D:\GhidraProject\importFile1

通过指定import参数,导入D:\GhidraProject\impor中所有文件。

analyzeHeadless D:\GhidraProject test -import D:\GhidraProject\import

在这里插入图片描述
在这里插入图片描述

(四)通过analyzeHeadless, 自动分析文件、保存以及退出。
在无头模式下,自动分析和保存是默认发生的,因此我们在上述的命令中其实已经完成该步骤。

analyzeHeadless D:\GhidraProject test -import D:\GhidraProject\importFile1

如果不想自动分析文件,可以通过指定参数-noanalysis

analyzeHeadless D:\GhidraProject test -import D:\GhidraProject\importFile1 -noanalysis

(五)analyzeHeadless中,其他的选项和参数
(1)项目文件相关:

  • -log logfileparh
    修改默认日志文件路径。
  • -overwrite
    重复导入同一个文件,覆盖原有内容。
  • -readOnly
    只考虑导入文件,不保存至项目中。
  • -deleteProject
    不保存新建项目,分析执行完成后将会删除当前项目。
  • -recursive
    递归处理子目录,如:文件导入时。

(2)分析相关:

  • -noanalysis
    只加载不分析导入文件。

  • -analyTimeoutPerfile seconds
    指定一个以秒为单位的超时时间。

  • -processor languageID和-cspec compilerSpecID
    自定义选择语言和编译器规范,在无头模式下,允许在使用-processor 选项时,不使用-cspec;不能在不使用-processor 选项时,使用-cspec

  • -loader loadername
    指定GHidra的加载器模块,具体内容可查看support\analyzeHeadlessREASDME.html

  • -max-cpu number
    指定无头模式下使用的cpu核数

(3)脚本相关:

无头模式下最强大的运用莫过于和GHidra脚本的相关联。

  • -process [project_file]
    需要通过脚本处理的文件(而不是导入文件),如果没有指定,则处理项目中所有的文件。
  • -scripPath “path[;path2…]”
    扩展脚本文件搜索路径,多个路径需要使用分号进行分隔。
  • -preScript
    该选项指定在分析前运行的脚本。
  • -postScript
    该选项指定在分析后运行的脚本。
  • -propertiesPath
    该选项指定与脚本关联的任何属性文件的路径。
  • -okToDelete
    指定该选项后,允许无头模式下删除文件。

(六)无头模式和脚本联动示例

任务:针对D:\GhidraProject目录下中test项目中的每个文件,在分析完成后执行D:\scriptProject中的testScript脚本,限制cpu核为8,。

analyzeHeadless  D:\GhidraProject test -process -scriptPath "D:\scriptProject"  -postScript testScript -max-cpu 8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464658.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES海量数据插入如何优化性能?

2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …

el-date-picker日期选择器动态设置日期

需求&#xff1a;选择开始时间&#xff0c;或者在开始时间已存在的情况下&#xff1b;结束时间下拉日期选择框展示从开始日期展示&#xff1b;而不是当前日期&#xff0c;并且结束时间下拉框日期要禁用开始时间之前的日期。 <el-form-item label"开始时间" prop&q…

web实操2——idea创建普通web项目

创建项目 就是普通的java项目&#xff0c;项目右键add framework support&#xff08;添加框架支持&#xff09;,然后点击Web Application&#xff08;web应用程序&#xff09;&#xff0c;然后点击OK。即可。 文件下就会多一个web文件夹&#xff0c;里面是WEB-INF文件夹&…

ES跟Kafka集成

配合流程 1. Kafka作为分布式流处理平台&#xff0c;能够实时收集和处理不同数据源的数据流&#xff1b; 2. 通过Kafka Connect或者Logstash等中间件&#xff0c;可以将Kafka中的数据流实时推送到Elasticsearch中&#xff1b; 3. Elasticsearch接收到数据后&#xff0c;会根据…

RT-Thread操作系统(2)

RT-Thread操作系统&#xff08;2&#xff09; 目录 RT-Thread操作系统&#xff08;2&#xff09; 设备驱动 IO设备模型框架 PIN设备&#xff08;控制LED灯&#xff09; 软件包开发 DHT11的使用 自动初始化机制 串口 LCD LVGL 连接阿里云和服务器 设备驱动 IO设备模…

多线程--简单模拟实现线程池并使用--Java

一、序言 阅读这篇博客之前建议先读多线程--线程池概念以及使用--Java-CSDN博客&#xff0c;里面有对线程池的详细介绍&#xff0c;这边就不过多赘述。 二、模拟实现固定线程数目的线程池 通过对线程池的理解&#xff0c;我们了解到线程池将我们需要执行的任务Runnable放在阻…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

mutable用法

mutable 关键字用于允许类的某个成员变量在 const 成员函数中被修改。通常&#xff0c;const 成员函数不能改变对象的任何成员变量&#xff0c;但将成员变量声明为 mutable 可以例外 class Hero { public:Hero():m_Hp(0), m_getHpCounter(0){}int getHp() const {m_getHpCounte…

map和set和pair

目录 一.序列式容器和关联式容器 一.set set类的介绍&#xff1a; Construct &#xff1a;set的初始化 insert&#xff1a;插入 ​编辑find&#xff1a;查找 erase&#xff1a;删除 set查找范围的函数&#xff1a;​编辑 二.map 2.1map介绍 2.2pair类型介绍 在map的i…

BEV数据集标注成本高?BEVPose:减少对标注数据依赖!

引言 本文提出了一个名为BEVPose的框架&#xff0c;通过利用自监督和传感器位姿信息&#xff0c;实现相机和激光雷达数据的多模态BEV表示对齐&#xff0c;显著减少了对标注数据的依赖。BEVPose在BEV地图分割任务中表现出色&#xff0c;能够超越全监督的方法&#xff0c;同时提升…

AI - 使用LangChain构建简单LLM应用程序

AI - 使用LangChain构建简单LLM应用程序 什么是LLM LLM&#xff08;Large Language Model&#xff0c;大型语言模型&#xff09;是一种由大量文本数据训练而成的深度学习模型&#xff0c;能够理解和生成自然语言。例如&#xff0c;GPT-3就是一种流行的LLM&#xff0c;可以用于…

linux shell脚本学习(1):shell脚本基本概念与操作

1.什么是shell脚本 linux系统中&#xff0c;shell脚本或称之为bash shell程序&#xff0c;通常是由vim编辑&#xff0c;由linux命令、bash shell指令、逻辑控制语句、注释信息组成的可执行文件 *linux中常以.sh后缀作为shell脚本的后缀。linux系统中文件乃至脚本的后缀并没有…

Linux云计算 |【第五阶段】CLOUD-DAY6

主要内容&#xff1a; 了解Kubernetes的架构、搭建Kubernetes集群 一、Kubernetes 概述 Kubernetes 这个名字来自希腊语&#xff0c;意思是“舵手”或“领航员”&#xff1b;K8S 是 Kubernetes 的缩写&#xff0c;其中“8”代表字母“ubernete”中的8个字母。Kubernetes 是由…

无人机之中继通信技术篇

一、定义与原理 无人机中继通信技术是指通过无人机搭载中继设备&#xff0c;将信号从一个地点传输到另一个地点&#xff0c;从而延长通信距离并保持较好的通信质量。其原理类似于传统的中继通信&#xff0c;即在两个终端站之间设置若干中继站&#xff0c;中继站将前站送来的信号…

【深度学习基础】深入理解 卷积与卷积核

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 卷积 1.1 …

数字身份发展趋势前瞻:身份韧性与安全

身份韧性与安全是身份与访问管理IAM发展的重要趋势&#xff0c;身份既是防御者的盾牌&#xff0c;也是攻击者的目标。面对日益复杂的网络威胁和不断增长的身份盗窃风险&#xff0c;身份韧性与安全不仅仅涉及产品的防御能力&#xff0c;还包括应对突发事件、快速恢复的弹性和灵活…

QChart中柱形图的简单使用并实现【Qt】

预备工作 如果qt没下载去下载一个&#xff0c;下载太慢了可以试试它[点击跳转]  (https://blog.csdn.net/qq_19319481/article/details/131655379)。   如果已经下载了qt发现自己的组件中没有QCharts&#xff0c;可以去试试它点击跳转。 都搞定了以后在pro文件里面添加QT …

智能语音机器人智能在哪里?AI人工智能电话机器人部署

随着科技的不断进步&#xff0c;人工智能已经成为了我们生活中不可或缺的一部分。AI人工智能机器人电话正是其中的一种形式&#xff0c;可以帮助企业或组织更好地实现电话营销的目标&#xff0c;那么智能语音机器人智能在哪里?我们来看看&#xff1a; 智能语音机器人&#xf…

UI自动化测试 —— CSS元素定位实践!

前言 自动化测试元素定位是指在自动化测试过程中&#xff0c;通过特定的方法或策略来准确识别和定位页面上的元素&#xff0c;以便对这些元素进行进一步的操作或断言。这些元素可以是文本框、按钮、链接、图片等HTML页面上的任何可见或不可见的组件。 在自动化测试中&#xf…

Unity 使用Netcode实现用户登录和登出

Unity之NetCode for GameObjets 基本使用 说明思路相关API代码实现Tips 说明 最近项目需要联机&#xff0c;项目方案选用Unity提供的NetCode for GameObjets&#xff08;以下简称NGO&#xff09;&#xff0c;踩了不少坑&#xff0c;本文不介绍基础使用&#xff0c;围绕双端&…