BurpSuite-collections 实战:在 Mac 下把 Burp Suite 封装成 Dock 一键启动的 App

原创2026-10-03 20:57:491,439 阅读
文章标签:网络安全渗透测试应用安全

BurpSuite-collections 实战:在 Mac 下把 Burp Suite 封装成 Dock 一键启动的 App

本文以 BurpSuite-collections 仓库中的 mac_app.md 为核心,完整讲解如何在 macOS 上将 Burp Suite 及其独立 JDK、Loader 封装成一个位于 Dock/启动台的应用程序:通过两个 Shell 启动脚本实现「激活」与「启动」分离,再用 macOS 自带的「自动操作(Automator)」将启动脚本包装成 .app,最后用 .icns 图标完成美化。读完本文,你将能独立复刻一套不依赖系统 Java 版本、双击即用的 Burp Suite 桌面应用,并理解其中 -Xmx、--add-opens 等 JVM 关键参数的作用。

一、为什么需要把 Burp Suite 封装成 Mac App

Burp Suite 的官方安装方式通常是命令行 java -jar burpsuite_pro_v*.jar 启动,这在 Mac 上有几个痛点:

  • 依赖系统全局 Java 环境,版本一旦被其他软件(如 Homebrew 更新)改动,Burp 可能无法启动;
  • 每次都要手动打开终端、敲命令,体验割裂;
  • Dock 上没有图标入口,无法像普通 macOS 应用一样「一键启动」。

mac_app.md 给出的方案核心思路是:把 JDK、Burp 本体、Loader/Keygen 全部放到同一个目录中,用相对路径的 Shell 脚本启动,再用 Automator 把脚本包装成 .app。这样 Burp 变成「自带运行时」的独立应用,放 Dock 里一点即开,与仓库中 Windows 侧通过 创建桌面快捷方式.bat 生成桌面快捷方式的做法异曲同工,只是平台实现不同。

二、目录结构与文件职责

原文档给出的目录结构如下,所有文件放在同一个文件夹(下文称为「Burp 目录」):

├── BurpLoaderKeygen.jar
├── BurpSuite.icns
├── BurpSuiteLoader.jar
├── active_burp.sh
├── burpsuite_pro_v2021.12.1.jar
├── jdk-17.0.1.jdk
└── start_burp.sh

各文件作用:

文件 作用
BurpLoaderKeygen.jar、BurpSuiteLoader.jar 激活与加载工具(Loader 通过 -javaagent 方式伴随 Burp 启动)
BurpSuite.icns macOS 应用图标,制作成 App 后用于替换默认图标
jdk-17.0.1.jdk 独立 JDK 目录。脚本用相对位置引用其中的 java,不依赖系统 Java 版本,实现独立运行
burpsuite_pro_v2021.12.1.jar Burp Suite 本体(实际 jar 文件名中版本号可泛匹配)
active_burp.sh 激活脚本,首次激活时运行
start_burp.sh 启动脚本,也是制作成 App 后直接执行的部分

说明:本仓库 README 已声明不再提供破解/激活相关文件(相关内容仅作技术研究),本文只讲解脚本结构与应用封装方法;激活环节原文档明确「不做说明」,需读者自行处理授权。

三、激活脚本 active_burp.sh 详解

#!/usr/bin/env bash
# active burp first

SHELL_FOLDER=$(cd `dirname $0`; pwd)
jdk_path=${SHELL_FOLDER}"/jdk-*.jdk/Contents/Home/bin/java"
${jdk_path} -Xdock:icon=${SHELL_FOLDER}/BurpSuite.icns -jar ${SHELL_FOLDER}/BurpSuiteLoader.jar

关键点:

  1. SHELL_FOLDER 动态定位:$(cd dirname $0; pwd) 让脚本无论从哪里被调用,都能找到自己所在目录,从而保证后续所有相对路径(jdk、jar、icns)都正确解析。这是整个方案「可移动、可复制」的根基。
  2. JDK 路径泛匹配:${SHELL_FOLDER}"/jdk-*.jdk/Contents/Home/bin/java" 使用通配符匹配 jdk-*,只要目录里只有一个 JDK 就能命中。原文档特别提醒:如果你有多个 jdk 目录,请自行修改为精确路径。
  3. -Xdock:icon:macOS 专属 JVM 参数,指定启动时 Dock 上显示的图标文件(BurpSuite.icns)。
  4. 激活动作:通过 Loader 完成授权后,正常启动走 start_burp.sh,激活脚本不需要反复执行。

四、启动脚本 start_burp.sh 与 JVM 参数全解析

