IOT-Reaserch安装ghidra以及IDEA和ghidra的配置

Linux research 5.4.0-91-generic #102~18.04.1-Ubuntu SMP Thu Nov 11 14:46:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

java --version

IOT自带的java是符合要求的,不需要额外下载

iot@research:~/install-file$ java --version
openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment Temurin-11.0.13+8 (build 11.0.13+8)
OpenJDK 64-Bit Server VM Temurin-11.0.13+8 (build 11.0.13+8, mixed mode)

屁,当我没说,我做到后面现在又来补前面的,没有java17

要重新下载找到对应版本的java17

 https://adoptium.net/zh-CN/temurin/releases/

或者直接sudo

sudo apt install openjdk-17-jdk

 Ubuntu 22.04、20.04、18.04上安装OpenJDK 17 - 知乎 (zhihu.com)

如何切换Java版本

在主文件夹中的 .bashrc中把java的path改了

gradle -v(没用,仅记录)

下载

Gradle | Releases 也可以直接在这里下载

wget https://downloads.gradle.org/distributions/gradle-7.6.3-bin.zip

手动安装,因为直接sudo apt-get install gradle的版本是4.4.1,不符合ghidra的要求

解压

unzip gradle-7.6.3-bin.zip

sudo unzip gradle-7.6.3-bin.zip -d /opt

运行以下命令来重命名Gradle目录

sudo mv /opt/gradle-7.6.3   /opt/gradle

配置环境变量 

主目录里面隐藏文件.bashrc,直接打开它,在末尾加上

export PATH=$PATH:/opt/gradle/bin

保存文件

刷新环境变量

source ~/.bashrc

或者这样:

步骤3:配置环境变量
在终端中打开~/.bashrc或~/.bash_profile文件(取决于你使用的Shell):
nano ~/.bashrc
或
nano ~/.bash_profile
在文件末尾添加以下内容:
export PATH=$PATH:/opt/gradle/bin
按下Ctrl + X,然后输入Y保存文件。
步骤4:刷新环境变量
在终端中运行以下命令来刷新环境变量:
source ~/.bashrc
或
source ~/.bash_profile

验证

gradle -v

安装成功就可以看到版本信息

其他依赖条件

make -v

gcc -v

g++ -v

下载ghidra

我选择去手动下载再解压(git好慢好慢啊)

github链接

GitHub - NationalSecurityAgency/ghidra: Ghidra is a software reverse engineering (SRE) framework

我选择的是

解压,然后打开这个目录的文件夹,然后 直接运行./ghidraRun

打开就可以create new project,选择项目存储的位置,就可以反汇编文件了

下载idea

参考教程

Linux系统安装IDEA保姆级教程_linux安装idea-CSDN博客

IDEA官网的链接:https://www.jetbrains.com/idea/

下载IDEA

首先在官网上下载linux版本的IDEA,免费版本就行了,第一次没有经验,ghidra那个插件自己编译太难搞了,还是选择2022版本的算了

 

解压下载好的IDEA

配置环境变量

然后将如下的内容添加至~/.bashrc文件的最后一行(!!!注意替换掉对应的目录名!!!)。

export IDEA_HOME=/home/iot/install-file/idea-IC-233.14015.106
export PATH=${IDEA_HOME}/bin:$PATH

export IDEA_HOME=/home/iot/install-file/idea-IC-233.14015.106
export PATH=${IDEA_HOME}/bin:$PATH

更新启用环境变量

source ~/.bashrc

启动IDEA 

Linux环境下的IDEA已经安装完成了,我们只需要进入解压目录中的bin文件夹,输入如下指令,即可启动IDEA

./idea.sh

 我们首先启动IDEA,认真阅读使用协议后,选择同意,并点击Continue

接下来IDEA询问我们是否愿意分享自己使用软件过程中的数据,我们可以根据自己的情况选择。

汉化 

选择完毕后,就进入了IDEA的欢迎界面了,我们点击左侧的Plugins

