2022-06-26星辉平台代理注册

有大量使用 Xamarin 构建的星辉平台代理注册应用程序。在本文中,我们将研究分析和破解此类应用程序的方法。

有关该主题的更多信息:破解 .NET Reactor Protector

如何破解在 Xamarin 中创建的星辉平台代理注册应用程序

最近,我接触到了一个在 Xamarin 中创建的有趣的星辉平台代理注册移动应用程序,但遗憾的是,它并没有按照我想要的方式工作。我想,一个很好的理由来破坏这个应用程序。

这篇文章是为了教育目的而写的。我们并不是在呼吁对程序进行黑客攻击,但我们正试图向开发人员展示并引起他们对易受攻击的应用程序的关注。

对于这种情况,最新版本的GDA是完美的

因此,我们打开应用程序的 APK 文件,发现它看起来很奇怪。所有活动都有大致相同的模板代码:

这表明我们遇到了某种非 Kosher APK。也许这是一个框架......让我们尝试将 .apk 扩展名更改为 .zip,然后一个神秘的程序集文件夹立即引起了我们的注意,其中包含许多 DLL 库。神秘的是,在普通的移动应用程序中并没有这样的文件夹。

由于许多库的名称中都有Xamarin一词,因此很明显主应用程序代码是用星辉平台代理注册编写并驻留在 DLL 中,而代码的模板部分是用 Java 编写的,旨在在 Mono 运行时之间进行通信和 Android 运行时虚拟机 (ART)。

工具选择

在我看来,要使用 .Net,以下工具最适合。

开发者 JetBrains 的dotPeek该实用程序可以反编译和分析 .exe 和 .dll 文件。该实用程序具有最方便的反编译代码导航,所以如果我们只讨论算法分析,这个工具是最方便的。

dotPeek 主窗口
dotPeek 主窗口

dnSpy - 可以反编译、编辑、编译和调试 .Net 程序集。值得注意的是,除反编译外,所有功能并不总是有效,这完全取决于具体情况。就我个人而言,编译不想工作:dnSpy 无法链接 Mono 和 Android 命名空间。

在 C# 中破解应用程序。 dnSpy 主窗口
dnSpy 主窗口

Simple-assembly-explorer是一个相当古老但仍然相关的工具。该实用程序可以将 .exe 和 .dll 反编译为星辉平台代理注册或 CIL 代码。最重要的特点是该工具可以编译 CIL 代码,这使得对分析的文件进行更改变得容易。

C# 中的黑客应用程序。 简单装配资源管理器的主窗口
简单装配资源管理器的主窗口

为了解压和构建 APK 文件,我将使用 7z 存档器而不是用于此类情况的apktool接下来我会解释原因。

解压APK

一开始,我尝试使用流行的 apktool 软件解压 APK,但是在构建时,由于 apktool “不知道” .dll 是什么,并且不认为它是 APK 文件的标准,因此出现了一个障碍. 只有名称来自以下数组的文件才被视为标准文件:

构建 APK 文件时,所有未知文件都被压缩(压缩类型 DEFLATED),Xamarin 框架希望看到其 DLL 未压缩(存储),因此无法读取它们。

一开始,我想修复和重建apktool,但后来我决定做一些不同的事情:用一个简单的归档器解压和编译文件,不使用压缩功能。毕竟,在这种特殊情况下,我不需要解码清单或获取 smali 代码,但为什么还要在屁股上寻找冒险呢?

所以让我们开始拆包:

解压后,除了常见的APK文件外,我们看到 了包含dll文件的程序集文件夹。在所有这些文件中,我们只对一个库感兴趣,它的名称与我们的应用程序的名称相匹配。我们将打开它并检查它。

.Net 修补

分析 DLL 并找到进行更改的地方超出了今天文章的范围,因为即使在一本书中,关于这个主题的想法也会很拥挤。我将只关注技术点。正如我上面写的,dnSpy 拒绝编译更正后的库,所以我不得不求助于Simple-assembly-explorer (SAE)

假设我们希望这个函数总是返回 true:

由于只能对 IL 代码进行编辑,因此在SAE窗口中我们切换到Details选项卡,我们在其中看到下图:

有两种方法。

  1. 从根本上彻底解决这个问题,学习 CIL 语言并自己编写必要的代码。
  2. 用星辉平台代理注册编写所需的函数并编译为 CIL,从而自动获得所需的代码。

我选择了第二个选项——它更快。此外,通过谷歌搜索,您可以找到一个非常有用的站点sharplab.io,将代码从星辉平台代理注册转换为 CIL 非常方便。

因此,在左侧选项卡中输入以下内容:

在右边,在多余的堆中,我们得到:

我们使用 Simple 程序集浏览器将生成的代码插入到库中,同时不要忘记保存修改后的 DLL。如果我们没有搞砸任何事情并且没有在任何地方犯错,那么是时候收集一个新的 APK 了。

重新构建 APK

对于组装,正如我上面写的,我们将在未压缩模式下使用 7z。这样得到的APK会比原来的大,但大小不是主要的:

一点解释:

  • - tzip - 存档格式,
  • - mx0 - 无压缩,
  • - r0 - 递归遍历所有子目录

是的,最好 在构建之前删除包含旧签名的META - INF 目录。这不是必需的,因为我们必须自己签署 APK。然后您需要创建一个签名证书并将其放入存储中。

如果您已经有证书,则可以跳过此步骤。我们使用JDK中的keytool实用程序创建证书

她会问标准问题:

好吧,在那之后,您可以继续签名:

结果,将创建一个几乎可以安装的文件。

“几乎” - 因为在使用它之前,它应该与 build-tools Android SDK 中的zipalign程序对齐此过程可确保存档中的所有未压缩文件都与文件的开头对齐。

这允许您直接访问文件而无需将数据复制到 RAM,这将减少应用程序的内存使用量。

所以让我们升级:

之后,您可以安全地在手机或模拟器上安装该程序并开始测试。

结论

如您所见,Xamarin 程序集中的星辉平台代理注册应用程序并不比原生 Android 操作系统应用程序更难解析,您只需要在构建 APK 时考虑一些细微之处。