Ghidra逆向工具配置 MacOS 的启动台显示(Python)
写在前面
通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台.
不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API)
脚本
#!/opt/homebrew/bin/python3import os
import re
import subprocess as spbase_path = "/Applications"
app_name = "Ghidra"
exec_file = "ghidraRun"target_path = f"{base_path}/{app_name}.app/Contents"if not os.path.exists(target_path):print(f"{target_path} not exists, creating.")cmd = f"mkdir -p {target_path}/{{MacOS,Resources}}"os.system(cmd)""" target layout
.
└── Contents├── Info.plist├── MacOS│ └── ghidraRun -> /opt/homebrew/bin/ghidraRun└── Resources└── logo.icns
"""# 0. get meta Info
_, brew_prefix = sp.getstatusoutput("brew --prefix")
_, brew_info = sp.getstatusoutput(f"brew info {app_name}")
if brew_info.find("Not installed") != -1:print(f"{app_name} not installed, install...")os.system(f"brew install {app_name}")version_num = re.match(r"==>.*?(\d+\.\d+\.\d+)[\s,]", brew_info).group(1)
exec_dir = re.findall(r"==> Artifacts\s(.*?)\(Binary", brew_info)[0].strip()
installed_dir = exec_dir[: exec_dir.rfind("/")]
img_file = f"{installed_dir}/docs/images/GHIDRA_1.png"# 1. create soft link
src_exec = f"{brew_prefix}/bin/{exec_file}"
print(f"create soft link : {src_exec} => {target_path}/MacOS/{exec_file}")
os.system(f"ln -s {src_exec} {target_path}/MacOS/{exec_file}")# 2. create icon by using sips
print(f"resize png file {img_file}")
tmp_img_file = "tmp.png"
os.system(f"sips -z 512 512 {img_file} -o {target_path}/{tmp_img_file}")
icns_file = "logo.icns"
print(f"generate icns file {icns_file}")
os.system(f"sips -s format icns {target_path}/{tmp_img_file} -o {target_path}/Resources/{icns_file}"
)
os.system(f"rm {target_path}/{tmp_img_file}")# 3. create Info.plist
info_plist = f"""<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CFBundleName</key><string>{app_name}</string><key>CFBundleExecutable</key><string>{exec_file}</string><key>CFBundleIdentifier</key><string>org.{app_name}</string><key>CFBundleDisplayName</key><string>{app_name}</string><key>CFBundleVersion</key><string>{version_num}</string><key>CFBundleIconFile</key><string>{icns_file}</string>
</dict>
</plist>"""print(f"write info.plist to {target_path}/Info.plist")
with open(f"{target_path}/Info.plist", "w") as f:f.write(info_plist)
更新地址;
可以放在任意位置, 执行之后应该就会出现火龙的标志了:

