解密无非就为了 修改游戏功能数据、提取游戏资源、加入自己想加的广告...
加密就是保护游戏不被恶意修改,我经常看到有人说:”加什么密,你以为自己写的代码很NB?见不得人?“。
我只想说,加密并不是不想让别人看到我的游戏逻辑代码,而是不想别人去恶意的修改自己做的游戏罢了...

先说下关于Unity C#代码部分的加密(Android和IOS有时间再细说),很多人说混淆,虽然有几个混淆插件CodeGuard、CryptoObfuscator、de4dot...可以用用,但有混淆就有反混淆(de4dot基本都可以搞定),有加壳就有脱壳,有加密就有解密...加密只是提高了门槛提高了难度,而解密只是时间的长短而已。
Unity下对C#保护措施并不是很多,加壳就别想了,混淆也有限制,混了和没混一样。

除了混淆,我们也可以尝试其他的保护措施,比如下面的方式:
Unity是基于Mono的,地球人都知道...它是开源的 代码下载:[url=]https://github.com/Unity-Technologies/mono[/url]
直接下Zip包(注意Tag版本与开发用的Unity版本要相同)

编译自己的Unity项目,找到 /Data/Managed/Assembly-CSharp.dll ,对它进行加密,可以自己写个小程序,把Assembly-CSharp.dll转换成字节流byte[],然后对byte[]加密。
下面是一些常用的加密(效验)算法:
* 散列:MD5、SHA、SHA3、RIPEMD、Tiger、Whirlpool、CRC32、Adler32
* 对称:Base64、DES、3DES、AES、RC、Rijndael、TripleDES、PBE、3-way、IDEA、MARS、Serpent、SAFER、Blowfish、Twofish、Tea、Skipjack、Camellia、Cast、Gost
* 非对称:RSA、Elgamal、Diffie-Hellman、Rabin、ECDsa、Ecc

若对以上算法不了解的可以参看下面两个开源加密类库(谷歌度娘也可以的)
Bouncy Castle(C#和Java版) 代码下载:[url=]https://github.com/bcgit/[/url]   官网地址:[url=]http://www.bouncycastle.org[/url] 
Crypto++(C++版) 代码下载:[url=]http://sourceforge.net/projects/cryptopp/files/cryptopp/[/url]   官网地址:[url=]http://www.cryptopp.com/[/url]

有人说.net自带了安全类库,确实是在System.Security.Cryptography下有一些常用的算法,虽然没有上面的类库全,但足以平常使用。
其C#源码也在Mono开源项目中 位置在 /mcs/class/corlib/System.Security.Cryptography/ 若不想了解加密算法可乎略,直接引用里面的方法即可。
如果有闲心的话可以写一个属于自己的加密算法...

此处滤过Hook或是反汇编调试Mono加载Assembly-CSharp.dll的部分...
接着找到 /mono/metadata/image.c 查看下面两个方法

  1. MonoImage *
  2. mono_image_open_from_data_full (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly)
  3. {
  4. return mono_image_open_from_data_with_name (data, data_len, need_copy, status, refonly, NULL);
  5. }
  6. MonoImage *
  7. mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)
  8. {
  9. MonoCLIImageInfo *iinfo;
  10. MonoImage *image;
  11. char *datac;
  12. if (!data || !data_len) {
  13. if (status)
  14. *status = MONO_IMAGE_IMAGE_INVALID;
  15. return NULL;
  16. }
  17. datac = data;
  18. if (need_copy) {
  19. datac = g_try_malloc (data_len);
  20. if (!datac) {
  21. if (status)
  22. *status = MONO_IMAGE_ERROR_ERRNO;
  23. return NULL;
  24. }
  25. memcpy (datac, data, data_len);
  26. }
  27. image = g_new0 (MonoImage, 1);
  28. image->raw_data = datac;
  29. image->raw_data_len = data_len;
  30. image->raw_data_allocated = need_copy;
  31. image->name = (name == NULL) ? g_strdup_printf ("data-%p", datac) : g_strdup(name);
  32. iinfo = g_new0 (MonoCLIImageInfo, 1);
  33. image->image_info = iinfo;
  34. image->ref_only = refonly;
  35. image->ref_count = 1;
  36. image = do_mono_image_load (image, status, TRUE, TRUE);
  37. if (image == NULL)
  38. return NULL;
  39. return register_image (image);
  40. }

复制代码

第一个方法mono_image_open_from_data_full内实际调用了mono_image_open_from_data_with_name
第二个方法mono_image_open_from_data_with_name的第一个参数char *data这个指针指向运行时Assembly-CSharp.dll的内存地址,
可在该方法内添加或调用对data解密的算法,然后将解密后的data再赋给datac
关于MonoImage这个结构体,它的定义是typedef struct _MonoImage MonoImage;  而_MonoImage这个结构体,它的定义在 /mono/metadata/metadata-internals.h 中
最后就是编译Mono了,编译部分我就不说了自行参看官方说明

