Unity Mono DLL的破解及保护
标签:DLL防破解、手游安全保护、Unity加密
时间:2020-05-26

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

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

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

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

      gaitubao_image001.png


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

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

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

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

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

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

gaitubao_image005.png函数加密后dnspy函数解析报错


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

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

       image007.png

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

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

gaitubao_image009.png

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


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

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

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