最近在研发一款 windows 桌面客户端, 但是对于好无经验的我, 不知道如何防止客户端被破解,暴露重要信息,比如秘钥,加密方式... 所以希望有经验的大佬路过,可以支支招,谢谢啦!
![]() | 1 wang93wei 2024-05-10 11:49:32 +08:00 Denuvo 反篡改(Anti-Tamper)技术 |
2 Panameragt 2024-05-10 11:49:34 +08:00 功能全都做到服务端上 |
3 bomjack OP @Panameragt 是的,客户端会上报一些重要信息到服务端,现在就是担心的点,就是破解了客户端,上报了一些虚假信息, 愁死了 |
![]() | 6 UIXX 2024-05-10 12:02:54 +08:00 具体业务具体分析 |
![]() | 7 wang93wei 2024-05-10 12:04:37 +08:00 |
8 z4zr 2024-05-10 12:05:30 +08:00 |
![]() | 9 Tyrant1984 2024-05-10 12:21:49 +08:00 ![]() #1 楼的 D 加密过分了吧/狗头 这个我记得收费还挺贵的啊~~~ |
10 bomjack OP @Tyrant1984 哈哈,确实很贵,看值不值得花这个钱了 |
11 fano 2024-05-10 12:27:03 +08:00 付费方案 Safenet Sentinel |
12 asm 2024-05-10 12:28:23 +08:00 别想那么多了,本地客户端就是核心算法 vmp 了,想弄的也能弄。 |
13 NanFengxuan 2024-05-10 12:45:37 +08:00 技术方案没有绝对安全的,直接律师函警告 |
14 e3c78a97e0f8 2024-05-10 12:46:26 08:00 @bomjack 具体什么信息? |
15 jones2000 2024-05-10 13:21:10 +08:00 对客户端上报的数据,进行校验, 找个 AI , 做下用户行为数据分析下,后续不符合这个用户的数据,AI 都会报警。就跟金融 AI 风控差不多的东西, 花钱买一套。 |
![]() | 16 kokutou 2024-05-10 13:34:22 +08:00 via Android d 加密。。。杀鸡用牛刀啊 |
![]() | 17 Glkcv 2024-05-10 13:40:19 +08:00 给用户开远程桌面,只能远程着用 |
18 wkla 2024-05-10 13:44:07 +08:00 客户端只能说提高破解成本,不存在防止破解 |
![]() | 19 tangchi695 2024-05-10 13:44:52 +08:00 VMP |
20 dearmymy 2024-05-10 14:13:26 +08:00 买个 vmp ,关键代码加上 vmp ,还有人破解说明你们公司产品很不错了 |
21 ThirdFlame 2024-05-10 14:16:12 +08:00 当破解成本高于购买正版的成本(或者上报数据造假获得的收益) 那就没有破解的必要了 所以对抗手段够用就行了,没有必要追求完全不被破解 |
![]() | 22 MIUIOS 2024-05-10 14:20:17 +08:00 攻防没有绝对,只能提高破解的成本+延迟破解时间 |
![]() | 23 lakehylia 2024-05-10 14:29:11 +08:00 纯软件的肯定不行,除非你搞个物理硬件,所有加密的由硬件搞定。并且任何拆硬件的行为直接报废。 |
![]() | 24 SenLief 2024-05-10 14:34:07 +08:00 攻防是相对的,你无法从攻防上想办法,更多的是考虑法律。 |
25 mumbler 2024-05-10 14:34:24 +08:00 你软件有啥了不得的,值得人家破吗 |
![]() | 27 xdeng 2024-05-10 14:41:20 +08:00 阿祖,收手吧,外面全是 debugger ! |
![]() | 28 R4rvZ6agNVWr56V0 2024-05-10 14:46:08 +08:00 防止 Windows 客户端被破解主要涉及到两个方面: 技术手段和法律手段: 1.技术手段包括加密、服务端执行、本地代码化和代码混淆等。加密是指在发布应用中提供加密后的代码,运行时动态解密;服务端执行意味着将代码进行物理隔离,可以是网络服务器,也可以是独立硬件;本地代码化是针对高级编程语言程序,将代码本地化形式发布来提升反编译难度;代码混淆是最常用的手段,包括布局混淆、数据混淆、控制混淆、阻止性混淆等。 2.法律手段则是通过版权法保护你的产品和商标。 然而,完全防止客户端被破解是非常困难的,因为只要代码被分发到用户设备上,就存在被破解的风险。道高一尺魔高一丈。 |
29 Vercetti 2024-05-10 14:57:36 +08:00 VMP 或 TMD 加壳,核心代码+VM ,非核心代码+混淆,入口 VM 还是如楼上所说,加壳是增加破解时间成本,当破解成本>破解收益时就不会闲的破解去了,勒索软件就是这个道理,RSA 算法、源码都是公开的,以普通 PC 来说可能得十几二十年才能算出解密 Key |
![]() | 32 xieren58 2024-05-10 15:19:31 +08:00 rust 写 dll , 核心东西, 服务器检验... |
![]() | 33 YuushaTao 2024-05-10 15:25:57 +08:00 vmprotect |
![]() | 34 UXha45veSNpWCwZR 2024-05-10 15:32:45 +08:00 借楼问问, 使用 c#和 sqlite 开发的单机 exe 软件,要怎么防止别人看到源代码呢?还有防止看到 sqlite 里面的数据? |
![]() | 35 nxforce 2024-05-10 15:49:01 +08:00 貌似 flutter 目前好像防逆向能力强一些? |
36 991547436 2024-05-10 16:23:04 +08:00 x64dbg:我看不行 |
![]() | 37 slowgen 2024-05-10 17:04:49 +08:00 大概是 2008 年那会,对于 VMP 和 TMD 这种搞不定的壳,等程序完全加载到内存之后动态调试 + 内存补丁就通杀了,也不算难 |
![]() | 38 duanxianze 2024-05-10 18:04:34 +08:00 绝对的防破解目前还没有,那么多 3a 大作也没看到哪个没破解成功 |
![]() | 39 JensenQian 2024-05-10 19:49:29 +08:00 全程联网吗 |
40 macaodoll 2024-05-10 19:55:25 +08:00 via Android ![]() 大厂做了那么多年的反外挂,不还是一样有吗?只是你这个东西值不值得那些大佬们动手而已。 |
41 bigtear 2024-05-10 20:24:12 +08:00 用处不大吧,最简单的还是业务上云 + 套个 VMP 壳防一下脚本小子。 或者用场外法律手段,像字节的剪映桌面端都是本地运算,VIP 功能很多大佬破的很快,但是怕律师函都很低调地不往外发。 |
42 jeesk 2024-05-10 22:46:23 +08:00 看成本呀, 比如 windows 激活 10 块钱就搞定了, 你确定你要花钱去搞个破解? |
![]() | 43 seedhk 2024-05-11 08:21:39 +08:00 vmp 核心代码放在服务器上,只有输入正确的"激活码" 才能拿到核心代码 但是这样也有个缺点,如果破解者正常激活过一次,就能拿到核心代码了 |
![]() | 44 InkStone 2024-05-11 09:35:29 +08:00 @shuimugan VMP 现在还是很常用的,破解起来没你说的那么简单。裸 native 代码一两个礼拜摸完的库,上强度合格的 VMP ,即使是熟练工也得摸个大半年。 |
![]() | 45 brando 2024-05-11 11:14:39 +08:00 ![]() 不如把精力更好的花在产品质量上,让客户购买。当然被破解了说明这款东西值得去用。 |
46 SublimeW 2024-05-11 13:07:17 +08:00 逆向世界无加密,相对安全的有:使用非对称加密,私钥放在服务器,两个通信时,使用非对称传输对称密钥,每次发起的新连接,都随机生成对称加密密钥。 |
![]() | 47 NewYear 2024-05-11 17:20:20 +08:00 把客户端的功能做到服务器上,通过服务器来运算。 提交过来的数据自然要标记来源,什么是来源,就是用户 ID ,序列号之类的。 然后你再通过用户 ID ,序列号判断是否合规。。。。针对异常的做封锁,通知客户换授权就行了,如果频频出问题,限制频率或者停止产品服务。 |
![]() | 48 edisonwong 2024-05-11 17:24:17 +08:00 我第一次听到 Denuvo 的时候,还是 FIFA 16 ?足球游戏的时候,当时似乎要全程联网。不过似乎也有破解方案了 |
![]() | 49 pckillers 2024-05-11 18:33:55 +08:00 做成订阅制,不登录不能使用软件,用户配置存服务器,定期服务器心跳校验授权,软件留强制网络升级后门,软件写死一个版本只能在 202X 年 X 月 X 日以前运行,且这个时间还是从 NTP 服务器取而不是取本地时间。 |