zoukankan      html  css  js  c++  java
  • 单机 & 弱联网手游 防破解、金币改动 简单措施

    手游经常使用破解方法

    对于一个弱联网或者单机游戏,能够从下面方面去破解:

    1、找得到存档文件的,直接破解改动存档文件。

    2、找不到存档文件,就在游戏执行时借助一些软件来改动数值,比方用各种改动器手游助手来改动金币。

    3、找不到存档文件、数值还改动不了,就直接反编译,Java就看Java、C#就看IL、C++就看汇编。

    文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

    手游防破解对策

    好了。防破解我们也从以上方面来做 (或者还有其他的)。

    1、对于破解改动存档文件的。

    首先我们能够聪明一点。存档名字不要写成SaveData、Config、Cundang、等这样的非常傻瓜的名字。

    难道存档文件就不能命名为mp3、jpg吗?把存档文件扔到一堆jpg里面,这是简单有效的方法。

    然后就是加密。字节偏移 、上上下下左左右右交换都能够。仅仅要自己能认得出来。


    2、软件改动数值,是这次我要測试的。

    首先我们要明确市面上各种改动器的原理。随便哪一款改动器都是教你先找到一个数值,比方金币 5000,然后搜索这个数值,再去改变这个数值,再搜索改变后的数值。

    那么相应于这样的方式,我们要做的就是,让 显示的数据 和 我们实际用于计算的数据 并不一样。比方玩家攻击力是100。那么我从存在存档中的就写 101。然后计算伤害的时候用

    101 -1 =100 这样去计算,可是显示在屏幕上的还是 100 。这样玩家用改动器去搜索 100 这个数值。然后攻击力 +1 的时候显示101,可是事实上我们的变量中存储的是 102.自然就搜索不到了。


    以下我用Unity做的一个Demo,然后用烧饼改动器来測试改动数据,測试 不加密 和 加密  ( 指的就是上面的 100+1 ) 的 情况。

    文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

    首先Unity的project下载:

    http://pan.baidu.com/s/1hqD4yyg


    然后以下是用来測试的普通场景的代码:


    以下是用来測试 加密的代码:


    对照上面的两个代码。就会明确这次加密的原理。

    好了,以下是我用烧饼改动器測试的结果。


    不加密秒破解

    破解不加密游戏開始,攻击力初始为0


    点击 普通赋值 ,赋值 100


    用烧饼改动器搜索 100


    搜索到非常多值为  100 的内存地址


    返回游戏,点击 改动伤害值 button。数值 + 1 =101.

    再次搜索 101


    这次仅仅搜索到 2 个值为 101 的数据。我们把这两个数据都进行改动  为 7777 。


    提示改动成功,同一时候我们看到游戏中显示的数值变了,那么数据是否真的变了。

    回到游戏。再次点击 改动伤害值,显示 7778 。

    至此游戏已经被改动破解。


    加密后破解变难

    破解加密游戏開始。初始值为 0


    点击 加密赋值 ,给初始攻击  100


    然后在烧饼改动器中搜索 100

    搜索到非常多个


    返回游戏 ,点击 改动伤害值 后。伤害值显示为 101 。

    继续在烧饼改动器中搜索 101 。


    仅仅搜索到1个。



    我们改动成 66666。


    提示改动成功,可是我们看到,游戏中的数据并没有变化。

    返回游戏,点击 改动伤害值  ,发现一切正常。

    破解加密失败。

    文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

    为什么普通的能搜索到 2 个101,而加密的仅仅能搜索到 1个 101?

    由于加密的游戏,在那个时候,的确仅仅有一个数据是101,就是屏幕显示的。

    存储用于计算的数值,是 102 。改动器改动的仅仅是用于屏幕显示的一个数字,并且改动之后立即又被真实的数值替换了。所以并没有改动成功。


    3、对于反编译游戏代码的,我们能够对代码进行混淆加密。

    Unity反编译又一次打包的流程。看以下的日记。

    Unity3d 反编译破解游戏 简单演示样例 (使用ildasm反编译DLL改动然后又一次编译DLL)


    话说假设真有高人来破解你的游戏,无论怎么做,都会被破解掉的。

    我们能做的就是尽量增大破解难度。或者,做成网络游戏。


  • 相关阅读:
    const用法详解(转)
    [转]Scintilla开源库使用指南
    javascript 流程控制语句 if 语句
    knockout.js 练习一
    深入Node.js的模块机制
    js本地存储解决方案(localStorage与userData)
    linear-gradient 渐变 css3新属性
    制作响应式网站时,用来测试不同宽度下网页展示效果的方法
    zepto.js, django和webpy
    attachEvent 与 addEventListener 的用法、区别
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7085217.html
Copyright © 2011-2022 走看看