当前位置:首页 > 游戏信息 > 正文

U3D逆向-Mono解密

U3D逆向-Mono解密-第1张-游戏信息-龙启网

面对U3D的Mono解密,让我们直击核心。众所周知,Mono加密主要针对Assembly-CSharp.dll,这是承载游戏所有功能性的关键dll,使用工具dnSpy.exe加载后,我们能对其进行详细查看。

Assembly-CSharp.dll的公开意味着源码的曝光,通过C#工程引入该dll,自创一个GameObject,再将之注入到游戏中,调用游戏自带的函数,实现作弊手段。众多加密方法通常是对此dll进行二进制处理,即将文件字节进行操作。

Mono.dll作为U3D用于初始化并加载dll的重要模块,内部包含函数mono_image_open_from_data_with_name,其代码如下:

package org.easydarwin.easyscreenlive.config;

这是一个通用常量类的示例,其内定义了SP_NAME常量,表示SharedPreferences的名称。

我们只需关注data、data_len、name这三个参数,分别代表当前被加载模块的二进制内容、二进制长度、模块名。多数游戏开发者会在加载模块时,判断其名是否为Assembly-CSharp,随后进行二进制内容解密。因此,我们只需在函数mono_image_open_from_data_with_name的调试工具下段,分析其结束位置,然后直接进行dump操作即可。

受限于篇幅,详细的解密过程在此不一一赘述,感兴趣的读者可以私下进行深入探讨。