apk解密 unity3d
2014-06-06 11:45:33 linuxheik 阅读数 1281
http://www.cnblogs.com/hisiqi/p/3316906.html
2015-03-16 17:29:50 huang9012 阅读数 1670
本帖最后由 ζއ随风去旅行 于 2014-8-22 13:05 编辑

现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。

好了 话不多说直接上代码:

本帖隐藏的内容

[C#] 纯文本查看 复制代码
using System.Collections;
using System.Text;
using System.Security.Cryptography;
using System;

public class ADDJIEMI : MonoBehaviour
{
public UIInput _input;
//获取输入框的值
private string inputText;
//被加密内容
private string strEncryption;
private string strkeyValue;
void Start()
{
//加密和解密采用相同的key,可以任意数字,但是必须为32位
strkeyValue = "12345678901234567890198915689039";
}
public void encryptionClick()
{
inputText = _input.value;
strEncryption=encryptionContent(inputText, strkeyValue);
Debug.Log(strEncryption);
}
public void decipherClick()
{
inputText = decipheringContent(strEncryption, strkeyValue);
Debug.Log(inputText);
}
/// <summary>
/// 内容加密
/// </summary>
/// <param name="ContentInfo">要加密内容</param>
/// <param name="strkey">key值</param>
/// <returns></returns>
public string encryptionContent(string ContentInfo,string strkey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
RijndaelManaged encryption = new RijndaelManaged();
encryption.Key = keyArray;
encryption.Mode = CipherMode.ECB;
encryption.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = encryption.CreateEncryptor();
byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

/// <summary>
/// 内容解密
/// </summary>
/// <param name="encryptionContent">被加密内容</param>
/// <param name="strkey">key值</param>
/// <returns></returns>
public string decipheringContent(string encryptionContent,string strkey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
RijndaelManaged decipher = new RijndaelManaged();
decipher.Key = keyArray;
decipher.Mode = CipherMode.ECB;
decipher.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = decipher.CreateDecryptor();
byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
}




使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。

注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件  在此就不详述了

里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果
 

通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。

再看点击解密后的结果
 

2[}73SNWBXHWI%O$B4~})WH.jpg(50.84 KB, 下载次数: 6)

下载附件  保存到相册

2014-8-22 10:56 上传



这样就把刚才生成的乱码,通过解密方法,还原了哟。


其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦

是不是既方便又安全啊 ,是的话就点个”“呗!

还有 服务器与客户端数据交互的时候 也可以使用哟 至少我是这样用的 哈哈哈

好啦 ,上面就是我对数据保护的方法,如果大家还有更好的方式,求赐教


2015-05-25 17:14:25 yaokang522 阅读数 516

现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。

好了 话不多说直接上代码:

本帖隐藏的内容

[C#] 纯文本查看 复制代码
<span style="font-family:黑体;word-wrap:break-word"></span>using System.Collections;<br style="word-wrap:break-word" />
using System.Text;<br style="word-wrap:break-word" />
using System.Security.Cryptography;<br style="word-wrap:break-word" />
using System;<br style="word-wrap:break-word" /><span style="font-family:黑体;word-wrap:break-word"><br style="word-wrap:break-word" />
public class ADDJIEMI : MonoBehaviour </span><span style="font-family:黑体;word-wrap:break-word">{<br style="word-wrap:break-word" />
public UIInput _input;<br style="word-wrap:break-word" />
//获取输入框的值<br style="word-wrap:break-word" />
private string inputText;<br style="word-wrap:break-word" />
//被加密内容<br style="word-wrap:break-word" />
private string strEncryption;<br style="word-wrap:break-word" />
private string strkeyValue;<br style="word-wrap:break-word" />
void Start()<br style="word-wrap:break-word" />
{<br style="word-wrap:break-word" />
//加密和解密采用相同的key,可以任意数字,但是必须为32位<br style="word-wrap:break-word" />
strkeyValue = "12345678901234567890198915689039";<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
public void encryptionClick()<br style="word-wrap:break-word" />
{<br style="word-wrap:break-word" />
inputText = _input.value;<br style="word-wrap:break-word" />
strEncryption=encryptionContent(inputText, strkeyValue);<br style="word-wrap:break-word" />
Debug.Log(strEncryption);<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
public void decipherClick()<br style="word-wrap:break-word" />
{<br style="word-wrap:break-word" />
inputText = decipheringContent(strEncryption, strkeyValue);<br style="word-wrap:break-word" />
Debug.Log(inputText);<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
/// <summary><br style="word-wrap:break-word" />
/// 内容加密<br style="word-wrap:break-word" />
/// </summary><br style="word-wrap:break-word" />
/// <param name="ContentInfo">要加密内容</param><br style="word-wrap:break-word" />
/// <param name="strkey">key值</param><br style="word-wrap:break-word" />
/// <returns></returns><br style="word-wrap:break-word" />
public string encryptionContent(string ContentInfo,string strkey)<br style="word-wrap:break-word" />
{<br style="word-wrap:break-word" />
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);<br style="word-wrap:break-word" />
RijndaelManaged encryption = new RijndaelManaged();<br style="word-wrap:break-word" />
encryption.Key = keyArray;<br style="word-wrap:break-word" />
encryption.Mode = CipherMode.ECB;<br style="word-wrap:break-word" />
encryption.Padding = PaddingMode.PKCS7;<br style="word-wrap:break-word" />
ICryptoTransform cTransform = encryption.CreateEncryptor();<br style="word-wrap:break-word" />
byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);<br style="word-wrap:break-word" />
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);<br style="word-wrap:break-word" />
return Convert.ToBase64String(resultArray, 0, resultArray.Length);<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
<br style="word-wrap:break-word" />
/// <summary><br style="word-wrap:break-word" />
/// 内容解密<br style="word-wrap:break-word" />
/// </summary><br style="word-wrap:break-word" />
/// <param name="encryptionContent">被加密内容</param><br style="word-wrap:break-word" />
/// <param name="strkey">key值</param><br style="word-wrap:break-word" />
/// <returns></returns><br style="word-wrap:break-word" />
public string decipheringContent(string encryptionContent,string strkey)<br style="word-wrap:break-word" />
{<br style="word-wrap:break-word" />
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);<br style="word-wrap:break-word" />
RijndaelManaged decipher = new RijndaelManaged();<br style="word-wrap:break-word" />
decipher.Key = keyArray;<br style="word-wrap:break-word" />
decipher.Mode = CipherMode.ECB;<br style="word-wrap:break-word" />
decipher.Padding = PaddingMode.PKCS7;<br style="word-wrap:break-word" />
ICryptoTransform cTransform = decipher.CreateDecryptor();<br style="word-wrap:break-word" />
byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);<br style="word-wrap:break-word" />
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);<br style="word-wrap:break-word" />
return UTF8Encoding.UTF8.GetString(resultArray);<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
}<br style="word-wrap:break-word" />
</span>




使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。

注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件  在此就不详述了

里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果
 

通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。

再看点击解密后的结果
 

2[}73SNWBXHWI%O$B4~})WH.jpg(50.84 KB, 下载次数: 6)

