返回列表 发新帖

为什么adobe和office软件如此容易破解

[复制链接]

该用户从未签到

1万

主题

1万

帖子

3万

积分

合购之王

Rank: 3Rank: 3

积分
39969
发表于 2020-11-17 05:29:49 | 显示全部楼层 | 阅读模式

抱歉!您还未登录!请登录后继续浏览完整内容

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从理论上讲,没有软件是不能破解的,但这并不意味着破解软件比开发软件容易一万倍。幼稚的是,防破解的目的并不是要做一个牢不可破的软件,而是要使破解软件的成本远远大于购买软件的成本。大多数知名软件都有实力大大增加软件破解的难度,但它是出于市场需求而努力从用户角度出发,才会放水!
让我们先来看看最简单的软件破解。假设我们编写了一个软件,它的注册意味着代码如下:编译成exe并运行它。
开裂怎么办?
别笑,即使到了今天,仍然有很多软件使用这种软件保护机制,但这些软件大多不是很值钱的,比如XX管理系统、计算器等,或者软件作者别有用心,防止君子而不是恶棍。
你可以问。怎么了?

这种保护机制的问题在于,目前大多数编译器将字符串常量直接存储在可执行文件结构中,因此,如果您硬编码密钥,则几乎总是尝试和测试上述破解方法,即使不了解反向破解。

那么,让我们进入抗裂v2.0的时代。为了跟上时代的步伐,我们对上面的代码做了一点改动:现在"TXT"破解方法不再有用了,你看,钥匙找不到了。
这个保护方法怎么样?是熟悉的味道吗?一个熟悉的公式?这个机器码可以从网卡MAC、CPU型号、内存大小等方面生成。

当然,密钥算法也可以拉MD5、Sha等方式,而不是简单地乘一个8加上123456。总之,你可以玩从机器码到注册码的算法。
但是鸡蛋有什么用呢?
换句话说,消息窗口在消息框中打开。
然后输入一个错误的注册码并点击断点。很快,我们将通过逻辑处理代码来确定注册代码是否正确。

猜猜如果我们删除了决定注册码是否正确的代码(填写了NOP指令),会发生什么?

怎么了?
您会发现源代码都是从消息框函数开始的。这个函数可以让我们找到注册码判断码。
今天,仍然有大量的软件使用二三十年前使用的保护方法。每年,因被破解而死亡的软件可以环绕地球三圈。也就是说,这种保护机制使得所谓的软件在发布后10分钟内就被破解了。
这时,你从经验中吸取教训,MMP,有一个鬼,既然留言框不好用,我就不需要用了,所以你把代码改成如下:“你看,啧啧,只要你的注册码不正确,我就直接退出软件(或跳转到另一个地方),看你怎么办?

不幸的是,鬼魂每年都会被注册,而且这个词已经把你出卖了。打开OllyDbg,找到字符串引用,然后双击。

哦,哦,结束了。如果我换汤或换调料,我还是会被抓。

您注意到在这样一个地方判断注册码是不可靠的,因此您改变了策略,将检查注册码的代码复制了N次,或者逐字符检查注册码的准确性。有些人把注册成功等字眼加密或混淆,需要使用时就把它们拿出来。
你可以放心,不管你拷贝多少次,发现都是迟早的事,而且会被破解的。同时,只要需要使用明文字符串,迟早都要解密。外壳的upx方法与此类似。您只需等待数据解压完成,所有内容都将再次为纯文本。
因此,更聪明的方法是使用时间在明文使用后立即解密和擦除,这可能会延迟较长的时间。

但这仍然是时间问题。

你开始发现主动出击总比找到内心的幽灵好。也就是说,我们这些有名的人问问题而不是解决问题。最后,您开始攻击调试器,然后您成功地进入了反破解v2.5时代。
现在,我要介绍一个古老但非常著名的函数:nisdebugpresent您可能有点困惑。这个功能是用来做什么的?

简单地说,当我们破解一个程序时,在大多数情况下,我们会打开一个调试器来反编译和分析软件。好吧,这就是重点。
isdebugpresent函数可以检测我们的程序是否被调试器附加。你认为,啊,在正常情况下,谁能负担得起在软件上附加调试器?如果你用调试器附加我,你一定想做坏事。

因此,您开始编写如下代码:那么,下次OllyDbg加载和调试您的程序时,将出现以下情况:n在很长一段时间内(包括现在),许多软件或加密shell都会检查是否有调试器在调试自己。例如,TLS段将在加载时执行。如果发现它正在被调试和破解,它将被设置一个标签,让程序运行到无用的地方或直接退出。还有很多方法可以使用PE头来使调试器无法加载。
不幸的是,这仍然是无用的。例如,isdebugpresent可以通过修改FS寄存器的标志位来完全静音FS寄存器。同样的方法包括但不限于检查int 3软中断、原始调用、查询PEB、检查调试权限和父进程等。所有这些方法都可以被绕过。
好吧,我们还能做什么?别担心。我们现在正处在最流行的防开裂V3.0 VMP时代。
要澄清,这里的VMP不是VMP shell。它被称为虚拟机保护。总之,为什么我们对软件破解如此熟悉?这不是因为我们太熟悉x86x64 arm的汇编指令集。
如果我们自己发明了一套指令集,那么用这个指令集编写程序,然后在自己的虚拟机上运行,那么,一旦爆竹进来,他会看到什么是充满困惑的脸?
不幸的是,VM的操作机制决定了它可能会导致数十倍甚至数百倍的性能损失。因此,必须使用VMP来保护关键代码,而不是性能瓶颈。否则,您的软件将运行如下:当C语言教师遇到程序崩溃时,C语言教师遇到程序崩溃时?n
当然不是。VMP只能延长分析时间。如果你让VMP变得足够复杂,足以让一个破坏者喝得酩酊大醉,但如果时间足够长,你的软件价值足够让人们有破解它的欲望,他们仍然可以充分分析你的虚拟机的运行机制。当你的虚拟机运行机制被发现时,软件就会消失不远了。
但是,您可以放心,分析VM的执行机制比自己编写VM更令人头疼。毕竟,一个是你需要通过代码来猜测别人的想法,另一个是把你自己的想法转换成代码。因此,基于这一点,可以说:破解软件比制作软件简单,在很多情况下,它并不存在!
你可能会问,为什么市场上有那么多软件,那么多游戏,那么多保护软件,听起来那么棒,但它仍然是破解的。在寄出后一天就被破解了。
事实上,最大的问题在于商业保护软件(如保护壳),因为这些保护壳大多会卖给大量的软件开发人员。有句俗话说大树招风。

就像流行的VMP保护机制一样,它之所以能被保护,是因为破解者对其运行机制不清楚。如果你自己用这个软件,你的软件不是很值钱,除非大家伙是空的和孤独的,否则,谁会有空闲时间来分析你的虚拟机是如何运行的。

然而,商业保护壳是不同的。无论采用什么样的保护机制,只要分析清楚,几乎所有使用这种保护机制的软件都会倒下。而且,在灰色行业,这种破解甚至相当有利可图,只要保护机制不更新,一次性投入,长期回报。
因此,第一次分析只需要很长时间,然后就成了例行公事。
因此,作为一种商业保护壳的预期效果并不强。它很可能在灰色行业中是无用的,甚至一个具有反逆向基础的代码农民也可以更有效地编写代码。
当然,软件被破解的概率仍然是我之前提到的那句话:防破解不是让软件无法破解,而是使破解软件的成本远远大于购买软件的成本。

那么,VMP保护机制是完美的么?




上一篇:卖破解软件牟利,判入狱两年!法院最新消息
下一篇:微软的软件真的那么容易破解吗?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表