就是想把项目里部分核心代码封装起来,不能直接查看源码,然后把项目源码交付给别人,别人可以类似引用 java jar 包方式本地编译开发和打包。 并不需要很高级别的代码保护,只是想不能直接简单查看部分源码
就是想把项目里部分核心代码封装起来,不能直接查看源码,然后把项目源码交付给别人,别人可以类似引用 java jar 包方式本地编译开发和打包。 并不需要很高级别的代码保护,只是想不能直接简单查看部分源码
|
nekonekoAug 22, 2025
1
不能, 没有.
java 也没有方法不让看源码. |
|
darkwayAug 22, 2025
3
可以把 go 文件打包成 zip ,然后后缀改成 jar
|
|
touchwitheAug 22, 2025 via iPhone
4
编译成.lib 动态链接库
|
|
5
编译成 lib 库或者 wasm
|
|
doraemonkiAug 22, 2025
6
理论上可以提供混淆后的源码,像这个库一样 https://github.com/unidoc/unipdf
|
|
v1Aug 22, 2025
7
jar 在 go 里面对应的是 package (.a 后缀) 静态链接
``` // print.go package staticpkg import "fmt" func Hello() { fmt.Println("hello") } //main.go package main import ( "staticpkg" ) func main() { staticpkg.Hello() } ``` 使用 tool 的 compile 命令编译 go tool compile -o print.a print.go 使用 tool 的 link 命令生成可执行文件 go tool link -o main.exe -L [print.a_dir] main.go 会生成一个 main.exe 程序,直接运行会输出 hello 如果直接 go run main.go 此时没有任何输出 |
|
seersAug 23, 2025 via iPhone
8
dll 或者 so 呗,动态链接库,还能混淆下
|
|
ChunkitAuAug 23, 2025
9
https://github.com/burrowers/garble
目前项目在使用该工具混淆代码。 |
|
LitterGopherAug 23, 2025
10
1. 以動態庫的方式提供調用(.dll .a .so .dylib)
2. 以 RPC 的方式提供調用(本地服務或遠程服務皆可) 3. 代碼混淆 |
|
gongymAug 23, 2025
11
你可以试试搜索 go plugin 模式,可以导出库然后动态引入调用
|
|
azraeljackAug 23, 2025
12
go plugin 就行了,核心模块封装成 plugin 然后加载调用就行了。不过环境坑会有点多,比如 glibc 版本不一致可能会导致跑不起来之类的。建议弄到容器里跑。
|
|
visperAug 25, 2025
13
jar 包不是直接 jd 反编译看源码么?
|
|
bli22ardAug 25, 2025
14
java 为什么可以打 jar 包供其他程序调用,因为 Java 跨平台,你只要一个 jar 包,就能在其他所有平台使用。但是 go 不一样,编译产物是和平台完全对应的,所以,你不能为所有平台提供同一个 go 的编译产物,而要为所有平台都提供编译产物,然后就是链接阶段的动态链接还是静态链接了。
|
|
zhengfan2016Aug 25, 2025 via Android
15
@doraemonki 居然还有这种,这种要是国人写的 v2 和 issue 早被喷烂了吧
|
|
AkinoKaedeChanAug 25, 2025
16
如果考虑跨平台就 WASM
|