Mac osX武器库之JAVA封装APP
前言
在 Mac 上运行 jar 文件(例如 Burp哥斯拉冰蝎等)每次都需要
java -jar xxxx.jar
(当然特定的程序可能还需要添加一些java的参数)
感觉太繁琐了。因此,想打包成 app 方便使用。成功打包效果图,这里给大家提供打包出来的 app。
可以直接从GitHub获取:https://github.com/NineRiverSec/Mac_Tools 各位师傅点个星星吧!
那么转osX 目前来说一共是分为两种 :
第一种:有源码(打包的应用较大因为携带JDK)
第二种:无源码:只有JAR包(可自己选择是否携带JDK)
转osX(有源码)
首先
随便git clone 一个有GUI的JAVA源码,然后打开教育优惠的IDEA 按照如下打开后进行设置
生成APP
然后进行构建工件
会在当前目录下生成一个新的文件夹 为 out/xxx(app的名字)/bundles/
就会出现 这个软件的APP了
注意此方法会打包jdk环境到app里面体积较大!!!!!!
转osX(无源码)
安装
#获取
git clone https://github.com/Jorl17/jar2app
cd jar2app
chmod +x install.sh uninstall.sh
#安装为全局命令
sudo ./install.sh /usr/local/bin
#卸载命令
./uninstall.sh /usr/local/bin
使用
#导出到文件夹
jar2app test.jar out
#导出app
jar2app test.jar out.App
jar2app test.jar test/out.App
#设置icon
jar2app test.jar -i icon.icns
jar2app test.jar -i /awesomeicons/icon.icns
#设置名称
jar2app test.jar -n "Amazing Application" out.app
#绑定jre
jar2app test.jar -r /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk
jar2app test.jar -r /compressedJDKs/jdk1.8.0_40.jdk.zip
#完整设置
jar2app test.jar -n "Amazing Application" out.app -i /awesomeicons/icon.icns
jar2app test.jar -n "Amazing Application" out.app -i /awesomeicons/icon.icns -r /compressedJDKs/jdk1.8.0_40.jdk.zip
#带jdr、落款,设置菜单名,进行打包
jar2app df_home.jar -n "df_home" app/df_home.app -i /Users/df/Pictures/logo/df_logo/Untitled.icns -c "Copyright © 2020 df Inc." -r /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk
jar2app /Users/df/Documents/发布/df_home.jar -n "df_home" /Users/df/Documents/发布/app/df_home.app -i /Users/df/Pictures/logo/df_logo/Untitled.icns -c "Copyright © 2020 df Inc."
#带落款,设置菜单名,进行打包
jar2app df_home.jar -n "df_home" app/df_home_0.app -i /Users/df/Pictures/logo/df_logo/Untitled.icns -c "Copyright © 2020 df Inc."
-
参考
参数
-n : 就是程序运行时,在菜单栏上的名称
-i : 转换成app之后,应用的logo,图片格式要使用.icns 后缀,这里提供一下png转.icns的url:https://iconverticons.com/online/
-b : 可有可无的东西,这个是真的可有可无,就是一软件基础信息
-v : 可有可无的东西,这个是真的可有可无,就是一软件基础信息
-s : 可有可无的东西,这个是真的可有可无,就是一软件基础信息
-m : 这个可以有,有了它软件启动能快一秒,没了它,app应用得去jar里面找main入口函数,所以,这个可以有,长生不老时间多的忽略这个参数。至于main入口在哪里看,用压缩包方式打开jar文件,里面找到META-INF文件下的文件打开看看就好,可以看到main主函数入口信息的。
-o : 就是让这个程序执行的时候,在标题栏有个菜单可以显示
使其支持中文名的文件
#sudo nano /usr/local/bin/jar2app
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
app中调用
String.format(
"/usr/local/bin/jar2app %s -n "%s★★★E-mail:[email protected]" %s/%s.app -i %s -c "%s"",
textField.getText(), textField_2.getText(), textField_4.getText(), textField_2.getText(),
textField_1.getText(), textField_3.getText())
封装DMG安装包
quickpkg可以快速方便的把app应用打包成pkg安装包,安装quickpkg:
git clone https://github.com/scriptingosx/quickpkg.git
cd quickpkg
1.把app打包成pkg
./quickpkg /Users/csjar/xxxx.app --output /Users/csjar/x x x x.pkg
不加--output
参数指定输出路径,默认会在quickpkg目录下生成。
2.把app打包成dmg
(1)打开磁盘工具
,选择文件
-> 新建映像
-> 空白映像
(2)填写映像相关信息,其中大小需要设置的比app程序大一些。
(3)进入dmg文件,在此处打开命令行,创建Applications链接。
ln -s /Applications/ Applications
(4)右键dmg文件,”查看显示选项”中设置背景图片。
总结
这里面踩了无数个坑,反反复复好长一段时间才解决。
工具记得多读手册,例如在这里用的 jar2app 直接在 GitHub 上面多读手册,基本问题都能解决;
实现同样功能的不同函数,在使用时需要按照需求进行使用。例如这里的 File ().exists () 与 File.getAbsoluteFile (),不同函数名总有会不一样的地方,直接平时只是为了实现功能而忽略其本质,有时候出现问题的时候需要深入了解其本质;
Win用户可以搜索Jar2exe 来对exe进行封包。
遇到各种问题可以添加运营微信 进行沟通解决或着在GitHub上提Issues。
扫描二维码获取
更多精彩
九河下稍的安全笔记
联系我们
原文始发于微信公众号(九河下稍的安全笔记):Mac osX武器库之JAVA封装APP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论