该方法虽然是修改Mono内核,偏底层了些,但并不是破解不了,只是要比反混淆的难度高那么一丢丢...

转http://www.narkii.com/club/thread-330884-1.html

unity 修改Mono反破解加密Assembly-CSharp.dll相关推荐

  1. Unity防破解 —— 加密Dll与Key保护

    在阅读这篇文章之前,我在处理mono加密问题时,也是参考了雨凇的文章,所以建议先看一下雨凇写的关于加密Dll的文章: 1.Unity3D研究院之Android加密DLL与破解DLL .SO 2.Uni ...

  2. 【Unity】防反编译之windows平台加密dll

    功能取决于需求,在实现这功能之前,却有一个小小的插曲,有同学认为,并不需要去实现游戏加密,再怎样也会被破解,何必浪费精力.虽然这样说,但是我们所做的加密至少也会增加一点破解成本,不会让我们辛苦写的代码 ...

  3. 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)

    原文:利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还 ...

  4. Android开发笔记(七十三)代码混淆与反破解

    代码混淆 ProGuard是ADT自带的apk混淆器,它的用途有: 1.压缩apk包的大小,能删除无用的代码,并简化部分类名和方法名. 2.加大破解源码的难度,因为部分类名和方法名被重命名,使得程序逻 ...

  5. USB软件狗的设计及反破解技术

    1 软件狗技术 近年来,软件狗技术在保护软件开发者利益.防止软件盗版方面起了很大作用.软件狗技术属于硬加密技术,它具有加密强度大.可靠性高等特点,已广泛应用于计算机软件保护.软件狗技术的发展经历了多次 ...

  6. 破解加密PDF文件pdfcrack

    破解加密PDF文件pdfcrack PDF是常见的文档格式.它允许用户设置双重密码来保护文档.第一重是用户密码(user password),当打开PDF文档,输入该密码.第二重是所有者密码(ower ...

  7. 利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)

    源:利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开 //---------------------------------------------------------------- ...

  8. 爬取私募排排网历史净值和破解加密数值(上)

    你好,我是悦创.最近实习然后一对一学员上课备课,所以有点耽搁更新文章了.下一篇,会在公众号:AI悦创,发布.敬请关注! 然后,手里有个单子,但是奈何自己实习公司事情太多.所以就把我一对一学员的项目,介 ...

  9. C/C++ 通过CRC32实现反破解

    我们可以通过使用CRC32算法计算出程序的CRC字节,并将其写入到PE文件的空缺位置,这样当程序再次运行时,来检测这个标志,是否与计算出来的标志一致,来决定是否运行程序,一旦程序被打补丁,其crc32 ...

最新文章

  1. 跟阿里云技术专家阙寒一起深度了解视频直播CDN技术
  2. java统计大于0的个数_java中0的问题(依据0统计数量时出错)
  3. python九:元祖(tuple)
  4. wxWidgets的一些资源
  5. Ubuntu上安装TensorFlow(python2.7版)
  6. Kudu Tablet design
  7. linux ls 升序,ls 命令查看文件时候,按修改时间倒序或升序排列
  8. (三)html5的结构
  9. 熟悉linux运行环境,实验一 熟悉Ubuntu环境
  10. Codeforces 482 - Diverse Permutation 构造题
  11. java讲师助教简历模板,大学助教个人简历
  12. Linux阻止SSH暴力***
  13. 服务器信号有杂音怎么回事,麦克风有杂音或电流声等的解决方法
  14. Guitar Pro8.0吉他打谱作曲中文版有哪些新功能?
  15. C#中word文档转html
  16. 安装及配置 Mac 上的 Rime 输入法——鼠鬚管 (Squirrel)(也适用于小狼豪)
  17. 迈卡名车茂品牌LOGO全新升级
  18. C# 后台 背景图片拼接图片与文字,文字图片生成与背景图片合成
  19. 小程序开发特辑—小程序申请及开发环境搭建
  20. DevOps有“政治倾向性”

热门文章

  1. BZOJ 1001: 狼抓兔子
  2. 【BZOJ1001】狼抓兔子(网络流)
  3. 12平键标准尺寸规格表_普通平键标准编号-普通平键、键槽规格尺寸表
  4. 用Python获取英雄联盟皮肤原画?走过路过不要错过
  5. RGB-T 开源数据集资源汇总
  6. 腾讯云服务器搭建WordPress网站教程(全流程)
  7. linux nginx 日志查看,查看nginx日志_Linux系统怎么分析Nginx日志
  8. 案例一(图形类、矩形类、正方形类、圆形类)
  9. 修改注册表禁用edge浏览器保存密码功能
  10. [经验教程]积分如何兑换免费领取腾讯视频VIP会员3天或腾讯视频会员VIP1个月31天腾讯视频VIP会员免费领取兑换?