我和我的朋友正在尝试从用 Unity3D 编写的 Android 游戏中解密 Assembly-CSharp.dll 文件。通常这些文件在使用 JustDecompile 时是可读的,但这个文件是加密的。
我们设法修改了 APK 使其可调试,并设法让这些东西运行,以便我们可以在 IDA Pro 中调试 APK。到目前为止运行良好,我们还可以设置断点和所有这些东西。
但是在 IDA Pro 中调试 APK 时,我们无法找到客户端解密 Assembly-CSharp.dll 文件的点,因为这似乎发生在 libmono.so 中。下面是加密 DLL 的示例:

在对从 APK 加载文件的方式进行了一些调整后,我们能够将 libmono.so 和 libunity.so 加载到 IDA 中,但我们无法调试这些文件。
每当我们要调试它们时,IDA 系统都会告诉我们这些文件不能自行运行。现在我们有 3 种可能的方法来达到我们想要的目标:
- 通过调试 classes.dex 文件找到 libmono.so 的正确条目
- 加载 libmono.so 或 libunity.so 以逐步跳转到对 Assembly-CSharp.dll 进行解密并提取 DLL 的点(不确定如何执行此操作 ^^)
- 找到一种方法将 libmono.so 加载到 IDA 并使用另一个工具对其进行调试(我在这里找到了一个名为 native-shim 的工具,这可能对我们有帮助)。