在顶部的搜索框里面,输入Chinese,就可以找到中文的汉化插件。

我们点击Install,就会开始下载安装插件,安装完成后,我们点击Restart IDE,重启后,就可以显示中文的IDEA界面了。

 安装完成

IDEA和Ghidra

主要教程Ghidra IDEA 开发环境配置 | Niko's BLOG (tinyniko.github.io)

 使用IDEA搭建Ghidra Script开发调试环境配置_idea ghidra script-CSDN博客

下载插件,但编译没成功,不过有现成的

从github链接 中下载IDEA的插件 

intellij-ghidra(Github)

现成的:Versions: Ghidra - IntelliJ IDEs Plugin | Marketplace (jetbrains.com)  

下载到本地,解压,然后修改项目目录下的gradle.properties

然后在源代码目录下运行 gradle buildPlugin

build错误,搞不好

直接在插件里搜索Ghidra,出来的就是对应版本的0.4.1

安装试试看

配置插件

 

把Ghidra的地址写上,在此之前最好打开Ghidra,因为插件要检测用户家目录下的.ghidra文件夹里的一些内容,所以先运行一下ghidra 

 

点击确定,等待,IDEA下面有一个进度条,要等他走完

 点这里,编辑配置

然后添加,就配置完了

 但是打开ghidra的script manager,发现并没有我们写的java脚本

继续配置脚本目录

 

 

回到script manager可以看到我们写的脚本了 

 直接在ghidra里运行

简单的实例

简单的代码:

//@author why
//@category test
//@keybinding
//@menupath
//@toolbar


import ghidra.app.script.GhidraScript;

public class helloGHidra extends GhidraScript {
    protected void run() throws Exception {
        printf("hello idea\n");
        printf("hello ghidra\n");
        String name = currentProgram.getName();
        printf("hello %s\n", name);
    }
}

如果直接在IDEA里运行的话,我们可以在代码的最后一行下一个端点,他会跳转到打开Ghidra的界面

 然后再ghidra的脚本管理器里点运行

在IDEA中就可以看到了 

debug之后,在ghidra里也可以看到输出

如果直接在IDEA里结束运行,他会把Ghidra也关掉 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux platform架构下I2C接口驱动开发

目录 概述 1 认识I2C协议 1.1 初识I2C 1.2 I2C物理层 1.3 I2C协议分析 1.3.1 Start、Stop、ACK 信号 1.3.2 I2C协议的操作流程 1.3.3 操作I2C注意的问题 2 linux platform驱动开发 2.1 更新设备树 2.1.1 添加驱动节点 2.1.2 编译.dts 2.1.3 更新板卡中的.dtb 2.2 …

观察者模式, 发布-订阅模式, 监听器模式

观察者模式, 发布-订阅模式, 监听器模式 观察者模式 观察者模式是一种行为型设计模式, 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 角色模型和结构图 在观察者模式中,只有两种…

⭐北邮复试刷题LCR 018. 验证回文串__双指针 (力扣119经典题变种挑战)

LCR 018. 验证回文串 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出: true 解释…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现原理…

【Vuforia+Unity】AR05-实物3D模型识别功能实现

对于3D物体的识别,可以是虚拟的也可以是实物的,但是对于虚拟的三维模型意义不大,我们完全可以把三维模型放在屏幕上截一张图,以图片识别的方式召唤数字内容,不过在虚拟现实中或许有用。 因此本文探讨的技术路线主要是…

