Actionscript 3 JIT会保护我的dicenumber变量不被操纵吗?
我正在制作一个类似于“垄断”的基本游戏。您必须掷骰子并移动骰子掷出的位置数(1-6) 代码示例如下所示:Actionscript 3 JIT会保护我的dicenumber变量不被操纵吗?,actionscript-3,flash,jit,avm2,Actionscript 3,Flash,Jit,Avm2,我正在制作一个类似于“垄断”的基本游戏。您必须掷骰子并移动骰子掷出的位置数(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; }
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;
}
但我担心这段代码是否足够安全,可以防止一些可能的操纵(例如使用作弊引擎更改滚动的数字)。实际上,我曾尝试“破解”我的游戏,但只成功地更改了randRange函数的数字,因此我可以掷骰子,比如说,一个特定的数字或一个较短的数字范围。但我只能在玩游戏之前这样做(在游戏中按开始按钮)。当我再次尝试更改这些值时,什么都没有改变(好吧,我不是什么黑客…)
我做了一些研究,发现Actionscript虚拟机的JIT编译器可能是我失败的罪魁祸首,因为它将我的游戏(SWF)编译成在CPU上运行的机器代码。据我所知,JIT编译器直到第一次运行时才编译函数,但一旦编译完成,该函数的SWF字节码就再也不会被访问
现在的问题是:在使用诸如作弊引擎之类的程序调用函数后,有没有办法更改掷骰子的数量
现在的问题是:在使用诸如作弊引擎之类的程序调用函数后,有没有办法更改掷骰子的数量
对。
作为一项规则:如果它是clientside,您可以访问它,从而操纵它
如果你真的担心人们作弊,你所能做的就是让他们更难,但作弊永远是可能的
如果你真的想避免它,那就把它放在服务器端 简而言之,不是。基本上,内存中的每个值都可以访问和操作。