就是想把项目里部分核心代码封装起来,不能直接查看源码,然后把项目源码交付给别人,别人可以类似引用 java jar 包方式本地编译开发和打包。 并不需要很高级别的代码保护,只是想不能直接简单查看部分源码
![]() | 1 nekoneko 49 天前 不能, 没有. java 也没有方法不让看源码. |
![]() | 3 darkway 49 天前 可以把 go 文件打包成 zip ,然后后缀改成 jar |
4 touchwithe 49 天前 via iPhone 编译成.lib 动态链接库 |
![]() | 5 danbai PRO 编译成 lib 库或者 wasm |
![]() | 6 doraemonki 49 天前 理论上可以提供混淆后的源码,像这个库一样 https://github.com/unidoc/unipdf |
![]() | 7 v1 &nbp; 48 天前 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 此时没有任何输出 |
![]() | 8 seers 48 天前 via iPhone dll 或者 so 呗,动态链接库,还能混淆下 |
![]() | 9 ChunkitAu 48 天前 https://github.com/burrowers/garble 目前项目在使用该工具混淆代码。 |
![]() | 10 LitterGopher 48 天前 1. 以的方式提供用(.dll .a .so .dylib) 2. 以 RPC 的方式提供用(本地服或程服皆可) 3. 代混淆 |
![]() | 11 gongym 48 天前 你可以试试搜索 go plugin 模式,可以导出库然后动态引入调用 |
12 azraeljack 48 天前 go plugin 就行了,核心模块封装成 plugin 然后加载调用就行了。不过环境坑会有点多,比如 glibc 版本不一致可能会导致跑不起来之类的。建议弄到容器里跑。 |
13 visper 46 天前 jar 包不是直接 jd 反编译看源码么? |
14 bli22ard 46 天前 java 为什么可以打 jar 包供其他程序调用,因为 Java 跨平台,你只要一个 jar 包,就能在其他所有平台使用。但是 go 不一样,编译产物是和平台完全对应的,所以,你不能为所有平台提供同一个 go 的编译产物,而要为所有平台都提供编译产物,然后就是链接阶段的动态链接还静态链接了。 |
15 zhengfan2016 46 天前 via Android @doraemonki 居然还有这种,这种要是国人写的 v2 和 issue 早被喷烂了吧 |
![]() | 16 AkinoKaedeChan 46 天前 如果考虑跨平台就 WASM |