Docker之查看并获取最新Ubuntu镜像(十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【快速搞定Webpack5】修改输出文件目录及自动清理上次打包文件(五)

介绍 默认情况下webpack打包后,我们的图片和js等文件都会被打包到dist目录下,文件多了混淆在一起一方面不利于文件的查找和管理,另外一方面看上去也不美观。 所以今天我们学习的内容就是控制输出后的文件进入不同的目录。 一、配置 新增4…

Nginx配置组成与性能调优

目录 一、Nginx配置介绍 1. 模块组成 2. 图示 3. 相关框架 二. 配置调优 1. 全局配置 1.1 关闭版本和修改版本 1.2 修改启动的进程数 1.3 cpu与work进程绑定 1.4 pid路径 1.5 nginx进程的优先级(work进程的优先级) 1.6 调试work进程打开的文…

npm run dev和npm run serve两个命令的区别

npm run dev和npm run serve两个命令的区别 前端开发过程中运行Vue项目的时候,有时候使用npm run serve命令可以启动项目,有时候却会报错;有时候使用npm run dev命令可以启动项目,有时候却也会报错。是什么原因造成这种情况呢&am…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

4、电源管理入门之子系统reset

目录 1. 简介 2. consumer-驱动软件 3. provider-reset驱动 3.1 整体介绍 3.2 reset复位API说明 之前的文章电源管理入门-1关机重启详解介绍了整机SoC的重启也可以说是reset,那么子系统的reset,例如某个驱动(网卡、USB等)或者某个子系统(NPU、ISP等运行在独立的M核或…

5、电源管理入门之 arm-scmi和mailbox核间通信

目录 1. 整体架构介绍 2 Linux中reset模块 2.1 Reset consumer 2.2 Reset provider 3. Linux SCMI reset通信 3.1 SCMI reset协议初始化 3.2 SCMI reset消息收发 4. SCP中reset 4.1 固件新增module 4.2 scmi_reset_domain初始化 4.3 scmi_reset_domain消息处理 4.3…

排序算法1:冒泡排序、快速排序、插入排序

排序算法&#xff1a;交换类排序&#xff0c;插入类排序、选择类排序、归并类排序 交换类排序&#xff1a;冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…

linux CentOs 安装docker 推荐生产环境使用

目录 1. 在CentOs上安装docker所需的系统环境 2. 卸载旧版本 2.1 查看是否已安装docker 2.2 卸载已安装的docker 3. 安装方式 3.1 使用rpm存储库安装(推荐使用该方法) 3.2 从包中安装 4. 开始docker 1. 在CentOs上安装docker所需的系统环境 需要以下CentOS版本之一的维…

压缩感知的图像仿真(MATLAB源代码)

压缩感知是一种用于高效获取和表示信号的技术&#xff0c;它可以显著减少数据的采样和传输量&#xff0c;同时保持对信号的高质量恢复能力。在压缩感知中&#xff0c;信号被表示为其在一个稀疏基中的稀疏线性组合。通过仅使用少量的随机投影测量&#xff0c;就能够捕捉信号的大…

Vue状态管理库-Pinia

一、Pinia是什么&#xff1f; Pinia 是 Vue 的专属状态管理库&#xff0c;它允许支持跨组件或页面共享状态&#xff0c;即共享数据&#xff0c;他的初始设计目的是设计一个支持组合式API的 Vue 状态管理库&#xff08;因为vue3一个很大的改变就是组合式API&#xff09;,当然这…

【数学建模入门】

数学建模入门 数学建模需要的学科知识怎么学习数学模型如何读好一篇优秀论文数学建模赛题常见类别数学建模常见问题数学建模组队和分工数学建模准备工作 数学建模需要的学科知识 怎么学习数学模型 &#x1f4a6;推荐阅读书籍&#xff1a; 《数学建模算法与应用》&#xff0c;…

tensorboard的用法

部分测试代码&#xff1a; from torch.utils.tensorboard import SummaryWriter import numpy as np from PIL import Image import torch import cv2 as cv import matplotlib.pyplot as plt from torch import nn from torchvision import datasetsdef functiontools():writ…

ros自定义action记录

文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build4. simple_action_server.py5. simple_action_client.py 测试 自定义action ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…

Django使用Celery异步

安装包 pip install celerypip install eventlet 1.在项目文件的根目录下创建目录结果 2. 在main.py文件中 # !/usr/bin/env python # -*-coding:utf-8 -*-""" # Author &#xff1a;skyTree # version &#xff1a;python 3.11 # Description&#…