Unity Mono DLL的破解及保护

Unity Mono DLL的破解及保护

来源:FairGuard 发布时间:2020-05-26 17:07:17 点击数:

      Mono dll脚本是Unity前期包含现在还有很多游戏在使用的脚本方式,这种脚本可以使用工具(如dnspy)完全逆向。破解者改包和竞品分析的难度非常低。

      很多有安全意识的游戏都会自己修改mono源码的mono_image_open_from_data_with_name函数,对DLL脚本进行加密。

    不过这种的加密方式缺点比较明显。会在加载前进行一次性解密,游戏运行过程中,内存中存在解密后完整的DLL。

      只要使用现成的工具就可以把DLL从内存里面扣出来。

      159073761443699110.png


        如上图,使用GG修改器,使用9460301数值即可把所有的DLL脚本内存基础搜索出来。

      目前很多手游加固厂商都还是使用这种加固方式。

      第二代DLL加固,对DLL里面的函数进行加密,这种加密方式的优点是,使用的方法才会进行解密,不像整体加密那样,会一下子把完整的DLL解密到内存中。

      一般游戏运行过程中不会用到所有方法,这样内存中就不会存在一个完整的DLL

      方法解密的效果是下图所示:

159073771968682873.png

原始未加密dnspy函数解析结果

159073775954573162.png

函数加密后dnspy函数解析报错


        第二代DLL加固存在的缺点是解析工具还是可以看到函数名及部分函数。于是出现了第三代DLL加固。

        第三代加固我们称为DLL结构虚拟化。对DLL的文件结构进行自定义重构,并对文件结构数据进行高强度加密。处理完后,所有的工具都无法再解析出任何数据,对于专业的破解分析人员,要解密出里面的结构数据难度也是非常大。

      159073782534876824.png

标题虚拟化后dnspy无法识别DLL

      DLL脚本使用的数据结构跟windows下面的可执行文件一样,都是PE结构,未DLL结构虚拟化时,使用010Editor可以解析出正常的PE结构。

159073786988967462 (1).png

虚拟化后的DLL结构010 Editor无法正常解析


        第三代DLL加密为FairGuard独家首创,为手机游戏安全防护提供业界顶类加密方案

        FairGuard是一家专注于游戏加固及反外挂的安全服务商,为手游安全保护提供一站式的解决方案。公司创始人专注于安全领域10多年,前网易易盾手游保护负责人,从0到1主导了易盾手游保护项目。

        有兴趣的可以加入FairGuard技术交流QQ群:1105310296


即刻获取  免费体验

即刻获取 免费体验

新注册游戏可享限时免费体验,包含安全加固、修改器闪退、变速器闪退等功能

免费体验
首 页
产 品
方 案
客 服