我的意思是,我一直在想,见鬼的人怎么能开发出算法来打破/欺骗许多共享软件程序中合法使用的限制。
只是出于好奇。
发布于 2008-09-24 21:43:10
除了非法之外,这是一项非常复杂的任务。
从理论上讲,通常的方法是反汇编程序来破解,并试图找到关键字或序列码被检查的地方。
说起来容易做起来难,因为任何严肃的保护方案都会在多个地方检查值,还会从序列密钥中获得关键信息供以后使用,因此当您认为您猜对了时,程序将崩溃。
要创建一个破解,你必须确定所有的点,在那里完成检查,并适当地修改汇编代码(通常是反转条件跳转或将条件变量存储到内存位置)。
要创建一个密钥生成器,你必须理解算法,并编写一个程序来重新执行完全相同的计算(我记得一个旧版本的MS Office,它的序列有一个非常简单的规则,数字的和应该是7的倍数,所以编写密钥生成器相当简单)。
这两个活动都要求您在调试器中跟踪应用程序的执行,并尝试找出发生了什么。并且你需要知道你的操作系统的底层API。
一些受严格保护的应用程序对代码进行了加密,因此文件不能被反汇编。它在加载到存储器中时被解密,但是如果它们检测到存储器内调试器已经启动,则它们拒绝启动,
从本质上讲,这需要非常深入的知识、独创性和大量的时间!哦,我有没有提到这在大多数国家都是非法的?
如果你想知道更多,谷歌+ORC破解教程,他们是非常老的,现在可能没有用,但会让你很好地了解它的含义。
无论如何,如果您想编写自己的保护方案,那么了解这一切的一个很好的理由是。
发布于 2008-09-24 21:25:47
坏人使用反汇编程序搜索密钥校验码。如果你知道如何做到这一点,这是相对容易的。
然后,将键检查代码转换为C或其他语言(这一步是可选的)。反转检查密钥的过程会得到一个密钥生成器。
如果你了解汇编器,大概需要一个周末的时间来学习如何做到这一点。我几年前就做过了(虽然从来没有发布过任何东西。这只是为我的游戏开发工作做的研究。要写一个难以破解的密钥,你必须了解人们如何破解)。
发布于 2008-09-24 21:45:50
Nils的帖子涉及密钥生成器。对于裂缝,通常你会找到一个分支点,并反转(或移除条件)逻辑。例如,您将测试软件是否已注册,如果已注册,则测试可能返回零,然后相应地跳转。您可以通过修改单字节将"jump if equals (je)“修改为"jump if not-equals zero (jne)”。或者,您可以在代码的各个部分编写无操作,这些代码执行您不想做的事情。
编译的程序可以反汇编,只要有足够的时间,有决心的人就可以开发二进制补丁。一个破解是一个简单的二进制补丁,使程序的行为有所不同。
https://stackoverflow.com/questions/130058
复制相似问题