关于源码保密性及仿篡改方案的思考

2019-09-02 00:03:49 +08:00
 xiaotuzi
很多时候,软件源码要授权及保密措施,为防止篡改,经常把源码加密,但是加密在如今好像没什么用,花钱都能解决。我想到一个方案,在系统检测到源码或者授权被更改后,随机修改某个系统类,导致一些莫名其妙的错误,使篡改后的软件不能正常运行,而 debug 只能找到某段代码出错,却不能找到真正原因所在,因为每次出错的文件都是不固定的,从而达到仿篡改的目的。(前提,检测源码是否被更改,可以检测授权文件的修改时间及大小,代码可以嵌套在系统的某个地方隐藏,随机修改文件的代码也容易写),大家觉得这个策略如何?或者有什么更好的方案能讨论一下吗?
4000 次点击
所在节点    程序员
34 条回复
xiaotuzi
2019-09-02 09:27:49 +08:00
@boob 嗯,也行。hash 准确一点
xiaotuzi
2019-09-02 09:28:20 +08:00
@dangyuluo 动态语言…虚拟机不太现实
xiaotuzi
2019-09-02 09:28:55 +08:00
@love 买授权就没问题🌚
xiaotuzi
2019-09-02 09:31:09 +08:00
@firefox12 一般都是发源码包,所以还是要做源码仿篡改啥的
xiaotuzi
2019-09-02 09:31:29 +08:00
@waruqi 你这操作,应该很少人会花心思破解了
catcalse
2019-09-02 09:34:54 +08:00
不做 c/s
augustheart
2019-09-02 09:37:13 +08:00
如果是正规商业软件,把心思放在如何增加营收上才是正理。天天纠结被人修改破解的那是黑产圈子。
你看 adobe,jetbrains 他们什么时候把心思放在防破解上了。
Huelse
2019-09-02 09:37:42 +08:00
其实从现在互联网的发展情况来看很少有去保护到用户本地的源码了,

更注重的时服务端的保护和通讯过程的加密,也是现在开源比较盛行的原因之一,

除非是非常稀少的特种设备所需要的软硬件,

而且逆向破解界有句话说的好,加密就是用来破解的 (手动滑稽
codingBug
2019-09-02 11:03:32 +08:00
想想迅雷。我觉得可以修改变量名,像前端打包之后的代码,一位字母、两位字母变量。当然断点还是能找到你想要的数据。增加破解的难度、不定期(静默)更新代码,必须更新版本才能使用,增加破解的成本。破解成本 大于 破解收益
akira
2019-09-02 11:35:23 +08:00
先不讨论这个方案的效果如何,我只想知道怎么实现
"系统检测到源码或者授权被更改"
taobibi
2019-09-02 13:47:53 +08:00
给楼主讲个半真实、半杜撰的故事。过去我们公司做过一条运送跟踪系统的程序,当时我们总工程师写了很多意义不大和各种怪怪的注释。后来,我们当时的同行公司抄袭了我们的软件,这种标记性的“水印”就没删除干净,最后被我们发现,打官司起诉他们。后来,我们同行的公司险些输了官司,即将很狼狈的收场。最后他们从后台爸爸手里拿了钱,把我们收购了。
xiaotuzi
2019-09-02 14:02:44 +08:00
@taobibi 666,只要能检测出证明的标记,也就好办
geelaw
2019-09-02 14:17:37 +08:00
@xiaotuzi #9 因为你想要“防止篡改”,我假设的是这种防止是技术上而不是法律上的,因为如果你相信大家会遵守协议,那么根本没必要问这个问题。

@xiaotuzi #32 如果你想要达到“可以检查出标记”,那么你可以用 software watermarking 的技术。

@stoneabc #20 密码学里的 IND-based security 自“古”以来(“古”基本上是“基于计算复杂性理论的密码学的开始”)就是这样定义的。而且 iO 比 DP 的定义至少早 5 年。

@xiaotuzi #11 我觉得你没有搞清楚你想要解决的问题,目前出现的几个词:篡改、授权、保密。这是三个(至少表面上)不同的问题,你需要弄清楚对于每个问题你想要达到的目标,然后再考虑每个目标是否可以达到、如何达到。
Youngxj
2019-09-02 14:57:03 +08:00
我用 md5 试过了,解密之后一样会被 GG

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX