TA的每日心情 | 无聊 2018-7-9 18:21 |
---|
签到天数: 948 天 [LV.10]以坛为家III
|
本帖最后由 东海浪子 于 2016-4-21 17:09 编辑
在新版的艾奇系列中,增加了防dll补丁的检测。如果出现dll补丁程序就会闪退。
这系列软件,破解注册不难,很多种破解方法。但是要去除dll补丁限制就有点难度。本菜鸟不会自己破解,只是对大神menglv的文章艾奇全能视频转换器(钻石版) 破解闲谈https://www.chinapyg.com/thread-81288-1-1.html里的要点进行简单说明一下。本菜鸟非计算机专业,从外行的角度进行解释,说的不好,大家请别介意,不要取笑我哦。
先说下menglv大神的要点:dll检测和软件关闭都和这行代码004C3CF6 C686 A4000000 01 mov byte ptr [esi+0xA4], 0x1 有关。如果开始时检测到有附加dll,byte ptr [esi+0xA4]就赋值1,软件就会停止运行退出。如果把byte ptr [esi+0xA4]赋值改成0,软件能完美运行,但是无法关闭软件。所以我们要解决好dll检测和软件关闭与byte ptr [esi+0xA4]数值的关系。如果dll检测时,byte ptr [esi+0xA4]数值不为1,而软件关闭时byte ptr [esi+0xA4]数值为1,就能完美解决问题,破解dll补丁的检测限制了。大神没有说明该如何破解,只稍微透露了一点天机,在退出的地方做标记,飘老大的解释ldr断链即可,更让我们这些非计算机专业的菜鸟云里雾里。还好,本菜鸟仔细研读了大神的文章,思索了几天,终于悟到了一点门道,虽然不知道对不对,但是也能有效解决了这个问题。下面我就扼要说一下我对大神这篇文章的理解,能给同是菜鸟的坛友们解释说明一下。
下面以钻石版里的aqhome.exe为例
先说下软件运行的流程,看图1和图2
,软件检测有dll补丁的时候,会跳到
004C3CF6 C686 A4000000>mov byte ptr ds:[esi+0xA4],0x1,
004C3CFD |> 8BC3 mov eax,ebx
004C3CFF |. 5A pop edx
对byte ptr ds:[esi+0xA4]进行赋值。然后,继续往下走,会在
004C407C . 80B8 A4000000>cmp byte ptr ds:[eax+0xA4],0x0
004C4083 .^ 74 BF je short AQHome.004C4044
004C4085 > 33C0 xor eax,eax
进行比较判断,byte ptr ds:[eax+0xA4]数值1,程序会继续往下走,走向程序关闭。byte ptr ds:[eax+0xA4]数值0,代码向上跳软件就不能关闭了。
知道了大概的流程。我们就有了破解的思路。有2种思路
第一种思路。byte ptr ds:[esi+0xA4]初始数值是0的,我们在软件开始检测dll的时候,不对byte ptr ds:[esi+0xA4]进行赋值,让代码直接跳到下一行 004C3CFD处,保持byte ptr ds:[esi+0xA4]为0。
第二种思路,就是在开始检测dll,byte ptr ds:[esi+0xA4]赋值1的时候,改为赋值0,然后在软件关闭的时候跳过byte ptr ds:[esi+0xA4赋值和byte ptr ds:[eax+0xA4比较判断的过程,直接来到下一行代码004C4085。
这两种思路都可以解决问题。大神用的是第二种思路,通过PostQuitMessage找到关闭时在这些代码前面的断点。 至于如何找到修改位置,这个自己想办法解决了。
如果找不到断点修改处,当然还有3种思路,就是把byte ptr ds:[eax+0xA4赋值0.然后通过任务管理器停止软件运行。不过这样子有点不完美,呵呵
再说个题外话,钻石版里的3个子exe也都再检测一次dll补丁。如果用本论坛的dll劫持补丁工具制作的补丁,对补丁代码的先后排列顺序有要求的,排列不好,也会闪退。如果觉得该解释对您破解该软件有帮助的话,请给点评分哦,呵呵
【破解声明】支持国软;请勿商用;本文仅做研究所用,供破解技术爱好者学习研究讨论。如喜欢该软件,建议购买正版。
|
评分
-
查看全部评分
|