串行发电机/裂缝是如何形成的?

时间:2008-09-24 21:21:22

标签: reverse-engineering cracking

我的意思是,我总是想知道有多少人可以开发算法来打破/欺骗许多共享软件程序中合法使用的限制。

只是为了好奇。

8 个答案:

答案 0 :(得分:28)

除了非法之外,这是一项非常复杂的任务。

在理论层面上讲,常见的方法是反汇编程序以破解并尝试查找密钥或序列码的检查位置。

说起来容易做起,因为任何严肃的保护方案都会检查多个位置的值,并且还会从串行密钥中获取关键信息供以后使用,这样当你认为你猜对了,程序就会崩溃。

要创建裂缝,您必须识别完成检查的所有点并适当地修改汇编代码(通常反转条件跳转或将costants存储到存储器位置)。

要创建一个keygen,你必须要理解算法并编写一个程序来重新进行完全相同的计算(我记得一个旧版本的MS Office,其序列有一个非常简单的规则,数字的总和应该是7的倍数,所以写keygen是相当微不足道的。

这两个活动都要求您将应用程序的执行跟踪到调试器中,并尝试弄清楚发生了什么。您需要了解操作系统的低级API。

某些受到严密保护的应用程序已对代码进行了加密,因此无法对该文件进行反汇编。它在加载到内存时被解密,但如果它们检测到内存调试器已经启动,它们就会拒绝启动,

从本质上讲,它需要非常深刻的知识,独创性和大量时间!哦,我提到这在大多数国家都是非法的吗?

如果你想了解更多信息,谷歌的+ ORC破解教程他们已经很老了,现在可能没用了,但会让你对它的含义有所了解。

无论如何,了解这一切的一个很好的理由是,如果你想编写自己的保护方案。

答案 1 :(得分:15)

坏人使用反汇编程序搜索密钥检查代码。如果您知道如何做到这一点,这相对容易。

然后将密钥检查代码翻译成C或其他语言(此步骤是可选的)。反转键检查过程会为您提供密钥生成器。

如果您了解汇编程序,则需要大约一个周末才能学会如何执行此操作。我几年前就完成了这件事(虽然从未发布任何东西。这只是我的游戏开发工作的研究。要编写一个难以破解的密钥,你必须了解人们如何处理破解)。

答案 2 :(得分:9)

Nils的帖子涉及关键生成器。对于裂缝,通常会找到一个分支点并反转(或删除条件)逻辑。例如,您将测试软件是否已注册,如果是,则测试可能返回零,然后相应地跳转。您可以通过修改单个字节将“jump if equals zero(je)”更改为“如果不等于零(jne)则跳转”。或者,您可以在代码的各个部分编写无操作,执行您不想做的事情。

编译的程序可以被反汇编,并且有足够的时间,确定的人可以开发二进制补丁。破解只是一个二进制补丁,可以使程序表现不同。

答案 3 :(得分:4)

首先,大多数复制保护方案并不是非常先进,这就是为什么你现在看不到很多人自己动手。

有几种方法可以做到这一点。您可以在调试器中逐步执行代码,这通常需要对组装有一定的了解。使用它可以了解程序中复制保护/ keygen方法的位置。有了这个,您可以使用像IDA Pro这样的反汇编程序来更密切地分析代码,并尝试了解发生了什么,以及如何绕过它。我通过在日期检查中插入NOOP指令来破解有时间限制的Betas。

这实际上只是对软件的理解和对装配的基本理解。 Hak5在本季的前两集中完成了关于逆向工程和破解的基础知识的两部分系列。这是真的基本,但它可能正是你正在寻找的。

答案 4 :(得分:3)

一个潜在的破解者会对程序进行反汇编并查找“复制保护”位,特别是对于确定序列号是否有效的算法。从该代码中,您通常可以看到解锁功能所需的位模式,然后编写生成器来创建具有这些模式的数字。

另一种方法是查找在序列号有效时返回“true”的函数,如果不是则返回“false”,然后开发二进制补丁,使函数始终返回“true”。

其他一切在很大程度上都是这两个想法的变体。根据定义,复制保护始终可分解 - 在某些时候,您必须以可执行代码结束或处理器无法运行它。

答案 5 :(得分:2)

序列号你可以提取算法并开始向其投掷“猜测”并寻找积极的回应。计算机功能强大,通常只需要一段时间才能开始吐出命中。

至于黑客攻击,我曾经能够在高级别上逐步完成程序,并寻找一个停止工作的地方。然后你回到成功的最后一个“呼叫”并进入它,然后重复。那时,复制保护通常是写入磁盘并查看后续读取是否成功(如果是这样,复制保护失败,因为它们曾经用激光刻录部分软盘,因此无法写入)。 / p>

然后,这只是找到正确的呼叫并从该呼叫中硬编码正确的返回值。

我确信它仍然相似,但他们会花费很多精力来隐藏通话的位置。最后一个我试过放弃,因为它一直在加载代码而不是我单步执行的代码,而且我确信它从那时起变得更加复杂。

答案 6 :(得分:1)

我想知道为什么他们不只是分发个性化二进制文件,其中所有者的名称存储在二进制文件中(加密和混淆)二进制文件或更好地分布在整个二进制文件中.AFAIK Apple正在使用音乐文件执行此操作从iTunes商店中,从文件中删除名称非常容易。

答案 7 :(得分:0)

我认为每个裂缝都不同,但我猜大多数情况下会有人花费 调试器中有很多时间跟踪有问题的应用程序。

串行生成器通过分析算法进一步发展 检查序列号的有效性并对其进行反向工程。

相关问题