Golang Go语言联网程序如何防破解

发布于 1周前 作者 wuwangju 来自 Go语言

Golang Go语言联网程序如何防破解

看到 https://www.v2ex.com/t/696622 的帖子,情况有点不同所以另开一帖问一下……

刚好自己有个小项目想写个授权,自带联网属性

目前思路是启动时服务端带 sign 验证,每天不定时后台验证,失败就关闭前台的关键功能(当然不是马上关闭,防止授权服务器炸了所有都用不了)

授权过程不能放在用户操作过程中进行,只能后台。

关键功能无法放在服务端运行。

如何提高破解的难度?求大佬解答

不会做的太复杂,真的防也防不住

解决后会把方案和思路放在附言里。


更多关于Golang Go语言联网程序如何防破解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

15 回复

对称加密 生成一个 license 文件, 每个操作里面写一个 validate

更多关于Golang Go语言联网程序如何防破解的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


靠不没写完发出去了,流一个 validate 注释,批量把 validate 替换成实现代码,这尼玛就算破解也要一个个去改吧

#1 感谢大佬,回头研究一下

调动态链接库,然后上数字签名,程序、链接库双向校验签名。

程序抽离出关键数据至服务端,然后加上登录,服务端根据 IP 和设备的硬件 ID 来做风控。

程序也可以独立成多个,然后服务端下载后由程序调用执行,通过风控来处理。

用户登录之后才能下载程序,用户下载的程序自带特征码,随便破解,你看到破解版的之后看看特征码是哪个用户的就行了。

#4 感谢,不过这个有点复杂。。目前水平好像还做不到这样子。而且小项目只是想借这个学习一下防破解的思路,以后说不定会用到

都是一样的代码,编译器不会直接帮你优化成一个?

这防那防 还怎么写好代码 大厂都防不住 个人的 防菜逼不防大佬

所以想一个简易的授权方式

对付联网验证的方法,常用的要么就是直接跳过验证的代码,要么就是做一个假的服务器进行应答
对付这两种方法,需要做到:
1. 部分计算逻辑得放到服务器实现,确保程序需要连接真正的服务器,计算之前服务器可以做授权验证
2. 验证时引入随机数和时间因素,防止重放攻击

时间戳+你的密钥,算个 md5 之类的放在 Http Header 请求里面,然后比如每调用关键功能 100 次,就请求一下服务端,看看授权情况,授权出错就 +1,出错 3 次关服务。我觉得这样就基本可以了。

当然你密钥要处理一下,不能直接写成文本,否则 IDA 一看就能看出来,好歹把字符串切分一下,在 Base64 一下,一般情况就足够用了

#10
#11
目前看来这样的思路是较为简洁和实用的

很多人编译 Go 程序时没注意过 go buildmode,其中一个比较特殊的 buildmode=pie,可以生成地址无关的二进制文件,进而结合 ASLR 技术加强自身安全性。这对 Go 自身的内存安全机制来说,是个锦上添花的特性。配图中的内容把这个特性的好处解释的挺清楚了。

其实这个 buildmode 还有一个鲜为人知的效果:在用此模式编译出的二进制文件面前,当前业界公开的 Go binary parse script/plugin for disassemblers 就跪了,分析不了

来自: https://m.weibo.cn/1811826364/4530166044824131

市面上有一些卖加密的厂商可以尝试下,我买过一把硬件锁,类似于银行那种 usb-key 一把几十块吧

在Golang(Go语言)中,保护联网程序免受破解是一项综合性任务,涉及代码混淆、访问控制、以及通信加密等多个方面。以下是一些关键策略:

  1. 代码混淆:使用工具如gohidego-obfuscate对Go代码进行混淆,增加逆向工程的难度。这虽不能完全防止破解,但能显著提高门槛。

  2. 访问控制:实施严格的访问控制策略,如基于IP白名单的访问限制,以及使用API密钥或令牌进行身份验证。确保这些密钥在存储和传输过程中加密处理。

  3. 通信加密:使用TLS/SSL对客户端与服务器之间的通信进行加密,确保数据在传输过程中的安全性。配置正确的证书和密钥管理策略。

  4. 动态内容校验:在服务器端实现动态内容校验,如检查请求参数的签名或哈希值,确保请求未被篡改。

  5. 日志与监控:建立完善的日志记录和异常监控系统,及时发现并响应异常访问模式,如频繁的尝试破解行为。

  6. 定期更新与修补:保持Go语言运行时环境和依赖库的更新,及时应用安全补丁,防止已知漏洞被利用。

  7. 法律意识:了解并遵守相关法律法规,对恶意破解行为进行法律追责。

综上所述,防破解是一个多层次、持续的过程,需要结合多种技术手段和法律措施来共同维护程序的安全。

回到顶部