脑洞大开:用Go来保护我们的Jar程序

小埋酱 · · 1758 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

反编译带来的困扰

对于一个开发给自己组织内部用的程序,这么做其实是非常多此一举的,但是对于商业软件来说,这又显得有必要,软件行业现在的竞争非常的激烈,大家可以把竞争对手的程序搞过来反编译一下,轻易的知道对手基于什么软件来做,或者能够比较容易知道实现原理,然后。。抄抄抄,换个名字,完事,一个全新的产品就出来了。对于Java来说这个问题就更加明显了。虽然有类似ZKM这样的商业软件来进行混码,但是混码后只要你有耐心,还是有很大机会能读懂的

在这里不得不吐槽一下,ZKM实在太难用了

怎么保护我们的Jar文件

这里我们只讨论胖胖的Jar包(就是那种全部都打在一起直接java -jar就能跑的包,例如Spring Boot打出来的)。
对于防止反编译来说,Golang这类打包出来就是二进制的方式其实就非常适合,打包成二进制之后的程序反编译难度比起一个普通的Jar来说难度会高很多。那是不是把Jar包放到Go里面打包就可以了呢?恩,是的。我们可以通过Golang的一些静态资源库来进行操作,把Jar包作为静态文件来处理。binary-go就是其中一个合适的选择

go get -u github.com/samuelngs/binary-go

安装完之后,我们执行

binary -dir ./[静态文件位置] -out binary

就会产生出许多的go文件,默认它是以20M为一个进行分拆的。binary也提供了方法帮我们把这个包重新还原回来。不过接下来碰到一个问题,虽然能还原成二进制流,不过java没法从二进制启动啊。所以这里需要用一些小技巧了,每次启动的时候把我们的jar包随机放到一个目录,每次启动的时候这个jar包的名字也随机给。完成启动之后就把这个随机生成的jar包干掉。这样一系列操作之后,一个伪装成Go的胖胖的Jar也就出来了


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:小埋酱

查看原文:脑洞大开:用Go来保护我们的Jar程序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1758 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传