查看: 5492|回复: 11

[通用发布] 防修改器策略之一

[复制链接]
梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

发表于 2014-1-23 00:31:24 来自手机 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 end55rpg 于 2014-1-23 17:50 编辑

10行的代码实现两个功能 防变速
不过应该是防菜鸟的。
[pre lang="ruby" line="1"] Thread.new{ loop{tt=Time.now
t=Graphics.frame_rate/10;sleep t
exit unless (-0.5..0.5)===Time.now-t-tt}}[/pre]
由于失去焦点后取时间间隔变得异常大,而且
由于线程的sleep在RM失去焦点后仍然运作,所以和取Time一样,于是没采用sleep当time,而用信用机制,下面是正确率很高的代码:
[pre lang="ruby" line="1"]#防修改器变速   byEnd55rpg
module Graphics
  Update = method("update")
  @t=Time.now
  @crash=0
  @cnsd=0
  def self.update(*arg)
    if @cnsd == Graphics.frame_rate
      unless (1..1.1)===(Time.now-@t)
        @crash += 100 if Time.now-@t < 10
      end
      if @crash > 200
        exit
      end
      @t=Time.now
      @cnsd=0
    else
      @crash-=2 if @crash >= 2
      @cnsd+=1
    end
    Update.call(*arg)
  end
end[/pre]

测试后,基本可以使用,在几秒内会结束使用变速的游戏
求讨论可行性与实际性


防止修改内存代码较复杂。。。。待讨论

评分

参与人数 1星屑 +30 收起 理由
lsu666666 + 30 塞糖

查看全部评分

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
发表于 2014-1-23 22:40:07 | 显示全部楼层
防修改内存,只要显示的值和实际值不同就可以了
比如画面显示值是HP100,HP实际值50,到-50时才判定死亡
最近在研究XAS
回复

使用道具 举报

梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

 楼主| 发表于 2014-1-24 15:25:20 来自手机 | 显示全部楼层
赛露休斯 发表于 2014-1-23 22:40
防修改内存,只要显示的值和实际值不同就可以了
比如画面显示值是HP100,HP实际值50,到-50时才判定死亡 ...

但是你这种做法是修改来让数据找不到
而修改器也是从为了找到方面进化的
比如模糊查询就能破解你这种办法
所以防止力度不太强
应
我觉得该从检测被修改方面设防
而且你那个也不好写通用代码,无法弄成直接可用的脚本,要对指定数据处理
所以我说写出来很麻烦
回复

使用道具 举报

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
发表于 2014-1-24 19:54:29 | 显示全部楼层
end55rpg 发表于 2014-1-24 15:25
但是你这种做法是修改来让数据找不到
而修改器也是从为了找到方面进化的
比如模糊查询就能破解你这种办法 ...

感觉从根本上设防很难,还是要从那些被经常改的值入手
可以做修改检查,比如定义一个专门负责监视金钱数的变量,他的值始终保持和金钱的关联(比如始终是 金钱*3+4),在每一笔增减金钱时他也跟着计算,如果有人内存修改了金钱,显然没有经过增减金钱的方法而直接内存修改,变量就能检查到不同了

点评

所以比较好的办法是这两个量一减一增,然后逻辑判断相加为常数,模糊找就找不到2个了,除非丧心病狂模糊搜寻两种  发表于 2014-1-25 11:12
那工程量不是很大,什么1号角色HPMP啊 5号角色EXP啊, 而且如果一直模糊搜到两个结果的话玩家会不会直接把两个都锁了- -。  发表于 2014-1-24 22:56

评分

参与人数 1星屑 +90 收起 理由
end55rpg + 90 我很赞同

查看全部评分

最近在研究XAS
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2014-1-24 20:32:08 | 显示全部楼层
本帖最后由 Sion 于 2014-1-24 20:34 编辑

修改器这种玩家自己用来降低游戏性的东西,直接无视就行。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-3-3
回帖
56
发表于 2014-1-24 22:53:49 | 显示全部楼层
Sion 发表于 2014-1-24 20:32
修改器这种玩家自己用来降低游戏性的东西,直接无视就行。

不过我觉得这种技术还是值得我们研究的{:2_273:}
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-1-25 00:12:49 | 显示全部楼层
直接把能力废除是最好的选择= =
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
回帖
67
发表于 2014-1-25 23:29:04 | 显示全部楼层
只要把默认的(*2+1)改成[(*6+7)/8]不就妥了。。。
回复

使用道具 举报

梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

 楼主| 发表于 2014-1-26 10:50:48 来自手机 | 显示全部楼层
a386881 发表于 2014-1-25 23:29
只要把默认的(*2+1)改成[(*6+7)/8]不就妥了。。。

貌似可以用模糊查出来,然后再搜一个,搜出来的两个数和实际现实的两个解一次方程组就可以找出加密匙吧

点评

记得。。。好像查看game还是哪就直接找到了这个密匙  发表于 2014-1-27 09:36
回复

使用道具 举报

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
回帖
67
发表于 2014-1-26 12:48:25 | 显示全部楼层
end55rpg 发表于 2014-1-26 10:50
貌似可以用模糊查出来,然后再搜一个,搜出来的两个数和实际现实的两个解一次方程组就可以找出加密匙吧 ...

……好麻烦啊……要是真的用实时检测被修改的话,占用的内存可能会相当可怕。
说真的,比起研究防作弊,研究一下防破解对游戏更重要。貌似没有几个RPG游戏是有防作弊的,依然卖的很好。
即使你防止了作弊,但是人家拆了你的包,照样作弊 :( 所以防破解才是最重要的。
比较好的防破解方法是在加密你的游戏之前往Graphics文件夹里扔几个强力点的病毒(喂!太坏了!)
还是一打开文件夹自动运行的那种。
另,要是防内存修改的话比较麻烦,但是防止存档修改还是好办的。
按下存档的时候,用脚本把金钱经某种加密运算后存进某个变量,把每个变量经某种加密运算后存在另一个空变量里(就是弄个两三份加密副本)。物品也弄。
读取存档的时候逐个对金钱、变量、物品加密变量运算,与物品、金钱、变量进行比对,若不符合,则删除所有存档,跳错弹出,同时用生成TXT语句在目录下生成.bat的病毒,并运行之。
……我是不是太坏了……

评分

参与人数 1星屑 +45 收起 理由
end55rpg + 45 你太坏了

查看全部评分

不行了我得去找只猫吸一吸,你们先聊着别等我了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部