当前位置:首页 > 每日看点

为何有那么多盗版软件却没人把这些软件开源了?

卡卷网1年前 (2025-01-12)每日看点262

这问题问的……你又搞不到人家的源码,怎么给人家开源啊?


你,或者盗版者,能得到的软件是这样的:

为何有那么多盗版软件却没人把这些软件开源了?  第1张

这是Windows自带的notepad.exe。你能懂它写了什么吗?


这个格式谁都看不懂。那么,转换成16进制,让我们看懂它,如何?

为何有那么多盗版软件却没人把这些软件开源了?  第2张

喏,现在你看懂了吗?


你得到的软件,多半是这样编译后的机器码集合体。这玩意儿只有CPU能看懂,人?

洗洗睡吧。


当然,你可以“反汇编”它。这样如果你懂汇编,大概就能看懂了。

比如,这个网站就可以把C/C++等很多语言的代码翻译到汇编、并给你展示出来:

Compiler Explorer


让我们看一个示例。

这是C源码:

为何有那么多盗版软件却没人把这些软件开源了?  第3张


这是编译后、用户看到的汇编码:

为何有那么多盗版软件却没人把这些软件开源了?  第4张

我们可以看到,C源码里面的input、length、sum、i等等变量名称统统不见了。

这是因为,这些玩意儿是C语言里面、帮助程序员识别和记忆相关功能的;到了CPU层面,它们都是内存里面的几个格子而已——它们,最终就变成了二进制指令里面的DWORD PTR [rbp-8]之类玩意儿。

DWORD PTR意思是这是一个指向四字节整数的指针;rbp-8是这个指针的具体值。


不仅如此,C语言里面、写在前面的for循环语句被放在了最后面、然后直接一个jmp .L2跳过去;for里面的<判断也成了……19行到21行的三条指令。其中mov行读取其中一个变量的值到eax,cmp行比较eax值和另一个变量的大小、然后设置标志位;21行的jl就是根据标志位,如果是less就跳转到.L3,执行循环体;否则执行22行,也就是准备返回值、退出循环、恢复现场、执行返回指令。


很显然,看着这段汇编,是无法恢复C源码的——变量名肯定是没了;甚至,连for循环和while循环都未必能区分。

尤其是,现代编译器会自动执行极多、极夸张的优化;优化之后的机器码会和C源码差距更大——除法给你改移位、连续的if-else给你改成表驱动,这些都只能算小打小闹;整个函数都给你“吞”了(内联掉或者直接计算成一个常量固定进代码)也都是家常便饭。

此外,现代CPU会有极多的特有指令;而很多编译器可以把满足条件的一些代码编译到SIMD指令,从而尽可能加快程序执行速度……此时,想要反编译出源码就更困难了。


而且,即便能够“反编译”,搞出来的C源码往往也仅仅是“语法正确”而已,经常是无法通过编译、转换回汇编代码的。


最最梦幻的情况下,从机器码反编译到C,你会得到这个:

为何有那么多盗版软件却没人把这些软件开源了?  第5张

简单说就是,哪怕是我自己写的程序,编译成汇编,再通过一些软件转换回C,我自己都看不懂了!


那么,你凭什么搞开源?


那么,盗版是怎么一回事呢?


简单说,正版软件里面会写一些判断,类似这样:

为何有那么多盗版软件却没人把这些软件开源了?  第6张

如果你没有授权,它就return false,然后退出程序或者锁定一些功能,不让你用。

这些代码当然也会编译成机器码;机器码转汇编往往是可以任意转换的:

为何有那么多盗版软件却没人把这些软件开源了?  第7张


其中的第6、7行就是这个if判断。

你可以想办法一点一点的执行程序(比如到处下断点),观察程序什么时候不让你用了,从而确定哪行代码可能是这个if判断;然后,把第7行的je(相等跳)指令改成nop,那么发现是盗版它也不会禁止使用了;甚至,如果改成jne(不等跳),那么这个函数的功能就变成“只有非法用户才能使用软件”了——这就是盗版。


你看,盗版商压根没搞懂被破解的软件究竟是什么原理——他们也不需要懂——只要找到判断盗版的那个点,然后改变它就行了。


当然,为了避免被人盗版,软件厂商也花了很多心思,不会这么轻易的被人抓到关键。

但,程序毕竟是死的。到了用户机器上,他有无数时间、可以动用无数手段,所以最终,单机软件被破解只是时间问题。这就是盗版泛滥的原因。


但是,软件本身的代码逻辑太多、太复杂;哪怕只是一个很小的程序,想要从机器码“偷窥”到人家的设计思路……那么除非你和软件开发者在该领域有同样或者更高的知识/技能水平,否则是根本不可能的——但如果你有同样或更高的知识/技术水平,自己从头写一个,付出的时间、精力是远比反编译要少的多得多的。


因此,哪怕不考虑法律问题,盗版者想要“开源”被盗版软件,那也是痴人说梦。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/9005.html

分享给朋友:

相关文章

现在做抖音的话,还有机会嘛?

现在做抖音的话,还有机会嘛?

之前我问过小杨哥一个问题:“现在抖音还好做吗?” 疯狂小杨哥在抖音已经突破1亿粉丝,直播间10w的在线观看人数,日常带货随便一场也是上7位数的数据。 现在抖音的市场好像已经被头部占领,资源靠前,普通人似乎已经没有机会了? 下面是小杨哥对于做…

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

今天整理了36个搞钱APP 可以先接触学习看看,然后选定一个感兴趣的方向去精进 要知道机会不是一下子来临的, 而一定是你前期做了很多准备 每天进步一点点,就像滚雪球一样 希望所以女生,能够在2024年提升自己, 立下一个新的搞钱Flag吧…

推荐几个问卷调查平台?

推荐几个问卷调查平台?

我给大家免费推荐一些市面上不多,且稳定的免费的问卷平台,这个在网上都是能够搜索到的,有的还是世界500钱企业,这里推荐的基本上都是上市的问卷公司了。上面都是可以免费去注册的,对外公开开放的,做完了直接奖励美刀的,不需要兑换卡什么的。 C…

小米14 Pro和Redmi K70Pro怎么选?

小米14 Pro和Redmi K70Pro怎么选?

两款手机都使用了最新的骁龙8Gen3旗舰芯片,性能都是顶级,但是两款手机定位不同,卖点不同,红米K70 Pro定位主打性能的旗舰入门手机,小米14Pro定位旗舰中高端手机。具体根据个人需求与预算来选择: 两款手机的相同、相似点:都使用了骁龙…

开发了个小程序,咋推广呢?

要是开发了个小程序,想推广的话,可以先从自己的朋友圈子下手,让亲戚朋友都帮忙转发宣传,这样能先有点人气。 然后去一些跟你的小程序相关的论坛、社区啥的,发帖子介绍介绍,吸引有兴趣的人。 还能找些网红、博主合作,要是他们觉得你的小程序不错,帮忙…

自媒体如何快速起步?

自媒体如何快速起步?

有两种经验,可供参考。 第一种是:现象级的爆火、爆款,这种情况捞到钱,实现财务自由的人并不多,但确实存在。只不过非要说清楚为什么这个账号可以火、可以短时间内赚到普通人一辈子赚不到的钱,他们自己也不一定能说清楚,因为赶上了风口(内外部情况)。…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。