下载附件  保存到相册

2014-8-22 10:56 上传



这样就把刚才生成的乱码,通过解密方法,还原了哟。


其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦

是不是既方便又安全啊 ,是的话就点个”“呗!

还有 服务器与客户端数据交互的时候 也可以使用哟 至少我是这样用的 哈哈哈

好啦 ,上面就是我对数据保护的方法,如果大家还有更好的方式,求赐教
2015-11-25 17:53:23 u014771617 阅读数 977
2017-12-05 09:05:00 heshaai6843 阅读数 123

http://www.manew.com/thread-21682-1-1.html

http://www.manew.com/thread-21682-1-1.html

现如今 手游是个很火的时代,对于做游戏的来说,这是个很好的发展趋势,
可是现在我们程序不单仅仅完成游戏功能就可以了,还要学会保护好自己的游戏数据内容。
如何去保护?
相信每一位程序都有自己独特的见解。
因此,我在此分享下自己对数据加/解密的处理方式。

好了 话不多说直接上代码:

[/font]using System.Collections;
using System.Text;
using System.Security.Cryptography;
using System;
[font=黑体]//
//                  _ooOoo_
//                 o8888888o
//                 88" . "88
//                 (| -_- |)
//                 O\  =  /O
//              ____/`---'\____
//            .'  \\|     |//  `.
//          /  \\|||  :  |||//  \
//          /  _||||| -:- |||||-  \
//          |   | \\\  -  /// |   |
//          | \_|  ''\---/''  |   |
//          \  .-\__  `-`  ___/-. /
//        ___`. .'  /--.--\  `. . __
//     ."" '<  `.___\_<|>_/___.'  >'"".
//    | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//    \  \ `-.   \_ __\ /__ _/   .-` /  /
//=====`-.____`-.___\_____/___.-`____.-'======
//                  `=---='
//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//          佛祖保佑       永无Bug
//          快加工资       不改需求
//
public class ADDJIEMI : MonoBehaviour [/font][font=黑体]{
public UIInput _input;
//获取输入框的值
private string inputText;
//被加密内容
private string strEncryption;
private string strkeyValue;
void Start()
{
//加密和解密采用相同的key,可以任意数字,但是必须为32位
strkeyValue = "12345678901234567890198915689039";
}
public void encryptionClick()
{
inputText = _input.value;
strEncryption=encryptionContent(inputText, strkeyValue);
Debug.Log(strEncryption);
}
public void decipherClick()
{
inputText = decipheringContent(strEncryption, strkeyValue);
Debug.Log(inputText);
}
/// <summary>
/// 内容加密
/// </summary>
/// <param name="ContentInfo">要加密内容</param>
/// <param name="strkey">key值</param>
/// <returns></returns>
public string encryptionContent(string ContentInfo,string strkey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
RijndaelManaged encryption = new RijndaelManaged();
encryption.Key = keyArray;
encryption.Mode = CipherMode.ECB;
encryption.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = encryption.CreateEncryptor();
byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(ContentInfo);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
 
/// <summary>
/// 内容解密
/// </summary>
/// <param name="encryptionContent">被加密内容</param>
/// <param name="strkey">key值</param>
/// <returns></returns>
public string decipheringContent(string encryptionContent,string strkey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strkey);
RijndaelManaged decipher = new RijndaelManaged();
decipher.Key = keyArray;
decipher.Mode = CipherMode.ECB;
decipher.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = decipher.CreateDecryptor();
byte[] _EncryptArray = Convert.FromBase64String(encryptionContent);
byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
}

使用:
ngui创建一个input(输入框) 加2个button(按钮),
直接把代码拖到输入框对象上,
然后分别拖input对象给2个按钮绑定事件就可以了。

注:ngui其实不建议使用直接拖动绑定事件,
最好使用Event代码做事件,
由于我只是测试,所以就直接拖啦
以后有时间的话 我会发一篇如何使用ngui的event代码做事件  在此就不详述了

里面代码非常简洁,同时也有注释 相信大家都能看懂吧!
直接运行看效果,
点击加密后的结果

 
通过调用上面加密方法,就把我们的数据内容加密成乱码了哟。

再看点击解密后的结果
 

这样就把刚才生成的乱码,通过解密方法,还原了哟。


其实,上面方法不仅仅适用于简单字符串加/解密,仔细想想,对文本、xml等之类的文件内容 也是可行的哟!
比如:对xml加/解密
1.读取xml文件,获取返回一个string 的xml内容
2.然后通过我上面的方法 对该 内容进行一次包裹,这样在内存中就是一段乱码,别人想改都不可能的,嘿嘿
3.要使用的时候 ,就通过上面的解密方法 就可以任意操作啦

反编译unity3d发布apk

阅读数 2844

郑重声明:本教程仅用于学习使用,从事任何商业用途非法行为与作者无关,请知晓!本文目的:通过教会大家如何破解别人游戏的同时,也希望各位开发者能加强自身游戏的防破解能力!1:到gitHub下载DisUnityv0.3.3软件,下载地址: https://github.com/ata4/disunity/releases  简单教程:https://github.com/ata4

博文 来自: suifcd

Unity3D之导出的Apk安装失败

阅读数 10121

最近用Unity3D导出Apk到手机上出现的问题,开始可以正常安装到手机上。然而在我将导出的Apk在电脑的模拟机运行了几次之后,再次将应用复杂到手机上安装却一直安装失败了。后来在PlayerSettings中改了一下设置,问题解决。解决方法:把PlayerSettings面板中OtherSettings下的Configuration下的InstallLoaction选

博文 来自: u014581901

unity3D打包成apk

阅读数 347

1.首先在电脑上安装好android-sdk-windows,jdk2.打开游戏项目Edit->Preferences->ExternalTools如下图所示设置参数3.ctr+B->选中Android ->PlayerSettings->OtherSettings->Identification->BundleIdentifier->修改

博文 来自: yhcxiaoxiong

反编译unity3d发布apk

阅读数 370

郑重声明:本教程仅用于学习使用,从事任何商业用途非法行为与作者无关,请知晓!本文目的:通过教会大家如何破解别人游戏的同时,也希望各位开发者能加强自身游戏的防破解能力!1:到gitHub下载DisUnityv0.3.3软件,下载地址: https://github.com/ata4/disunity/releases  简单教程:https://github.com/

博文 来自: oxuanboy1

反编译unity3d发布apk

阅读数 2728

郑重声明:本教程仅用于学习使用,从事任何商业用途非法行为与作者无关,请知晓!本文目的:通过教会大家如何破解别人游戏的同时,也希望各位开发者能加强自身游戏的防破解能力!1:到gitHub下载DisUnityv0.3.3软件,下载地址: https://github.com/ata4/disunity/releases  简单教程:https://github.com/ata4

博文 来自: pizi0475
没有更多推荐了,返回首页