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
//@toolbarimport 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也关掉 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Quasar】quasar轮播图进度条

效果 开始效果 即将结束 结束 码 <template><q-carouselv-model"slide"transition-prev"scale"transition-next"scale"swipeableanimatedinfiniteautoplaynavigationpaddingarrowsheight"300px"class"bg-primary text…

PHP实现分离金额和其他内容便于统计计算

得到的结果可以粘贴到excel计算 <?php if($_GET["x"] "cha"){ $tips isset($_POST[tips]) ? $_POST[tips] : ; $pattern /(\d\.\d|\d)/; $result preg_replace($pattern, "\t\${1}\t", $tips); echo "<h2><strong>数…

ESRI中国培训资料(2013-2018年)

一、2013年培训资料 链接&#xff1a;https://pan.baidu.com/s/1BDQbOlpXGjEE3nLsQowJJg?pwd4j7v 提取码&#xff1a;4j7v 二、2014年培训资料 链接&#xff1a;https://pan.baidu.com/s/1DiDMgrIMz2D-XCAh8jCncA?pwdbfs9 提取码&#xff1a;bfs9 三、2015年培训资料 …

css实现梯形

<div class"trapezoid"></div> .trapezoid {width: 200px;height: 0;border-bottom: 100px solid red; /* 定义梯形的底边 */border-left: 50px solid transparent; /* 定义梯形的左边 */border-right: 50px solid transparent; /* 定义梯形的右边 */} …

Java 2:运算符、表达式和语句

2.1 运算符与表达式 Java提供了丰富的运算符&#xff0c;如算术运算符、关系运算符、逻辑运算符、位运算符等。Java语言中的绝大多数运算符和C语言相同&#xff0c;基本语句如条件分支语句&#xff0c;循环语句等&#xff0c;也和C语言类似。 2.1.1算术运算符与算术表达式 1…

Redis的常见面试题

目录 前言 Redis支持哪些数据类型 五种核心类型 Zset为什么用跳表不用红黑树 &#xff1f; Redis常见的应用场景&#xff1f; 如何检测Redis的连通性&#xff1f; 如何设置key的过期时间&#xff1f; Redis为什么是单线程模型&#xff1f; Redis里的IO多路复用是什…

[计网底层小探索]:实现并部署多线程并发Tcp服务器框架(基于生产者消费者模型的线程池结构)

文章目录 一.网络层与传输层协议sockaddr结构体继承体系(Linux体系)贯穿计算机系统的网络通信架构图示: 二.实现并部署多线程并发Tcp服务器框架线程池模块序列化反序列化工具模块通信信道建立模块服务器主体模块任务回调模块(根据具体应用场景可重构)Tips:DebugC代码过程中遇到…

MySQL学习笔记3: MySQL数据库基础

目录 前言目标数据库操作&#xff08;针对database 的操作&#xff09;1. 创建数据库 create database 数据库名;2. 查看数据库 show databases;3. 选中数据库 use 数据库名;4. 删除数据库 drop database 数据库名; mysql中支持的数据类型1. 数值类型: NUMERIC(M,D)2. 字符串类…

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 …

良好的 API 安全策略的重要性

根据 Cloudflare 2024 年 API 安全与管理报告&#xff0c;到 2024 年&#xff0c;API 请求占全球动态互联网流量的 57%&#xff0c;这证实 API 是现代软件开发的重要组成部分。但随着多年来它们的采用不断增加&#xff0c;相关的安全挑战也随之增加。 在过去两年中&#xff0c…

“目标检测”任务基础认识

“目标检测”任务基础认识 1.目标检测初识 目标检测任务关注的是图片中特定目标物体的位置。 目标检测最终目的&#xff1a;检测在一个窗口中是否有物体。 eg:以猫脸检测举例&#xff0c;当给出一张图片时&#xff0c;我们需要框出猫脸的位置并给出猫脸的大小&#xff0c;如…

Meta 发布 MMCSG (多模态智能眼镜对话数据集)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

FFmpeg的HEVC解码器源代码学习笔记-1

一直想写一个HEVC的码流解析工具&#xff0c;看了雷神264码流解析工具&#xff0c;本来想尝试模仿写一个相似的265码流分析工具&#xff0c;但是发现265的解码过程和结构体和264的不太一样&#xff0c;很多结构体并没有完全暴露出来&#xff0c;没有想到很好的方法获得量化参数…

HAL STM32 HW I2C DMA + SSD1306/SH1106驱动示例

HAL STM32 HW I2C DMA SSD1306/SH1106驱动示例 &#x1f4cd;硬件I2C DMA驱动参考&#xff1a;https://blog.csdn.net/weixin_45065888/article/details/118225993 &#x1f516;本工程基于STM32F103VCT6&#xff0c;驱动程序独立&#xff0c;可以移植到任意STM32型号上使用。…

VSCODE中使用Django处理后端data和data models

链接&#xff1a; Python and Django tutorial in Visual Studio Code MVC的理解 在实际的程序中采用MVC的方式进行任务拆分。 Model&#xff08;模型&#xff09;负责封装应用程序的数据和业务逻辑部分。Model包含数据结构&#xff0c;数据处理逻辑以及相关的操作方法&#…

如何在debian上实现一键恢复操作系统?

在Debian或任何其他Linux发行版上实现一键恢复操作系统&#xff0c;需要创建一个系统镜像或快照&#xff0c;并设置一个简单的方法来从该镜像恢复。以下是创建和恢复系统的基本步骤&#xff1a; 1. 创建系统镜像&#xff1a; 使用像dd&#xff0c;rsync或专门的备份工具&#…

Kubernetes 卷存储 NFS | nfs搭建配置 原理介绍 nfs作为存储卷使用

1、NFS介绍 NFS&#xff08;Network File System&#xff09;是一种分布式文件系统协议&#xff0c;允许客户端远程访问服务器上的文件&#xff0c;实现数据共享。它整合多个存储设备为统一文件系统&#xff0c;方便数据存储和管理&#xff0c;支持负载均衡和故障转移&#xf…

【专利】专利缴费清单与汇款金额不一致的处理方法

缴纳专利年费时&#xff0c;很容易算错滞纳金。比如有个专利年费滞纳金应交690&#xff0c;结果我算成了660&#xff0c;报给财务转账660。第二天补录缴费信息时&#xff0c;汇款金额660&#xff0c;然后缴费清单填写总是690无法修改&#xff0c;导致无法进行下一步&#xff01…

【AI大模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

【MySQL】学习连接查询和案例演示

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-KOxr1rwR9cQTlydJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…