【非专业】小白进行软件加密的最最基础的思路
本帖最后由 WuMian233 于 2024-11-16 16:43 编辑注:以下内容不专业!
只是一个大一新生分享一下自己高中时候研究的加密方法。
软件加密通常都是需要用到机器码,然后经过一通(我也不知道怎么算的)计算,就能得出注册码。
我们把这个过程简化一下
首先,抛开复杂(也许)的机器码,
我们用随机数随便生成一个四位数。这样注册前,每次启动软件都会随机生成一个四位数。
我们暂且把生成的数字叫做【伪机器码】。
然后自己研究一种简单的计算方法,把【伪机器码】进行计算后得出【密钥】。这样,我们知道计算的过程,就能轻易得出密钥。而不知道计算过程的人就不一定能算出密钥了。
但是这个过程有几个问题:
1.【表面功夫】为了让别人看不透生成的【伪机器码】的生成方式,让生成的【伪机器码】避开像1005这种简单的数字,我们可以把范围设置成1357-9753。这个范围怎么开心就怎么设。只要不是从1000开始。
2.【带点脑子但不多】假设我们的算法是 【伪机器码】*3+4=【密钥】。这种算法可以让人发现一定的规律。如果一个人手里有多套【伪机器码】对应的【密钥】,他就可以尝试去找规律。比如【密钥】-【伪机器码】,经过多次计算就能发现一定规律进而可能破解我们的算法。
(所以学习算法真的挺重要!!)算法越复杂,被破解的难度越大。
我高中的时候常用类似 (【伪机器码】-5)*3这种的结构计算密钥。
咱们也可以用各种平方开方等在知识储备范围内的能想到的最复杂的计算方式(前提是能用编程语言实现QAQ)
3【注册以后】注册后,我们把密钥保存。再次打开软件的时候只需要验证【伪机器码】和【密钥】是否匹配。
但是!!随机数又不像机器码一样固定,下次软件打开的时候【伪机器码】会变啊!
那就把机【伪机器码】也保存下来呗q(≧▽≦q)
我们把【伪机器码】放进1.txt 文件,把【密钥】放在2.txt文件。每次打开软件时,先验证1.txt中是否为空白。如果是,就提示未注册。如果否,就读取 2.txt 。把 1.txt 用我们研究的计算方法进行计算,得出【真密钥】。如果【真密钥】== 2.txt 就启动软件。如果不等于,就提示密钥错误等等。
4.【表面功夫】存储【伪机器码】和【密钥】的文件,尽量不要让人觉得有打开的欲望或者能打开。后缀和名字越奇葩越好,让使用软件的人越看不到越好awa
比如可以用sdjrg.wapj(瞎打的,没有任何含义)
--------------
但是又双叒叕会存在问题。A注册软件后,可以把和软件相关的所有内容复制下来,然后发给自己的朋友B。这样B也能使用这个软件了。
那就把关于【伪机器码】和【密钥】的文件隐藏起来,让他找不到!
比如,存放在注册表中( ̄︶ ̄)↗
至此,一个 最 最 最 基础的软件加密就完成了(≧∇≦)ノ
如果通过某种手段,让【真密钥】恒等于 2.txt 这不就跳过了算法验证么 可以搞个成品,扔论坛cm区玩一玩 苏紫方璇 发表于 2024-11-16 16:46
如果通过某种手段,让【真密钥】恒等于 2.txt 这不就跳过了算法验证么
诶,有道理耶!!!!
请问您能想到什么好的解决方案吗{:1_927:} 苏紫方璇 发表于 2024-11-16 16:47
可以搞个成品,扔论坛cm区玩一玩
感谢您告诉我论坛还有这个区! 很有帮助的帖子,讲的很仔细。感谢{:1_893:} 这种方法加密的软件会很容易被破掉 很好,非常好 WuMian233 发表于 2024-11-16 16:56
诶,有道理耶!!!!
请问您能想到什么好的解决方案吗
这方法就是逆向里面的爆破,最简单的方法就是加vm了,隐藏掉这个判断就可以了。也可以不需要这个判断,让后面执行的功能需要解密出来的数据,这样没有码就无法运行了 苏紫方璇 发表于 2024-11-16 19:21
这方法就是逆向里面的爆破,最简单的方法就是加vm了,隐藏掉这个判断就可以了。也可以不需要这个判断,让 ...
了解了!感谢您提供的思路
页:
[1]
2