#!/usr/bin/env bash

# start burp en after licensed
SHELL_FOLDER=$(cd `dirname $0`; pwd)
jdk_path=${SHELL_FOLDER}"/jdk-*.jdk/Contents/Home/bin/java"
${jdk_path} -Xdock:icon=${SHELL_FOLDER}/BurpSuite.icns -Dfile.encoding=utf-8 -noverify -javaagent:${SHELL_FOLDER}/BurpSuiteLoader.jar -jar -Xmx8G --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED ${SHELL_FOLDER}/burpsuite_pro_v202*.jar

原文档列出的四点注意事项(务必逐条核对):

第一,jdk 目录与激活脚本相同,采用泛匹配,多 JDK 时自行修改。 第二,Burp 版本号同样泛匹配:burpsuite_pro_v202*.jar,参考上面目录的实际文件名,有需要自行修改。 第三,-Xmx8G 表示设置堆内存最大值为 8G,可按机器内存调整,参数含义见下方 JVM 内存参数表。 第四,--add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED 是针对高版本(JDK 17+)必须增加的参数,用于放开模块强封装下的反射访问;低版本 JDK 可以去掉,否则启动 Burp 会报错。

4.1 各 JVM 参数作用说明

参数 作用
-Xdock:icon=... macOS 专用,指定 Dock 栏图标
-Dfile.encoding=utf-8 指定文件/默认字符编码为 UTF-8,避免中文路径或界面乱码(仓库 Windows 启动脚本 Burp_start.bat 中同样使用了该参数)
-noverify 关闭字节码验证,Loader 场景下配合使用
-javaagent:${SHELL_FOLDER}/BurpSuiteLoader.jar 以 Java Agent 方式注入 Loader,实现授权加载
-jar ${SHELL_FOLDER}/burpsuite_pro_v202*.jar 指定运行的主 jar(Burp 本体)
-Xmx8G 堆内存最大值 8G
--add-opens=... JDK 17+ 必需,放开 java.desktop/javax.swing、java.base/java.lang 模块的封装限制

技术提示(基于 JVM 标准行为):-Xmx、--add-opens 等属于 VM 选项,严格来说应放在 -jar 之前才能被 JVM 正确解析;原文档脚本中 -Xmx8G 位于 -jar 之后,若在实际运行中发现堆大小未生效,可将参数调整到 -jar 前,例如:

${jdk_path} -Xdock:icon=... -Dfile.encoding=utf-8 -noverify -Xmx8G -javaagent:${SHELL_FOLDER}/BurpSuiteLoader.jar --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED -jar ${SHELL_FOLDER}/burpsuite_pro_v202*.jar

4.2 JVM 内存分配参数速查表(原文档完整保留)

下表为 -Xmx 系列相关参数速查,便于按机器配置调整内存:

配置 说明
-Xms 设置初始堆内存大小
-Xmx 设置堆内存的最大值
-Xss 设置栈内存的大小
-XX:MinHeapFreeRatio 设置堆内存的最小空闲比例
-XX:MaxHeapFreeRatio 设置堆内存的最大空闲比例
-XX:NewSize 设置新生代的最小内存值
-XX:NewMaxSize 设置新生代的最大内存值
-XX:NewRatio 设置年轻代(包括 Eden 和两个 Survivor 区)与年老代的比值(除去持久代)
-XX:SurviorRatio 设置 Eden 区和 Survivor 区的比例
-XX:MaxPermSize 设置持久代的最大值
-XX:PermSize 设置持久代的最小值
-XX:TargetSurvivorRatio 设置 survivor 区的可使用率

实际调优建议:-Xmx8G 适合内存充裕的机器(大项目扫描时避免频繁 Full GC);内存较小的机器可下调至 -Xmx4G。若同时显式设置 -Xms,建议与 -Xmx 相等以省去扩容开销。

五、用 Automator 制作 Dock 应用(核心步骤)

macOS 自带「自动操作(automator.app)」即可把启动脚本包装成 .app,无需任何第三方打包工具。完整步骤如下:

  1. 打开自动操作:command + 空格 搜索「自动操作 / Automator」打开;
  2. 新建文稿:点击左下角的「新建文稿」;
  3. 选择模板类型:在文稿类型列表中选择「应用程序(Application)」;
  4. 拖入运行 Shell 脚本:在左侧资源库中找到「运行 Shell 脚本(Run Shell Script)」,拖到右侧流程区域;
  5. 填写启动命令:在脚本框中填写:
    cd /path/to/your/burpsuite && bash start_burp.sh
    
    注意:将 /path/to/your/burpsuite 替换为你实际存放 Burp 目录的路径;
  6. 测试运行:点击右上角「运行」按钮,确认 Burp Suite 能正常打开;
  7. 保存应用:测试通过后 command + s 保存。建议命名 BurpSuite,Automator 会自动生成 BurpSuite.app。