相关文章:
Ghidra逆向工具配置 MacOS 的启动台显示(Python)
写在前面 通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台. 不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API) 脚本 #!/opt/homebrew/bin/python3import os import re import subprocess as sp…...
关于交换芯片调试 tx_delay rx_delay 的一点经验
按照官方的介绍,需要用示波器 测量数据和时钟 实质相位差在2ns 左右,但是由于时钟 125M ,数据方波需要的示波器带宽更高,所以普通示波器是没有办法的,测试变形很大,所以调试的方法如下: 1.根据官方手册,先在设备树里设置跟手册示例一样的,保证ping的时候可以ping通,…...
【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解
【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解前言MobleNet_V2讲解反向残差结构(Inverted Residuals)兴趣流形(Manifold of interest)线性瓶颈层…...
Spring Cloud 简介
1、简介 Spring CloudLevel up your Java code and explore what Spring can do for you.https://spring.io/projects/spring-cloud Spring Cloud 是一系列有序框架的集合,其主要的设施有,服务发现与注册,配置中心,消息总…...
Redis从入门到精通(二)- 入门篇
文章目录 0. 前言1. 入门篇[【入门篇】1.1 redis 基础数据类型详解和示例](https://icepip.blog.csdn.net/article/details/134438573)[【入门篇】1.2 Redis 客户端之 Jedis 详解和示例](https://icepip.blog.csdn.net/article/details/134440061)[【入门篇】1.3 redis客户端之…...
SpringDoc基础配置和集成OAuth2登录认证教程
本期内容 学会通过注解和Java代码的方式添加SpringDoc配置。在swagger-ui提供的页面上提供OAuth2登录认证,在集成Security的情况下便捷获取access_token并在请求时按照OAuth2规范携带。 为什么集成OAuth2登录认证? 现在大部分教程是在swagger-ui页面添…...
链路聚合-静态和动态区别
链路聚合之动静态聚合方式 链路聚合组是由一组相同速率、以全双工方式工作的网口组成。 1、动态聚合: 动态聚合对接的双方通过交互LACP(链路聚合控制协议)协议报文,来协商聚合对接。 优点:对接双方相互交互端口状态信息,使端口…...
发币成功,记录一下~
N年前就听说了这样一种说法——“一个熟练的区块链工程师,10分钟就可以发出一个新的币” 以前仅仅是有这么一个认识,但当时并不特别关注这个领域。 最近系统性学习中,今天尝试发币成功啦,记录一下~ 发在 Sepolia Tes…...
一个完备的手游地形实现方案
一、地形几何方案:Terrain 与 Mesh 1.1 目前手游主流地形几何方案分析 先不考虑 LOD 等优化手段,目前地形的几何方案选择有如下几种: 使用 Unity 自带的 Terrain使用 Unity 自带的 Terrain,但是等美术资产完成后使用工具转为 M…...
vite vue3配置axios
准备 参考 安装axios yarn add axios中文官网 src下新建request文件夹,该文件下新建index.ts import axios from axios; import { ElMessage } from element-plus;// const errorCodeType function (code: number): string { // let errMessage: string 未知…...
使用 C 语言快速排序将字符串按照 ASCII 码升序排列
示例代码: #include <stdio.h> #include <string.h> #include <stdlib.h>static Comp(const void *a, const void *b) {char *pa (char *)a;char *pb (char *)b;return strcmp(a, b); }int main(void) {char strs[3][10] { "bd", &q…...
自动化运维中间件架构概况
自动化运维中间件架构概况 kubernetesjenkins 安装k8s后 设置 Jenkins 任务: 在 Jenkins 中创建一个新的任务: 配置源代码管理:选择 Git,并提供 GitLab 仓库的 URL、凭据和分支信息。配置构建步骤:选择 Maven 构建,…...
fractional Brownian Motion driven stochastic integrals
See https://mathoverflow.net/questions/304366/fractional-brownian-motion-driven-stochastic-integrals...
c++模式之单例模式详解
c模式之单例模式详解 1.概念2.懒汉模式示例(缺点)3.懒汉模式线程安全4.饿汉式创建单例5.饿汉模式线程示例 1.概念 单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性. 使用单例两个原因:…...
【gpts】学算法题[缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/)
给出你的题解 (https://leetcode.cn/problems/first-missing-positive/) public class Solution { public int firstMissingPositive(int[] nums) {int len nums.length;for (int i 0; i < len; i) {while (nums[i] > 0 && nums[i] < len && nums…...
车牌识别 支持12种中文车牌类型 车牌数据集下载
开源代码 如果觉得有用,不妨给个Star⭐️🌟支持一下吧~ 谢谢! Acknowledgments & Contact 1.WeChat ID: cbp931126 2.QQ Group:517671804 加微信(备注:PlateAlgorithm),进讨论群可以获得10G大小的车牌检测和识…...
Servlet---上传文件
文章目录 上传文件的方法上传文件的示例前端代码示例后端代码示例 上传文件的方法 上传文件的示例 前端代码示例 <body><form action"upload" method"post" enctype"multipart/form-data"><input type"file" name&qu…...
量子计算+物流!“最后一英里”配送难题Unisys成功实时决策
(图片来源:网络) 此前,供应链行业一直致力于手工操作,严重依赖于纸质系统。后来随着客户需求的不断变化,这种传统方法逐渐显出不足之处。供应链行业正在迅速转向现代化,采用自动化和数据驱动的…...
2023年【四川省安全员A证】复审考试及四川省安全员A证考试试题
题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员A证复审考试根据新四川省安全员A证考试大纲要求,安全生产模拟考试一点通将四川省安全员A证模拟考试试题进行汇编,组成一套四川省安全员A证全真模拟考试试题,学员可通过…...
C++刷题 -- 二分查找
C刷题 – 二分查找 文章目录 C刷题 -- 二分查找一、原理二、例题1.二分查找2.使用二分查找确定target左右边界3.x的平方根 一、原理 条件:数组为有序数组,数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
