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://www.mzph.cn/news/694668.shtml

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

相关文章

【LeetCode】509. 斐波那契数(简单)——代码随想录算法训练营Day38

题目链接:509. 斐波那契数 题目描述 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n -…

数字新纪元:探索Web3对社会的影响

在当今数字化时代,技术的进步已经成为社会发展的驱动力之一。而随着区块链技术的快速发展,我们正处在一个即将到来的数字新纪元——Web3时代。这一新时代不仅仅是技术的迭代升级,更是对传统社会模式的颠覆和重构。本文将深入探讨Web3对社会的…

当前主流开发语言有哪些:了解其特性、应用与示例

随着技术飞速发展,编程语言的丰富多样性为开发者提供了广泛的选择。每种语言都有其适用的场景和独特的特性。本文将综合探讨目前市场上最流行、最多人使用的几种主流开发语言,包括它们的特点、典型应用场景以及简单示例代码。 一、Python 特点 Python…

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如,可以声明一个指针变量并将其指向数组的第一个元素,然…

Github代码仓库SSH配置流程

作者: Herman Ye Auromix 测试环境: Ubuntu20.04 更新日期: 2024/02/21 注1: Auromix 是一个机器人爱好者开源组织。 注2: 由于笔者水平有限,以下内容可能存在事实性错误。 相关背景 在为Github代码仓库配…

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动 文章目录 Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动遮罩效果硬边溶解光边溶解UV扰动 遮罩效果 效果展示: 思路与代码&#xff1…

消息队列-RabbitMQ:死信队列

十五、死信队列 1、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 que…

postgres

1.下载postgres 解压后 bin\initdb -D data -U postgres -A password -E utf8 -W // 初始化设置密码这里的账号是postgres pg_ctl.exe register -N "PostgreSQL" -D "F:/pgsql/data" //windows 本地生成服务 pg_ctl -D F:/pgsql/data -l F:/pgsql/logs/pg…

用idea debug时,怎么在某个map对象中再加个key value

实现方式 在用idea 进行 debug时,我们经常喜欢对某行代码打断点,然后对某个对象重新设置值,以快速地实现我们预期想覆盖的场景。通常的方式是用鼠标右键点击某个对象,然后选择Set value进行设置值,但是如果想在map中添…

鸿蒙原生应用元服务实战-发布时多设备选择注意事项

在可公开可获取DevEco Studio最新版本,Stage模型ArkTSAPI9开发元服务HarmonyOS4现不支持平板等;但是元服务在发布时是可选平板、智慧屏电视设备发布。 如果开发人员与上架运营人员沟通不充分的话,上架运营人员可能会选择多设备发布,试一试&am…

bugku3

xxx二手交易市场 进去是这样讴歌乱进的页面 查看了一下源代码也没什么 先随便注册一个账号 然后登录 随便看了看,发现可以修改头像 上传文件 随便上传了一个图片 发现他对图片进行了base64加密 解密后得到是 data:image/jpeg;base64 这里重新修改类型为php&a…

【buuctf--我有一只马里奥】

这是一道关于 ntfs 流查看的题目运行 exe 后会出来一个 1.txt 文件 在 exe 和 1.txt 文件目录下打开终端,输入 notepad 1.txt:flag.txt就可以看到答案了。 这么做的原因见BUUCTF misc 专题(53)[SWPU2019]我有一只马里奥_ntfs flag.txt 马里…

OpenAI新推出的Sora是什么?如何注册使用?

2024年2月16号,OpenAI全新发布文本视频模型Sora,可以通过指令生成特定的视频内容,这对于内容营销、广告宣传、教育教学等行业都将来带来巨大的机遇与挑战。 相信许多人跟小编一样,对此新兴产品跃跃欲试,那么应该如何注…

柔顺控制笔记

参资料: 【1】https://zhuanlan.zhihu.com/p/620918453 【2】https://blog.csdn.net/a735148617/article/details/108564836 【3】https://zhuanlan.zhihu.com/p/126338809 【4】机器人与环境间力_位置控制技术研究与应用_李正义 【5】水下机械臂建模及柔顺控制方法…

编程笔记 Golang基础 014 数据类型概述

编程笔记 Golang基础 014 数据类型概述 一、基本数据类型二、复合数据类型三、引用类型四、特殊类型小结 Go 语言的数据类型系统涵盖了基本数据类型、复合数据类型以及引用类型。 下面将对这些类型进行详细说明: 一、基本数据类型 布尔型 (bool):表示逻…

Javascript中var和let之间的区别

文章目录 一.变量提升(声)二.let和var的区别 区别: 1、var有变量提升,而let没有; 2、let不允许在相同的作用域下重复声明,而var允许; 3、let没有暂时性死区问题; 4、let创建的全局变量没有给window设置对应…

不同种类遥感图像汇总 !!

文章目录 前言 1、可见光遥感图像 2、全色遥感图像 3、多光谱遥感图像 4、高光谱遥感图像 5、红外遥感图像 6、激光雷达图像 7、合成孔径雷达遥感图像 前言 遥感技术是从远距离感知目标反射或自身辐射的电磁波、可见光、红外线,对目标进行探测和识别的技术。遥感卫…

懒汉单例设计模式与饿汉单例设计模式

单例模式即一个类确保只有一个对象,主要用于避免浪费内存 1.饿汉单例设计模式:拿到对象时,对象就早已经创建好了 public class A { private static A a new A(); private A(){ } public static A getObject(){ return a;} } 写法: 把类的构造器私有 在类中自己创建一个对…

【IOS】oc中property属性值详解

1. atomic与nonatomic atomic:原子属性确保属性的读取和写入操作在多线程环境中是线程安全的。这意味着,当一个线程正在读取或写入属性时,其他线程不能同时访问该属性。虽然这提供了线程安全性,但它也引入了性能开销,…

【JAVA高级面试题】运用锁机制实现一个自定义的阻塞队列

文章目录 前言实战演示写在最后 前言 前几天看见一个高级Java面试题,我觉得很有代表意义。既考察了面试者的基本锁机制运用,也了解了阻塞队列的产生实现原理。先分享出来,以供鉴赏。 面试题:实现一个自定义的阻塞队列&#xff0c…