完成之后,就可以在「启动台 LaunchPad」或「访达 → 应用程序」目录里找到你的 Burp Suite,直接点击即可启动,也可以把它拖到 Dock 上实现一键启动。

说明:cd /path/to/your/burpsuite && bash start_burp.sh 先切换到 Burp 目录再执行脚本,是为了配合脚本内 SHELL_FOLDER 的相对路径定位,保证 JDK、jar、icns 全部正确找到。

六、美化:替换 Burp 应用图标

Automator 生成的 App 默认是机器人图标,替换方法:

  1. 在「访达」的「应用程序」目录中找到刚做好的 Burp Suite App;
  2. 右键选择「显示简介」;
  3. 将 BurpSuite.icns 文件拖到简介窗口左上角(应用名称左边)的图标位置;
  4. 松开鼠标即生效,Dock 与启动台中的图标会同步更新。

这与仓库在 Windows 侧通过 创建桌面快捷方式.bat 中 set icon=%~dp0/img/Goescat-Macaron-Burp-suite.ico 指定快捷方式图标是同一思路,只是 Mac 走的是 .icns 拖放替换,Windows 走的是 .ico 路径引用。

七、跨平台对照:仓库中的 Windows 启动脚本

本项目仓库根目录同时提供了 Windows 侧的启动与快捷方式脚本,可与本文 Mac 方案互相印证同一套 JVM 启动参数的跨平台写法:

  • Burp_start.bat(汉化版启动):start javaw -Dfile.encoding=utf-8 -javaagent:%~dp0\BurpSuiteCn.jar -Xbootclasspath/p:%~dp0\burp-loader-keygen.jar -Xmx1024m -jar %~dp0\burpsuite_pro_v1.7.37.jar
  • Burp_start_en.bat(英文版启动):无汉化 javaagent,其余参数一致
  • 创建桌面快捷方式.bat:通过 VBS 生成桌面 .lnk 快捷方式,并指定工作目录与图标

对照可见三个共性设计:路径都用脚本自身所在目录动态定位(Mac 用 $(cd dirname $0; pwd),Windows 用 %~dp0);字符编码统一指定 -Dfile.encoding=utf-8;Loader/汉化包都通过 -javaagent 注入。在 Mac 上运行时,把 %~dp0 换成 SHELL_FOLDER、把 javaw 换成独立 JDK 的 java 即可移植同一套启动参数。这也是为什么 mac_app.md 强调使用「相对位置的 JDK」——与 Windows 脚本依赖 %~dp0 一样,都是为了保证整个 Burp 目录可以被整体移动或拷贝而不失效。

八、常见问题与注意事项

  1. JDK 目录多个导致泛匹配失败:jdk-*.jdk 通配到多个目录时,脚本会因路径歧义失败,此时应把泛匹配改为精确路径,如 ${SHELL_FOLDER}/jdk-17.0.1.jdk/Contents/Home/bin/java。
  2. JDK 版本过旧报错:--add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED 是为 JDK 17+ 准备的;如果你的 JDK 版本较低却添加了这两个参数,同样可能报错,应按版本增减。
  3. 内存不足:-Xmx8G 是上限,若 Mac 物理内存较小或同时运行多个容器/应用,建议下调,避免频繁触发 OOM。
  4. App 首次打开提示来源不明:Automator 生成的 App 属本地应用,若系统提示「无法验证开发者」,可在「系统设置 → 隐私与安全性」中允许打开,或右键应用选择「打开」。
  5. 激活与启动分离:active_burp.sh 只在授权阶段需要执行,日常使用直接运行 start_burp.sh(或打包后的 App),不要每次都跑激活脚本。
  6. 编码问题:脚本路径或目录名含中文时,-Dfile.encoding=utf-8 能避免大部分乱码;若仍异常,可检查终端默认 locale。

通过以上方案,你将获得一个「自带 JDK、双击即启、带自定义图标」的 Burp Suite 独立应用。相关的启动脚本与 Windows 侧对照脚本均已收录在 BurpSuite-collections 仓库根目录(mac_app.md、Burp_start.bat、Burp_start_en.bat、创建桌面快捷方式.bat),可对照研读。

登录后查看全文
BurpSuite-collections