2022-06-29摩登娱乐平台注册

如果“摩登娱乐平台注册”没有挂在应用程序上,人们可以喝香槟:关键是要纠正几个字节的条件转换 je。但这里最有趣的开始了。我们的源摩登娱乐平台注册是经过加密打包的,正如我们已经看到的那样,对 Themida 虚拟机进行逆向是一件相当费力的事情。当然,清理和去混淆早些时候转储的摩登娱乐平台注册要简单一些,但任务看起来仍然非常困难。

最简单的选择似乎是使用加载器或内联补丁。为了不编写加载程序,让我们尝试第二个选项。底线是,如果你不能修补最安全的应用程序的摩登娱乐平台注册,那么你可以尝试从一些不受保护的外部库中进行修补,幸运的是,程序旁边有很多 QT 库,并且没有完整性控制他们。稍微修改一下摩登娱乐平台注册,我们发现对 最靠近我们的分支的 qt5widgets.dll 库的函数bool __cdecl QWidget :: isVisible ( void )的混淆调用。

在检查了整个混淆摩登娱乐平台注册序列之后,调用依赖于 qt5widgets.dll 中这个函数的一个简短实现,我们将使用它的摩登娱乐平台注册来自动修补主程序:

下一个困难在于我们不能仅仅从中获取并纠正可执行进程的摩登娱乐平台注册。因此,您需要在数据部分中查找变量,进行编辑会产生相同的效果。所以,我们需要保证方法调用

在 AL 中返回一个非零值。在调试器中进一步挖掘之后,我们将此方法转换为以下操作序列:

这意味着为了让程序感觉像许可证,您需要将其安装在:

任何非零字节值(例如,1)。

我们的动作算法如下:

我们执行方法bool __cdecl QWidget :: isVisible ( void ) 的源摩登娱乐平台注册 结果在AL寄存器中,RCX寄存器对程序不再感兴趣,它可以为我们自己的目的使用,我们会做.

让我们 检查是否从正确的位置调用了isVisible方法,因为摩登娱乐平台注册段每次都位于不同的地址,最简单和或多或少可靠的事情是检查地址的最后几个字节,例如 16 位,所需的呼叫地址应为:

我们还使用调用地址进行相对变量寻址:

很容易计算出她的地址和调用地址之间的偏移量是 0x5AAB44C

以防万一,我们检查这个变量的值(在我们的 isVisible被调用时,它还不能很容易地初始化)并将值 [ [ [ [ 7FF6F47F6EF8 ] + 10 ] + A1E ]设置为 1。

现在算法已经很清楚了,我们在 qt5widgets.dll 库摩登娱乐平台注册中寻找最接近的、足够长的空片段,并为其设置 isVisible 处理程序。更正和补充的 isVisible 摩登娱乐平台注册如下所示:

所有这一切看起来像是某种变态,但它确实有效:外部 QT 标准库,当从正确的位置访问时,使 Themida 涵盖的程序“获得许可”,甚至无需修改其摩登娱乐平台注册。

当然,我并不声称上述摩登娱乐平台注册的纯度、正确性和可靠性,但在我看来,这是最简单、最快的自动补丁原理,不仅适用于绕过 Themida,也适用于任何其他加密加密的严重保护。摩登娱乐平台注册并检查其完整性。