我正在制作一款类似于“垄断”游戏的基本游戏。你必须掷骰子并移动掷骰子的位数(1-6)。
代码示例如下:
public function RollDice() : int
{
return randRange(1, 6);
}
private function randRange(param1:int, param2:int) : int
{
return Math.floor(Math.random() * (param2 - param1 + 1)) + param1;
}
但是我担心这段代码是否足够安全以防止一些可能的操作(例如使用Cheat Engine更改滚动的数字)。我实际上试图“破解”我的游戏,但只是成功地改变了randRange功能的数量,所以我可以制作骰子,比如说特定数量或更短的数字。但我只能在玩之前这样做(在我的游戏中按下开始按钮)。当我试图再次改变这些值时,没有任何改变(好吧,我不是一个黑客......)。
我做了一点研究,发现Actionscript虚拟机的JIT编译器可能是我失败的罪魁祸首,因为它将我的游戏(SWF)编译成在CPU上运行的机器代码。据我所知,JIT编译器在第一次运行之前不编译函数,但是一旦编译完成,该函数的SWF字节码就再也无法访问了。
现在的问题是:有没有办法在使用诸如Cheat Engine之类的程序调用函数后更改滚动骰子的数量?
答案 0 :(得分:0)
现在的问题是:有没有办法在使用诸如Cheat Engine之类的程序调用函数后更改滚动骰子的数量?
是。 通常:如果它是客户端,您可以访问它,从而操纵它。
如果你真的担心人们作弊,你所能做的就是尽量让他们变得更难,但总是有可能作弊。
如果你真的想避免它,那就把它当作服务器端。