Project1

标题: 大佬们,用Steam发行游戏的时候怎么验证exe程序 [打印本页]

作者: 我妻寒十    时间: 2020-7-18 12:33
标题: 大佬们,用Steam发行游戏的时候怎么验证exe程序
本帖最后由 我妻寒十 于 2020-7-18 12:43 编辑

如题,求助一下有没有大佬知道应该怎么做。可能这个很少有人知道吧……但还是不想放弃希望,想来问问。
大概就是用脚本验证exe文件的大小,否则别人换个exe就可以照样在脱离steam库的情况下运行游戏。
作者: guoxiaomi    时间: 2020-7-18 17:39
本帖最后由 guoxiaomi 于 2020-7-18 17:49 编辑

想起了:https://rpg.blue/thread-476906-1-1.html
如果脚本不被攻破你可以对Game.exe进行crc32计算:
  1. File.open("Game.exe", "rb") do |f|
  2.   contents = f.read
  3.   size = contents.size
  4.   check_sum = Zlib.crc32(contents)
  5. end
复制代码


作者: 我妻寒十    时间: 2020-7-20 10:36
顶帖……
作者: guoxiaomi    时间: 2020-7-21 03:54
本帖最后由 guoxiaomi 于 2020-7-21 04:06 编辑

来了,先说一下怎么验证exe程序。首先看这段代码:
  1. File.open("Game.exe", "rb") do |f|
  2.   contents = f.read
  3.   p size = contents.size
  4.   p check_sum = Zlib.crc32(contents)
  5. end
复制代码
加入到脚本里执行,可以得到size和check_sum,我这是RGDv1.5.4:

然后把代码改成:
  1. File.open("Game.exe", "rb") do |f|
  2.   contents = f.read
  3.   size = contents.size
  4.   check_sum = Zlib.crc32(contents)
  5.   if size != 482304 || check_sum != 1873674028
  6.     msgbox("NMSL")
  7.     exit()
  8.   end
  9. end
复制代码
如果size和check_sum不一样就弹窗然后直接退出游戏。这代码你也可以写到事件脚本里,给玩家一个惊喜。

然后说一下黄鸡的代码怎么用:https://rpg.blue/thread-476906-1-1.html
首先你把它的代码复制到你的脚本里,然后在后面补上一行:
  1. p Fux2::SteamTools.get_dll_checksum("steam_api.dll")
复制代码

记下这个输出的数据,比如是12800700。然后同样的做法,把刚刚那一行改成
  1. check_sum = Fux2::SteamTools.get_dll_checksum("steam_api.dll")
  2. if check_sum != 12800700
  3.   msgbox("NMSL")
  4.   exit()
  5. end
复制代码

当然你也可以伪装成找不到文件报错,或者打开一个开关自动执行公共事件,把玩家传送到监狱里……
  1. Bitmap.new("NMSL")
复制代码


作者: 我妻寒十    时间: 2020-7-23 10:20
guoxiaomi 发表于 2020-7-21 03:54
来了,先说一下怎么验证exe程序。首先看这段代码:
加入到脚本里执行,可以得到size和check_sum,我这是RGD ...

对不起大佬,我太笨了。
在第一步就已经卡住了……
我把第一段代码不管放到哪里都没能像你提供的截图那样,获得这两个数据
是我什么地方做错了吗?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1